public double[][] ValueIteration()
	{
		int numIteration = 25;
		int iter = 0;
		double[][] allUtils = new double[this.game.States.length][this.game.States[0].length];
		
		while(iter < numIteration)
		{
			//Update the utility of each state according to Bellman Equation:
			for(int i = 0; i < this.game.States.length; i++)
			{
				for(int j = 0; j < this.game.States[0].length; j++)
				{
					State s = this.game.States[i][j];
					if(!s.IsWall && !s.IsTerminal)
					{
						this.SetNewUtilityWithBellman(this.game.States[i][j]);	
					}
				}	
			}
			iter++;
		}
		
		for(int i = 0; i < this.game.States.length; i++)
		{
			for(int j = 0; j < this.game.States[0].length; j++)
			{
				allUtils[i][j] = this.game.States[i][j].GetUtility();
			}
		}
		
		return allUtils;
	}