Я работаю над простой проблемой tic-tac-toe, я и пытаюсь понять, как работает алгоритм Minimax.Как уменьшить обрезку Minimax/Alpha-Beta на более короткие пути?
Если я использую функцию утилиты 1 для X win, -1 для вывода O и 0 для игры, то я не понимаю, как алгоритм определяет приоритеты более коротких решений. Как я понимаю, он идет к самому глубокому узлу, и событие, если оно не кратчайший путь, но это приводит к возможной победе, тогда он его выберет.
Позвольте мне объяснить в этом примере. Вот состояние платы и X очереди (обозначения из https://www.hackerrank.com/challenges/tic-tac-toe):
OX_
_X_
__O
Если мы ищем из верхнего левого положения вправо вниз, то алгоритм найдет, что если положить X в положении (0, 2) потому что это ведет к неминуемой победе следующий ход:
OXX
_X_
__O
Однако умнее выбор будет (2, 1) и непосредственное положение выигрышная:
OX_
_X_
_XO
Я не вижу как Minimax o r Обрезка альфа-беты будет определять приоритетность такого поведения.
Так что мой вопрос в том, правильно ли я это понимаю и как я мог его улучшить.
Измените свою служебную функцию, чтобы учесть количество оборотов. – Bergi
Вместо 1 для победы X используйте N для X win, где N - количество пробелов, оставшихся на доске. Таким образом, выбор (2,1) имеет значение 4, тогда как выбор (0,2) имеет значение 2 (так как выигрыш будет происходить только с оставленными двумя пустыми пространствами). – user3386109