ОК, вы правы в отношении MinValue / MaxValue.
Я немного устала от NegaMax и AlphaBeta, но когда я вижу
if (eval >= beta)
{
return beta;
}
if (eval > alpha)
{
}
Вы тестируете >
для обоих пределов, это не так
Редактировать: Кажется, это просто проблема именования / понимания.Ваш AlphaBeta()
метод может быть назван более точно NegaMaxWithAlphaBeta()
.Из-за чередующихся ролей альфа и бета в NegaMax именование этих параметров не совсем совпадает с MiniMax.
Я вижу, что алгоритмы сталкиваются с бета-отключениями, но, по моему мнению, этого никогда не должно происходить
Да, это должно произойти.И это только бета-отсечение на равных уровнях.На нечетных уровнях if (eval >= beta)
проверяет альфа-отсечку.
, если я не использую суженное окно.
Я думаю, что вы используете сужающееся окно альфа / бета.
Но, возможно, этот ответ поможет вам лучше объяснить вашу проблему.