Преобразование минимакса с альфа-бета-обрезкой в Negamax

мы написалиминимакс алгоритм сальфа-бета-обрезка для игры в шашки, и теперь яя пытаюсь переписать его с помощьюnegamax подход. Я'Я ожидаю, что они будут эквивалентны, поскольку negamax - это просто метод написания минимакса. Но почему-то два моих алгоритма ведут себя по-разному. Когда я запускаю их оба на одном входе, версия negamax, кажется, оценивает больше состояний, поэтому я думаю, что что-то не так с обрезкой альфа-бета.

Код ниже показывает оба алгоритма (minimax а такжеnegamax функции), а внизуplay функция из которой я их называю.evaluate Функция - это базовая эвристика, которую я использую для оценки состояний в обоих алгоритмах.

Любая помощь с обнаружением ошибки будет очень ценной.

#include "player.hpp"
#include 
#include 
#include 

namespace checkers
{

int evaluatedStates = 0;

int evaluate(const GameState &state)
{
    // FIXME: Improve heuristics.
    int redScore = 0;
    int whiteScore = 0;
    int piece = 0;
    for (int i = 1; i 

Ответы на вопрос(1)

Ваш ответ на вопрос