MinMax Простая демонстрация для TicTacToe

Я выдернул свои волосы, пытаясь понять, как работает алгоритм MinMax, и, надеюсь, работают алгоритмы отсечения альфа-бета. Я запутался в том, что происходит с рекурсией.

  • Во-первых, оценивается ли каждая промежуточная доска? или только терминальные игровые доски.
  • Во-вторых, что именно возвращается? как программа узнает, где разместить следующий ход? Я вижу, что я должен вернуть счет на доске (в tictactoe, -1,0,1), но как программа узнает, какой ход следует сыграть следующим.

Я попытался найти простую программу на C или C ++, чтобы продемонстрировать это, но мне не повезло. Я пытаюсь выучить этот алогритм, я могу создать презентацию для остальной части моего класса компьютерного программирования.

Большое спасибо!
В

1

Решение

Только конечные позиции (после поиска покоя) оцениваются. Нетерминальные позиции сравнивают оценку, возвращаемую рекурсивным вызовом minimax (), с наилучшей оценкой, полученной на данный момент. В случае альфа-бета возвращенная оценка также сравнивается с альфа-значением.

Смысл минимакса — оценка. Похоже, ваша ошибка — думать, что минимаксная функция поиска должна возвращать лучший ход. Это может быть закодировано таким образом, но для вас может быть проще иметь цикл верхнего уровня в другой функции, которая выполняет перемещение, использует minimax () для получения результата и не выполняет движение. Следите за ходом с лучшим счетом и возвращайте этот ход, когда цикл завершится или время выбора хода истечет.

2

Другие решения

Других решений пока нет …