Я пытаюсь разработать шахматную программу. Это будет обычный брутфорс-перебор дерева, отличие будет только в оценке. Сначала я буду использовать стандартный оценщик, разработанный Клодом Шенноном, чтобы было легче проверить, нормально ли он работает на базе. Генерация списка перемещений и вся остальная инфра работает нормально.
Теперь о поиске: я хотел бы использовать пример кода сокращения альфа/бета википедия. И вот в чем проблема: в одном он неоднозначен; с чьей точки зрения следует проводить оценку? Я гуглил несколько дней (буквально), но ни один пример не говорит об этом явно. Итак: должна ли оценка быть
- с точки зрения "текущего движителя" на той глубине
- с точки зрения "противника текущего хода" на этой глубине
- с точки зрения движителя в корне дерева, т.е. человек, для которого выполняется этот поиск по дереву (ИИ-игрок)
- с точки зрения оппонента движителя в корне дерева
?
Я экспериментально пробовал rootSide, side, rootOpponent, ну в общем все варианты и потом позволял им играть друг против друга. Результатом этого было то, что «текущий двигатель на этой глубине» будет использоваться (он выигрывал чаще всего), но тестирование этой версии на любом другом движке приводит к 100% -ным потерям.
Конечно, Википедия будет обновляться, чтобы быть более понятным! (пожалуйста, игнорируйте примечание сбоку в истории Википедии: это было от меня, что может быть неверным, поэтому я удалил его)