DoppioClic : Main / Onfly

// 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;
	}
(Printable View of http://www.swappa.it/lab/Main/Onfly)