Преобразование минимакса с альфа-бета-обрезкой в 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