public static void initialize(final int puzzleType, final int algorithmType,
			final int heuristicType, final int numOfThreads) {
		PuzzleConfiguration.numOfTiles = puzzleType == PUZZLE_15 ? 16 : 9;
		PuzzleConfiguration.algorithmType = algorithmType;
		PuzzleConfiguration.algorithm = algorithmType == ALGORITHM_ASTAR ? new AStar()
				: new IDAStar();
		PuzzleConfiguration.heuristicType = heuristicType;
		PuzzleConfiguration.numOfThreads = numOfThreads;
		PuzzleConfiguration.dimension = (int) Math.sqrt(numOfTiles);
		initializeGoalState(numOfTiles);
	}