Мінімакс (англ. minimax, нім. minimax n) — правило прийняття рішень, що використовується в теорії ігор, теорії прийняття рішень, дослідженні операцій, статистиці і філософії для мінімізації можливих втрат з тих, які особа, яка приймає рішення не може уникнути при розвитку подій за найгіршим для неї сценарієм. Критерій мінімаксу спочатку був сформульований в теорії ігор для гри двох осіб з нульовою сумою для випадків послідовних і одночасних ходів, згодом отримав розвиток у складніших іграх і прийнятті рішень в умовах невизначеності. З поняттям мінімаксу пов'язане поняття максиміна (значення мінімаксу не менше значення відповідного максиміну).
Теорія ігор
У теорії ігор стратегія мінімаксу це змішана стратегія, яка є одним з розв'язків гри нульовою сумою. В іграх з нульовою сумою стратегія мінімаксу є рівновагою Неша.
Теорема мінімаксу
У 1945 році Оскар Морґенштерн і Джон фон Нейман запропонували метод мінімаксу, який знайшов широке застосування.
Теорема мінімаксу стверджує
Для кожної гри для двох осіб з нульовою сумою та скінченним числом стратегій, існує таке значення V та змішані стратегії для кожного гравця, такі, що (а) Для будь-якої стратегії Гравця 2, Гравець 1 може гарантувати собі виграш V, і (б) Для будь-якої стратегії Гравця 1, Гравець 2 може гарантувати собі виграш (-V).
Це рівнозначно тому, що стратегія Гравця 1 гарантує його виграш V, незалежно від стратегії гравця 2, а також що Гравець 2 теж може гарантувати собі виграш -V. Назва алгоритм мінімаксу виникла тому, що кожен гравець мінімізує максимально можливу винагороду для іншого гравця, так як гра з нульовою сумою, він також максимізує свою винагороду.
Приклад
Б обирає Б1 | Б обирає Б2 | Б обирає Б3 | |
---|---|---|---|
A обирає A1 | +3 | −2 | +2 |
A обирає A2 | −1 | 0 | +4 |
A обирає A3 | −4 | −3 | +1 |
Приклад гри з нульовою сумою, де А і Б роблять ходи, показує рішення мінімаксу. Припустимо, що у кожного гравця є три варіанти і розглянемо матрицю для А, яка відображена справа. Припустимо, що платіжна матриця для Б така ж матриця зі зворотним знаком (наприклад, якщо вибір A1 і Б1, то Б платить А 3). Тоді вибір мінімаксу А є A2 з найгіршим результатом - платити 1, у той час як простий вибір мінімаксу для Б є Б2 з найгіршим результатом — нічого не платити. Однак це рішення не є стійким, тому що якщо Б вважає, що А вибере А2, то Б вибере Б1, щоб отримати 1, а якщо A вважає, що Б вибере Б1, то А вибере A1, щоб отримати 3, тому Б вибере Б2, і врешті-решт обидва гравці усвідомлюють труднощі зробити вибір. Таким чином, потрібна більш стабільна стратегія.
Деякі варіанти гірші за інші, і можуть бути усунені: А не буде обирати А3, тому що А1 або А2 дають кращий результат, незалежно від того, що обере Б ; Б не буде вибирати Б3, так як і Б1, і Б2 дають кращі результати, незалежно від того, що обере А.
А може уникнути того, щоб робити очікувані виплати більш ніж на 1/3 обираючи A1 з імовірністю 1/6 і А2 з імовірністю 5/6, незалежно від того, що вибирає Б. Б може забезпечити очікуваний приріст, принаймні на 1/3 за допомогою випадкової стратегії вибору Б1 з імовірністю 1/3 і Б2 з імовірністю 2/3, незалежно від того, що вибирає А. Ці мінімаксні стратегії тепер є стабільними і не можуть бути поліпшені.
Максимін
У теорії ігор максимін часто відрізняється від мінімаксу. Мінімакс використовується в іграх з нульовою сумою, щоб підкреслити мінімізацію максимального виграшу противника. У грі з нульовою сумою, це ідентично максимізації свого виграшу. «Максимін» — це термін, який зазвичай використовується для ігор з ненульовою сумою, щоб описати стратегію, яка максимізує власну мінімальну винагороду. У іграх з ненульовою сумою це не те ж саме, що мінімізація максимальної винагороди противника, і не стратегія рівноваги Неша.
Комбінаторна теорія ігор
У комбінаторній теорії ігор є алгоритм мінімаксу для ігрових рішень. Простий варіант алгоритму мінімаксу, зазначений нижче, стосується ігор, таких як гра в хрестики-нулики, де кожен гравець може виграти, програти або зіграти в нічию. Якщо гравець А може виграти за один хід, то це і є його найкращий хід. Якщо гравець Б знає, що певний крок призведе до ситуації, коли гравець А може виграти в один хід, в той час інший крок призведе до ситуації, коли гравець А може, за найсприятливіших обставин, претендувати на нічию, то найкращий хід гравця Б є один з тих, що веде до нічиї. Наприкінці гри легко побачити, які кроки є «найкращими». Алгоритм мінімаксу допомагає знайти найкращий хід, працюючи в зворотному порядку від кінця гри. На кожному кроці він припускає, що гравець А намагається максимізувати шанси на перемогу, а на наступний хід гравець Б намагається звести ці шанси до мінімуму (тобто максимізувати власні шанси гравця Б на перемогу).
Алгоритм мінімаксу з альтернативним рухом
Мінімаксний алгоритм рекурсивний алгоритм для вибору наступного кроку для ігор з n гравцями, як правило, двох гравців. пов'язана з кожним положенням або станом гри. Це значення обчислюється за допомогою евристичної функції, і це показує, як добре було б для гравця досягти цієї позиції. Потім гравець робить хід, який максимізує мінімальне значення позиції в результаті можливих наступних ходів суперника. Якщо черга А робити хід, то А дає оцінку для кожного зі своїх ходів.
Можливий спосіб розрізнення полягає в призначенні для певної гри характеристик для А як +1 і для Б як -1. Альтернативою є використання правила, що якщо в результаті руху А є безпосередня перемога А, то призначити певну додатну оцінку, а якщо призведе до безпосередньої перемоги Б , певну від'ємну оцінку. Значення А для будь-якого іншого ходу є мінімум значень, отриманих від кожного з можливих ходів Б. З цієї причини, А називають максимізуючим гравцем і Б називають мінімізуючим гравцем, звідси і назва алгоритму мінімаксу. Алгоритм призначить певне додатне чи від'ємне значення для будь-якого стану, оскільки значення кожної позиції буде знаходитись із значень деяких остаточних виграшних чи програшних позицій. Часто це стає можливим тільки в самому кінці складних ігор, таких як шахи або ґо, так як це не обчислювально дивитися в майбутнє аж до завершення гри, за винятком ситуацій, близьких до кінця гри.
Але це може бути знайдено, якщо ми зможемо поставити евристичну функцію оцінки, яка дає значення для некінцевих станів гри без урахування всіх можливих наступних станів. Тоді ми можемо ввести обмеження для мінімаксного алгоритму - дивитися тільки на певну кількість ходів вперед. Це число називається "глибиною пошуку".
Використання алгоритмів евристичного пошуку для пошуку на графі виграшної стратегії в складніших задачах та іграх (шашки, шахи) не реальний. За деякими оцінками ігрове дерево гри в шашки містить 1040 вершин, в шахах 10120 вершин. Якщо при грі в шашки для однієї вершини потрібно 1/3 наносекунди, то всього ігрового часу буде потрібно 1021 століть. У таких випадках вводяться штучні умови зупинки, засновані на таких факторах, як найбільша допустима глибина вершин у дереві пошуку або обмеження на час і обсяг пам'яті. Наприклад, шаховий комп'ютер Deep Blue (який виграв у Гарі Каспарова) для глибини у 12 ходів перебравши усі можливі стани, тоді застосував евристичні функції оцінки.
Алгоритм може розглядатися як дослідження вузла дерева варіантів. Фактором розгалуження дерева є середнє число дітей для кожного вузла (тобто середня кількість можливих ходів для будь-якого стану). Число вузлів зазвичай зростає експоненційно з глибиною пошуку. Число вузлів, які аналізуються, є приблизний коефіцієнт розгалуження зведений в ступінь глибини пошуку. Тому непрактично повністю проаналізовувати такі ігри, як шахи, використанням мінімаксного алгоритму.
Продуктивність простого алгоритму мінімаксу може бути значно покращено, не впливаючи на результат, за допомогою відсічення альфа-бета. Теоретично, це еквівалент алгоритму мінімаксу, за допомогою якого завжди виходить такий же результат, але помітно швидше, так як цілі частини дерева виключаються без проведення аналізу. В основі цієї процедури лежить ідея Дж. Маккарті про використання двох змінних, позначених α і β (1961 рік).
Інші методи евристичних відсікань також можуть бути використані, але не всі з них гарантовано дають той же результат, що й алгоритм без відсікань.
Простий алгоритм мінімаксу може бути тривіально змінений, щоб додатково повертати саму стратегію разом з результатом мінімаксу.
Приклад Lua
function minimax(node, depth) if depth <= 0 then -- positive values are good for the maximizing player -- negative values are good for the minimizing player return objective_value(node) end -- maximizing player is (+1) -- minimizing player is (-1) local alpha = -node.player * INFINITY local child = next_child(node, nil) while child do local score = minimax(child, depth-1) alpha = node.player==1 and math.max(alpha, score) or math.min(alpha, score) child = next_child(node, child) end return alpha end
Приклад C++
int MinMax(int depth) { int best = -INFINITY; int val; if (depth <= 0) return Evaluate(); GenerateLegalMoves(); while (MovesLeft()) { MakeNextMove(); val = -MinMax(depth - 1); UnmakeMove(); if (val > best) best = val; } return best; }
Приклад Java pseudo-code
abstract class Minimax // Java pseudo-code { protected static final Layout layout = Layout.getTheLayout() // Singleton protected abstract int minOrMax( int s1, int s2 ) // min() or max() protected abstract Minimax makeMinimax() // Factory Method protected abstract int getGameOverScore() // WIN, LOSE, or TIE protected abstract int getWorstScore() // INFINITY or MINUS_INFINITY // ... public int minimax( int depth ) // Template Method { if( layout.isGameOver() ) { return getGameOverScore() } if( depth == 0 ) { return evaluateBoard() // Maybe Random } Minimax child = makeMinimax() int bestSoFar = getWorstScore() Vector moves = layout.getAllLegalMoves() Enumeration moveEnum = moves.elements() while( moveEnum.hasMoreElements() ) { Move nextMove = (Move) moveEnum.nextElement() layout.processMove( nextMove ) // Must undo this int score = child.minimax( depth - 1 ) // ! bestSoFar = minOrMax( bestSoFar, score ) layout.unprocessMove( nextMove ) } return bestSoFar }
Псевдокод
Нижче представлений псевдокод для Negamax версії алгоритму мінімаксу (використовуючи евристичну оцінку для припинення на заданій глибині).
function integer minimax(node, depth) if node is a terminal node or depth <= 0: return the heuristic value of node α = -∞ for child in node: # evaluation is identical for both players α = max(α, -minimax(child, depth-1)) return α
Приклад
Припустимо, що в грі є максимум два можливих кроки для кожного гравця на кожен хід. Алгоритм генерує дерево праворуч, де кола є ходи максимізуючого гравця, а квадрати являють собою ходи суперника ( мінімізуючий гравець ). Через обмеженість обчислювальних ресурсів, як описано вище, дерево обмежено на 4 кроки уперед.
Алгоритм оцінює кожен вузол за допомогою евристичних функцій оцінки, отримані значення показано на малюнку. Ходи, де максимізуючий гравець виграє, оцінені як додатна нескінченність, в той час як кроки, які приведуть до перемоги мінімізуючого гравця, оцінені як від'ємна нескінченність. На рівні 3 алгоритм буде вибирати, для кожного вузла, найменше зі значень його дочірніх вузлів, і призначить це значення тому ж вузлу (наприклад, вузол зліва буде вибирати мінімальне з "10" і "+ ∞", тому призначить собі значення "10"). Наступний крок, на рівні 2, полягає у виборі найбільшого значення для кожного вузла серед його дочірніх вузлів. Знову ж таки, кожне значення присвоюється кожному батьківському вузлу. Алгоритм продовжує оцінки максимального і мінімального значень дочірніх вузлів по черзі, аж поки не досягне кореневого вузла, де він вибирає хід з найбільшим значенням (представлено на малюнку синьою стрілкою). Це крок, який гравець повинен зробити для того, щоб звести до мінімуму максимально можливої втрати.
Максимін в філософії
У філософії термін «максиміна» часто використовується в контексті «Теорії справедливості» Джона Роулза, де він ставиться до нього (Rawls (1971, с. 152)) в контексті принципу різниці. Роулз визначив цей принцип як правило, яке свідчить, що соціальні і економічні нерівності повинні бути організовані так, що «вони повинні мати найбільшу користь найменш сприятливому члену суспільства». Іншими словами, нерівномірний розподіл може бути тільки тоді, коли він максимізує мінімальну користь тих, хто має низький рівень добробуту (які він називає «сировинні товари»).
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Minimaks angl minimax nim minimax n pravilo prijnyattya rishen sho vikoristovuyetsya v teoriyi igor teoriyi prijnyattya rishen doslidzhenni operacij statistici i filosofiyi dlya minimizaciyi mozhlivih vtrat z tih yaki osoba yaka prijmaye rishennya ne mozhe uniknuti pri rozvitku podij za najgirshim dlya neyi scenariyem Kriterij minimaksu spochatku buv sformulovanij v teoriyi igor dlya gri dvoh osib z nulovoyu sumoyu dlya vipadkiv poslidovnih i odnochasnih hodiv zgodom otrimav rozvitok u skladnishih igrah i prijnyatti rishen v umovah neviznachenosti Z ponyattyam minimaksu pov yazane ponyattya maksimina znachennya minimaksu ne menshe znachennya vidpovidnogo maksiminu Teoriya igorU teoriyi igor strategiya minimaksu ce zmishana strategiya yaka ye odnim z rozv yazkiv gri nulovoyu sumoyu V igrah z nulovoyu sumoyu strategiya minimaksu ye rivnovagoyu Nesha Teorema minimaksu U 1945 roci Oskar Morgenshtern i Dzhon fon Nejman zaproponuvali metod minimaksu yakij znajshov shiroke zastosuvannya Teorema minimaksu stverdzhuye Dlya kozhnoyi gri dlya dvoh osib z nulovoyu sumoyu ta skinchennim chislom strategij isnuye take znachennya V ta zmishani strategiyi dlya kozhnogo gravcya taki sho a Dlya bud yakoyi strategiyi Gravcya 2 Gravec 1 mozhe garantuvati sobi vigrash V i b Dlya bud yakoyi strategiyi Gravcya 1 Gravec 2 mozhe garantuvati sobi vigrash V Ce rivnoznachno tomu sho strategiya Gravcya 1 garantuye jogo vigrash V nezalezhno vid strategiyi gravcya 2 a takozh sho Gravec 2 tezh mozhe garantuvati sobi vigrash V Nazva algoritm minimaksu vinikla tomu sho kozhen gravec minimizuye maksimalno mozhlivu vinagorodu dlya inshogo gravcya tak yak gra z nulovoyu sumoyu vin takozh maksimizuye svoyu vinagorodu Priklad B obiraye B1 B obiraye B2 B obiraye B3A obiraye A1 3 2 2A obiraye A2 1 0 4A obiraye A3 4 3 1 Priklad gri z nulovoyu sumoyu de A i B roblyat hodi pokazuye rishennya minimaksu Pripustimo sho u kozhnogo gravcya ye tri varianti i rozglyanemo matricyu dlya A yaka vidobrazhena sprava Pripustimo sho platizhna matricya dlya B taka zh matricya zi zvorotnim znakom napriklad yaksho vibir A1 i B1 to B platit A 3 Todi vibir minimaksu A ye A2 z najgirshim rezultatom platiti 1 u toj chas yak prostij vibir minimaksu dlya B ye B2 z najgirshim rezultatom nichogo ne platiti Odnak ce rishennya ne ye stijkim tomu sho yaksho B vvazhaye sho A vibere A2 to B vibere B1 shob otrimati 1 a yaksho A vvazhaye sho B vibere B1 to A vibere A1 shob otrimati 3 tomu B vibere B2 i vreshti resht obidva gravci usvidomlyuyut trudnoshi zrobiti vibir Takim chinom potribna bilsh stabilna strategiya Deyaki varianti girshi za inshi i mozhut buti usuneni A ne bude obirati A3 tomu sho A1 abo A2 dayut krashij rezultat nezalezhno vid togo sho obere B B ne bude vibirati B3 tak yak i B1 i B2 dayut krashi rezultati nezalezhno vid togo sho obere A A mozhe uniknuti togo shob robiti ochikuvani viplati bilsh nizh na 1 3 obirayuchi A1 z imovirnistyu 1 6 i A2 z imovirnistyu 5 6 nezalezhno vid togo sho vibiraye B B mozhe zabezpechiti ochikuvanij pririst prinajmni na 1 3 za dopomogoyu vipadkovoyi strategiyi viboru B1 z imovirnistyu 1 3 i B2 z imovirnistyu 2 3 nezalezhno vid togo sho vibiraye A Ci minimaksni strategiyi teper ye stabilnimi i ne mozhut buti polipsheni Maksimin U teoriyi igor maksimin chasto vidriznyayetsya vid minimaksu Minimaks vikoristovuyetsya v igrah z nulovoyu sumoyu shob pidkresliti minimizaciyu maksimalnogo vigrashu protivnika U gri z nulovoyu sumoyu ce identichno maksimizaciyi svogo vigrashu Maksimin ce termin yakij zazvichaj vikoristovuyetsya dlya igor z nenulovoyu sumoyu shob opisati strategiyu yaka maksimizuye vlasnu minimalnu vinagorodu U igrah z nenulovoyu sumoyu ce ne te zh same sho minimizaciya maksimalnoyi vinagorodi protivnika i ne strategiya rivnovagi Nesha Kombinatorna teoriya igorU kombinatornij teoriyi igor ye algoritm minimaksu dlya igrovih rishen Prostij variant algoritmu minimaksu zaznachenij nizhche stosuyetsya igor takih yak gra v hrestiki nuliki de kozhen gravec mozhe vigrati prograti abo zigrati v nichiyu Yaksho gravec A mozhe vigrati za odin hid to ce i ye jogo najkrashij hid Yaksho gravec B znaye sho pevnij krok prizvede do situaciyi koli gravec A mozhe vigrati v odin hid v toj chas inshij krok prizvede do situaciyi koli gravec A mozhe za najspriyatlivishih obstavin pretenduvati na nichiyu to najkrashij hid gravcya B ye odin z tih sho vede do nichiyi Naprikinci gri legko pobachiti yaki kroki ye najkrashimi Algoritm minimaksu dopomagaye znajti najkrashij hid pracyuyuchi v zvorotnomu poryadku vid kincya gri Na kozhnomu kroci vin pripuskaye sho gravec A namagayetsya maksimizuvati shansi na peremogu a na nastupnij hid gravec B namagayetsya zvesti ci shansi do minimumu tobto maksimizuvati vlasni shansi gravcya B na peremogu Algoritm minimaksu z alternativnim ruhom Minimaksnij algoritm rekursivnij algoritm dlya viboru nastupnogo kroku dlya igor z n gravcyami yak pravilo dvoh gravciv pov yazana z kozhnim polozhennyam abo stanom gri Ce znachennya obchislyuyetsya za dopomogoyu evristichnoyi funkciyi i ce pokazuye yak dobre bulo b dlya gravcya dosyagti ciyeyi poziciyi Potim gravec robit hid yakij maksimizuye minimalne znachennya poziciyi v rezultati mozhlivih nastupnih hodiv supernika Yaksho cherga A robiti hid to A daye ocinku dlya kozhnogo zi svoyih hodiv Mozhlivij sposib rozriznennya polyagaye v priznachenni dlya pevnoyi gri harakteristik dlya A yak 1 i dlya B yak 1 Alternativoyu ye vikoristannya pravila sho yaksho v rezultati ruhu A ye bezposerednya peremoga A to priznachiti pevnu dodatnu ocinku a yaksho prizvede do bezposerednoyi peremogi B pevnu vid yemnu ocinku Znachennya A dlya bud yakogo inshogo hodu ye minimum znachen otrimanih vid kozhnogo z mozhlivih hodiv B Z ciyeyi prichini A nazivayut maksimizuyuchim gravcem i B nazivayut minimizuyuchim gravcem zvidsi i nazva algoritmu minimaksu Algoritm priznachit pevne dodatne chi vid yemne znachennya dlya bud yakogo stanu oskilki znachennya kozhnoyi poziciyi bude znahoditis iz znachen deyakih ostatochnih vigrashnih chi prograshnih pozicij Chasto ce staye mozhlivim tilki v samomu kinci skladnih igor takih yak shahi abo go tak yak ce ne obchislyuvalno divitisya v majbutnye azh do zavershennya gri za vinyatkom situacij blizkih do kincya gri Ale ce mozhe buti znajdeno yaksho mi zmozhemo postaviti evristichnu funkciyu ocinki yaka daye znachennya dlya nekincevih staniv gri bez urahuvannya vsih mozhlivih nastupnih staniv Todi mi mozhemo vvesti obmezhennya dlya minimaksnogo algoritmu divitisya tilki na pevnu kilkist hodiv vpered Ce chislo nazivayetsya glibinoyu poshuku Vikoristannya algoritmiv evristichnogo poshuku dlya poshuku na grafi vigrashnoyi strategiyi v skladnishih zadachah ta igrah shashki shahi ne realnij Za deyakimi ocinkami igrove derevo gri v shashki mistit 1040 vershin v shahah 10120 vershin Yaksho pri gri v shashki dlya odniyeyi vershini potribno 1 3 nanosekundi to vsogo igrovogo chasu bude potribno 1021 stolit U takih vipadkah vvodyatsya shtuchni umovi zupinki zasnovani na takih faktorah yak najbilsha dopustima glibina vershin u derevi poshuku abo obmezhennya na chas i obsyag pam yati Napriklad shahovij komp yuter Deep Blue yakij vigrav u Gari Kasparova dlya glibini u 12 hodiv perebravshi usi mozhlivi stani todi zastosuvav evristichni funkciyi ocinki Algoritm mozhe rozglyadatisya yak doslidzhennya vuzla dereva variantiv Faktorom rozgaluzhennya dereva ye serednye chislo ditej dlya kozhnogo vuzla tobto serednya kilkist mozhlivih hodiv dlya bud yakogo stanu Chislo vuzliv zazvichaj zrostaye eksponencijno z glibinoyu poshuku Chislo vuzliv yaki analizuyutsya ye pribliznij koeficiyent rozgaluzhennya zvedenij v stupin glibini poshuku Tomu nepraktichno povnistyu proanalizovuvati taki igri yak shahi vikoristannyam minimaksnogo algoritmu Produktivnist prostogo algoritmu minimaksu mozhe buti znachno pokrasheno ne vplivayuchi na rezultat za dopomogoyu vidsichennya alfa beta Teoretichno ce ekvivalent algoritmu minimaksu za dopomogoyu yakogo zavzhdi vihodit takij zhe rezultat ale pomitno shvidshe tak yak cili chastini dereva viklyuchayutsya bez provedennya analizu V osnovi ciyeyi proceduri lezhit ideya Dzh Makkarti pro vikoristannya dvoh zminnih poznachenih a i b 1961 rik Inshi metodi evristichnih vidsikan takozh mozhut buti vikoristani ale ne vsi z nih garantovano dayut toj zhe rezultat sho j algoritm bez vidsikan Prostij algoritm minimaksu mozhe buti trivialno zminenij shob dodatkovo povertati samu strategiyu razom z rezultatom minimaksu Priklad Lua function minimax node depth if depth lt 0 then positive values are good for the maximizing player negative values are good for the minimizing player return objective value node end maximizing player is 1 minimizing player is 1 local alpha node player INFINITY local child next child node nil while child do local score minimax child depth 1 alpha node player 1 and math max alpha score or math min alpha score child next child node child end return alpha end Priklad C int MinMax int depth int best INFINITY int val if depth lt 0 return Evaluate GenerateLegalMoves while MovesLeft MakeNextMove val MinMax depth 1 UnmakeMove if val gt best best val return best Priklad Java pseudo code abstract class Minimax Java pseudo code protected static final Layout layout Layout getTheLayout Singleton protected abstract int minOrMax int s1 int s2 min or max protected abstract Minimax makeMinimax Factory Method protected abstract int getGameOverScore WIN LOSE or TIE protected abstract int getWorstScore INFINITY or MINUS INFINITY public int minimax int depth Template Method if layout isGameOver return getGameOverScore if depth 0 return evaluateBoard Maybe Random Minimax child makeMinimax int bestSoFar getWorstScore Vector moves layout getAllLegalMoves Enumeration moveEnum moves elements while moveEnum hasMoreElements Move nextMove Move moveEnum nextElement layout processMove nextMove Must undo this int score child minimax depth 1 bestSoFar minOrMax bestSoFar score layout unprocessMove nextMove return bestSoFar Psevdokod Nizhche predstavlenij psevdokod dlya Negamax versiyi algoritmu minimaksu vikoristovuyuchi evristichnu ocinku dlya pripinennya na zadanij glibini function integer minimax node depth if node is a terminal node or depth lt 0 return the heuristic value of node a for child in node evaluation is identical for both players a max a minimax child depth 1 return a Priklad Pripustimo sho v gri ye maksimum dva mozhlivih kroki dlya kozhnogo gravcya na kozhen hid Algoritm generuye derevo pravoruch de kola ye hodi maksimizuyuchogo gravcya a kvadrati yavlyayut soboyu hodi supernika minimizuyuchij gravec Cherez obmezhenist obchislyuvalnih resursiv yak opisano vishe derevo obmezheno na 4 kroki upered Algoritm ocinyuye kozhen vuzol za dopomogoyu evristichnih funkcij ocinki otrimani znachennya pokazano na malyunku Hodi de maksimizuyuchij gravec vigraye ocineni yak dodatna neskinchennist v toj chas yak kroki yaki privedut do peremogi minimizuyuchogo gravcya ocineni yak vid yemna neskinchennist Na rivni 3 algoritm bude vibirati dlya kozhnogo vuzla najmenshe zi znachen jogo dochirnih vuzliv i priznachit ce znachennya tomu zh vuzlu napriklad vuzol zliva bude vibirati minimalne z 10 i tomu priznachit sobi znachennya 10 Nastupnij krok na rivni 2 polyagaye u vibori najbilshogo znachennya dlya kozhnogo vuzla sered jogo dochirnih vuzliv Znovu zh taki kozhne znachennya prisvoyuyetsya kozhnomu batkivskomu vuzlu Algoritm prodovzhuye ocinki maksimalnogo i minimalnogo znachen dochirnih vuzliv po cherzi azh poki ne dosyagne korenevogo vuzla de vin vibiraye hid z najbilshim znachennyam predstavleno na malyunku sinoyu strilkoyu Ce krok yakij gravec povinen zrobiti dlya togo shob zvesti do minimumu maksimalno mozhlivoyi vtrati Maksimin v filosofiyiU filosofiyi termin maksimina chasto vikoristovuyetsya v konteksti Teoriyi spravedlivosti Dzhona Roulza de vin stavitsya do nogo Rawls 1971 s 152 v konteksti principu riznici Roulz viznachiv cej princip yak pravilo yake svidchit sho socialni i ekonomichni nerivnosti povinni buti organizovani tak sho voni povinni mati najbilshu korist najmensh spriyatlivomu chlenu suspilstva Inshimi slovami nerivnomirnij rozpodil mozhe buti tilki todi koli vin maksimizuye minimalnu korist tih hto maye nizkij riven dobrobutu yaki vin nazivaye sirovinni tovari