альфа/бета сокращение, с какой точки зрения следует проводить оценку?

Я пытаюсь разработать шахматную программу. Это будет обычный брутфорс-перебор дерева, отличие будет только в оценке. Сначала я буду использовать стандартный оценщик, разработанный Клодом Шенноном, чтобы было легче проверить, нормально ли он работает на базе. Генерация списка перемещений и вся остальная инфра работает нормально.

Теперь о поиске: я хотел бы использовать пример кода сокращения альфа/бета википедия. И вот в чем проблема: в одном он неоднозначен; с чьей точки зрения следует проводить оценку? Я гуглил несколько дней (буквально), но ни один пример не говорит об этом явно. Итак: должна ли оценка быть

  • с точки зрения "текущего движителя" на той глубине
  • с точки зрения "противника текущего хода" на этой глубине
  • с точки зрения движителя в корне дерева, т.е. человек, для которого выполняется этот поиск по дереву (ИИ-игрок)
  • с точки зрения оппонента движителя в корне дерева

?

Я экспериментально пробовал rootSide, side, rootOpponent, ну в общем все варианты и потом позволял им играть друг против друга. Результатом этого было то, что «текущий двигатель на этой глубине» будет использоваться (он выигрывал чаще всего), но тестирование этой версии на любом другом движке приводит к 100% -ным потерям.

Конечно, Википедия будет обновляться, чтобы быть более понятным! (пожалуйста, игнорируйте примечание сбоку в истории Википедии: это было от меня, что может быть неверным, поэтому я удалил его)


person Folkert van Heusden    schedule 29.08.2013    source источник


Ответы (1)


Оценка должна выполняться с точки зрения вызывающего ее узла. Это ваш первый случай, и он единственный, который действительно имеет смысл.

Если вы тестируете свой очень простой движок против других полных движков, то да, вы можете ожидать проигрыша в каждом матче. Вы упускаете множество техник, поэтому играть против других движков сейчас не лучший метод тестирования. Как только ваш движок станет сильнее, тогда да, вы можете использовать этот метод для повышения прочности или проведения регрессионного тестирования.

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

person Zong    schedule 31.08.2013