public double maxValue(KrakenState state, String player, double alpha, double beta) {
		if (expandedNodes==maxNodesExpand || game.isTerminal(state)){
			if (heuristics==null)
				return heuristic.h(state);
			else
				return getHeuristicFusion(state);		
		}
		expandedNodes++;
		double value = Double.NEGATIVE_INFINITY;
		for (KrakenMove KrakenMove : game.getActions(state)) {
			value = Math.max(value, minValue( //
					game.getResult(state.clone(), KrakenMove).clone(), player, alpha, beta));
			if (value >= beta)
				return value;
			alpha = Math.max(alpha, value);
		}
		return value;
	}