Main.Onfly History

Hide minor edits - Show changes to output

January 14, 2010, at 11:33 AM by ido -
Added lines 1-40:
// policy 3 - passo come parametro un grafo
public static int[] pol3(int[] spins,Graph g, int i){
// inizializzo una variabile sommavicini globale e una locale
int sommaviciniGlob = 0;
int sommaviciniLoc = 0;
// leggo i NUMVICINI vicini del nodo sorteggiato consultando neighbors[][]
for(int w=0; w<g.nodeneighbors[i].length; w++){
sommaviciniLoc = 0;
// variabile a cui associare il valore del vicino w dello spin i
int j=g.nodeneighbors[i][w];
// sommo a sommavicini la somma dei vicini di j
for(int w2=0; w2<g.nodeneighbors[j].length; w2++){
int j2= g.nodeneighbors[j][w2];
if(j2 != i) sommaviciniLoc += spins[j2];
}

// in base al risultato parziale aggiorno il valore di neighbors[i][j]
if(sommaviciniLoc>0) spins[j]=1;
else if(sommaviciniLoc<0) spins[j]=-1;
else {
if ((Math.random())>0.5) spins[i]=-1;
else spins[i]=+1;
}

//sommo infine a sommavicini il valore aggiornato di j
sommaviciniGlob += spins[j] + sommaviciniLoc;
}

// se sommaviciniGlob è maggiore di 0, allora la maggior parte dei vicini di i è
// positiva, quindi forzo spins[i] a diventare "+1"
if(sommaviciniGlob>0) spins[i]=1;
// ...se è minore di 0 lo forzo a "-1"
else if(sommaviciniGlob<0) spins[i]=-1;
// ...e se è uguale a 0 faccio scegliere a caso tra i due valori
else {
if ((Math.random())>0.5) spins[i]=-1;
else spins[i]=+1;
}
return spins;
}