Я знаю, что об этом уже спрашивали, но я не смог понять этот вопрос.
У меня есть доска 7x7 для игры с подключением 4.
Я определил этот метод, чтобы реализовать сокращение Minimax Alpha Beta.
Это должно вернуть мне эвристику и задать лучший ход. Но я всегда делаю лучший ход, так как это последний доступный ход на моей доске...
Есть ли что-то здесь, что я мог пропустить?
Благодарю вас!
private int alphaBeta(Node node, int depth, int alpha, int beta, bool max)
{
if (depth == 0 || node.getBoard().noMorePlays())
{
return node.getBoard().heuristic(max ? 1 : 2);
}
if (max)
{
foreach (Node child in node.Children( (max ? 1 : 2)) )
{
alpha = Math.Max(alpha, alphaBeta(child, depth - 1, alpha, beta, !max));
this.bestNode = child;
if (beta <= alpha)
{
break;
}
}
return alpha;
}
else
{
foreach (Node child in node.Children((max ? 1 : 2)))
{
beta = Math.Min(beta, alphaBeta(child, depth - 1, alpha, beta, !max));
if (beta <= alpha)
{
break;
}
}
return beta;
}
}