Борьба с прокрастинацией в минимаксе

Я реализую минимакс для небольшой игры и замечаю то, что я называю «прокрастинацией». Сведен к очень простому примеру:

В игре с захватом флага флаг находится на одну клетку ВВЕРХ от игрока А, а игрок Б находится на расстоянии 50 клеток от него. Настала очередь А, и он может искать на 6 ходов вперед. Я вижу, что все возможные ходы имеют значение «Выигрыш», поскольку А знает, что может добраться до флага раньше, чем Б, даже если он не схватит его сразу. Поэтому, если ВВЕРХ является последним ходом в порядке, он будет просто ходить ВЛЕВО и ВПРАВО какое-то время, пока B не окажется на расстоянии удара, а затем он должен, наконец, получить флаг.

Сначала поведение выглядело как ошибка, но, преодолев его, я убедил себя, что каждый ход действительно является «Победой», но поведение не очень хорошее. Я мог бы повлиять на оценку, сделав флаг, захваченный через 4 хода, менее ценным, чем флаг, захваченный сейчас, но мне интересно, есть ли в минимаксном поиске аспект, который я упускаю? Существует ли какая-либо концепция, согласно которой более ранний высокий балл более желателен, чем такой же высокий балл, полученный только позже?


person LVB    schedule 28.05.2012    source источник
comment
Лол, ты сделал игру троллей...! :П   -  person Amadan    schedule 28.05.2012
comment
Именно то, что я думал. Не ожидал такого отношения от моего 15-строчного алгоритма.   -  person LVB    schedule 28.05.2012


Ответы (1)


В самом минимаксном поиске нет ничего такого, что сделало бы выигрыш более ранним. Поскольку все конечные позиции оцениваются одинаково, алгоритм фактически выбирает ход случайным образом. Сделайте так, чтобы ваша функция оценки немного уменьшала выигрышный счет для каждого уровня глубже в дереве, где она вызывается, и минимакс выберет победу раньше.

person Kyle Jones    schedule 30.05.2012