Відповіді:
tl; dr:
Жоден із цих алгоритмів не є практичним для сучасної роботи, але це хороші місця для початку педагогічної роботи.
Завжди слід віддавати перевагу використанню обрізки Alpha-Beta при голому пошуку мінімаксу.
Вам слід віддати перевагу використовувати якусь форму евристичного керованого пошуку, якщо ви можете придумати корисний евристичний. Придумати корисну евристику зазвичай вимагає багато знань домену.
Вам слід віддати перевагу використанню пошуку Монте-Карло-Дерева, коли вам не вистачає хорошої евристики, коли обчислювальні ресурси обмежені та коли помилки не матимуть великих наслідків у реальному світі.
Детальніше:
У пошуку мінімаксу ми не намагаємося бути дуже розумними. Ми просто використовуємо стандартний підхід до динамічного програмування. Зрозуміти значення різницьких рухів легко, якщо ми вже до кінця гри (оскільки гра закінчиться наступним кроком, нам не потрібно дивитись дуже далеко вперед). Так само, якщо ми знаємо, що буде робити наш опонент в останньому кроці гри, легко зрозуміти, що нам робити в другому останньому кроці. Ефективно ми можемо трактувати другий останній хід як останній хід коротшої гри. Потім ми можемо повторити цей процес. Використання цього підходу, безумовно, розкриє найкращі стратегії в стандартній грі в широкій формі, але вимагатиме від нас розглянути всі можливі кроки, що неможливо для всіх, крім найпростіших ігор.
Альфа-бета обрізка - це суворе вдосконалення пошуку Minimax. Користується тим, що деякі рухи явно гірші, ніж інші. Наприклад, у шахах мені не потрібно враховувати жодний хід, який би дав вам можливість поставити мене в штаб-квартиру, навіть якщо ви могли б робити інші речі з цієї посади. Як тільки я бачу, що такий крок може призвести до втрати, я не збираюся заважати думати, що ще може статися з цього моменту. Я піду подивитися на інші речі. Цей алгоритм також певний, щоб отримати правильний результат, і він швидший, але все ж повинен враховувати більшість кроків на практиці.
Є два загальних способи, як можна точно обходити надзвичайні обчислювальні витрати на вирішення таких ігор:
Використовуйте евристичний (A * пошук - це звичайний алгоритм для педагогічних цілей, але пошук Quiescence - аналогічна ідея у двох іграх). Це лише функція, яка дає оцінку значення стану гри. Замість того, щоб розглянути всі рухи в грі, ви можете просто розглянути кроки на деяку кінцеву відстань вперед, а потім використовувати значення евристики, щоб оцінити значення станів, до яких ви дійшли. Якщо ваша евристика послідовна (по суті: якщо вона завжди завищує якість штатів), то це все одно дасть правильну відповідь, але з величезними прискореннями на практиці.
Використовуйте рулони (наприклад, пошук дерев Монте-Карло). В основному, замість того, щоб розглядати кожен хід, запускайте кілька тисяч модельованих ігор між гравцями, що діють випадковим чином (це швидше, ніж врахувати всі можливі рухи). Призначте значення станам, рівним середньому коефіцієнту виграшу ігор, починаючи з нього. Це може не дати правильної відповіді, але в деяких видах ігор вона працює надійно. Його часто використовують як розширення більш точних прийомів, а не застосовують самостійно.
NB Причина, чому я вибрав лише ці три алгоритми, пояснювалась тим часом, який я мав для їх розуміння. З невеликого дослідження я виявив, що ці алгоритми в основному переплітаються в алгоритм minimax. Тож якщо я можу зрозуміти одне, то два інших просто стануть на місце.
Враховуючи цей контекст, я б рекомендував почати з Minimax . З трьох алгоритмів найпростіше зрозуміти Minimax.
Альфа-бета , як інші згадували в інших відповідях, - це суворе вдосконалення на вершині Minimax. Minimax в основному є частиною реалізації Alpha-Beta, і для хорошого розуміння Alpha-Beta все одно потрібно починати з хорошого розуміння Minimax. Якщо у вас залишається час після розуміння та впровадження Minimax, я рекомендую згодом перейти до Alpha-Beta і побудувати його на вершині Minimax. Починати з Alpha-Beta, якщо ви ще не розумієте Minimax, насправді не має сенсу.
Пошук дерев Монте-Карло , напевно, дещо вдосконалений і складніший, щоб насправді глибоко зрозуміти. Протягом останнього десятиліття MCTS справді зростає набагато популярніше, ніж інші два, тому з цього погляду розуміння MCTS може бути більш "корисним".
Зв'язок між Minimax та MCTS менш прямий / очевидний, ніж зв'язок між Minimax та Alpha-Beta, але все ще існує принаймні на концептуальному рівні. Я б стверджував, що добре розуміти Minimax спочатку все-таки корисно перед зануренням у MCTS ; зокрема, розуміння Minimax та його недоліків / слабких моментів може забезпечити корисний контекст / допомогти зрозуміти, чому MCTS стали "необхідними" / популярними.
На закінчення, на мій погляд:
Я повинен вибрати між обрізкою Minimax та Alpha-Beta, ви повинні вибрати Alpha-beta. Це більш ефективно та швидко, оскільки може обрізати значну частину дерева розвідки. Але вам потрібно впорядкувати дії від найкращого до гіршого залежно від точки зору max або min, так що алгоритм може швидко зрозуміти, чи потрібна розвідка.