Негамакс отрицание

Извините, если это глупый вопрос, но я в замешательстве. Negamax в самом начале проверяет, достигнуто ли конечное состояние или максимальная глубина. Затем вы вставляете функцию оценки, которая возвращает отрицательный или положительный балл за состояние (одно хорошо для одной стороны и плохо для другой и наоборот). То, что мне трудно осмыслить, это отрицание ниже. Означает ли это, что полученный результат умножается на -1? Чего это достичь? Я ценю, что "пузырьки" состояний листа чередуются между минимальным / максимальным баллами.

линия: -NegaMax(c, глубина +1, 1-цвет)

2 ответа

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

Пример: в каждом штате выберите максимум отрицаемых детей:пример

Я понятия не имею, почему вы увеличиваете глубину. Negamax максимизирует текущую позицию игроков. Когда вы выполняете поиск, вы должны позвонить -negamax(position,depth-1). Когда вы делаете ход, вы хотите изменить оценку eval на каждый ход. Например, если белый должен двигаться, то оценка должна быть обычной, а если черные должны двигаться, то оценка должна подсчитывать фигуры черных как положительные значения, поэтому if (turn == black) then eval = -eval. Вы делаете это, потому что алгоритм negamax максимизирует количество очков игроков.

Другие вопросы по тегам