public double minValue(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.POSITIVE_INFINITY;
		for (KrakenMove KrakenMove : game.getActions(state)) {
			value = Math.min(value, maxValue(
					game.getResult(state.clone(), KrakenMove).clone(), player, alpha, beta));
			if (value <= alpha)
				return value;
			beta = Math.min(beta, value);
		}
		return value;
	}