Uvažujeme jen hry s nulovým součtem, tj. zisk jednoho. Střídá se náš tah, kde maximalizujeme svůj zisk, s tahem



Podobné dokumenty
Uvažujeme jen hry s nulovým součtem, tj. zisk jednoho. Střídá se náš tah, kde maximalizujeme svůj zisk, s tahem

Počítačové šachy. Otakar Trunda

Hraní her. (Teorie a algoritmy hraní her) Řešení úloh hraní her. Václav Matoušek /

2. Řešení úloh hraní her Hraní her (Teorie a algoritmy hraní her)

Algoritmy pro hraní tahových her

Department of Cybernetics Czech Technical University in Prague. pechouc/kui/games.pdf

Hry a UI historie. von Neumann, 1944 algoritmy perfektní hry Zuse, Wiener, Shannon, přibližné vyhodnocování

! Kyberne(ka!a!umělá!inteligence! 8.!Hraní!dvouhráčových!her,!adversariální! prohledávání!stavového!prostoru!!!!

Algoritmus Minimax. Tomáš Kühr. Projektový seminář 1

Základy umělé inteligence

Varianty Monte Carlo Tree Search

Dokumentace programu piskvorek

Obsah: Hry Prohledávání stavového prostoru. Algoritmus Minimax. Nedeterministické hry Hry s nepřesnými znalostmi

Hry a UI historie. agent musí brát v úvahu akce jiných agentů jak ovlivní jeho. vliv ostatních agentů prvek náhody. Hry: Obsah:

Obsah: Hry vs. Prohledávání stavového prostoru Algoritmus Minimax. Nedeterministické hry Hry s nepřesnými znalostmi

Anotace. Středník II!! programování her.

Pavel Veselý Proof-number search, Lambda search a jejich vylepšení

Obsah: Hry vs. Prohledávání stavového prostoru Algoritmus Minimax. Nedeterministické hry Hry s nepřesnými znalostmi

HRY A UI HISTORIE. Hry vs. Prohledávání stavového prostoru. Obsah:

Obsah: Hry vs. Prohledávání stavového prostoru Algoritmus Minimax. Nedeterministické hry Hry s nepřesnými znalostmi

Heuristické řešení problémů. Seminář APS Tomáš Müller

Umělá inteligence I. Roman Barták, KTIML.

Evoluční algoritmy. Podmínka zastavení počet iterací kvalita nejlepšího jedince v populaci změna kvality nejlepšího jedince mezi iteracemi

Hry a UI historie. Obsah: Hry vs. Prohledávání stavového prostoru Algoritmus Minimax. Nedeterministické hry Hry s nepřesnými znalostmi

Obsah: Hry vs. Prohledávání stavového prostoru Algoritmus Minimax. Nedeterministické hry Hry s nepřesnými znalostmi

Stromy. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol.

Umělá inteligence. UI (AI) - součást informatiky s průniky mimo obor Stručná historie UI. Letošní cena nadace Vize Joseph Weizenbaum

A4B33ZUI Základy umělé inteligence

Obsah: Hry vs. Prohledávání stavového prostoru Algoritmus Minimax. Nedeterministické hry Hry s nepřesnými znalostmi

Teorie her a ekonomické rozhodování. 4. Hry v rozvinutém tvaru

Obsah: Hry vs. Prohledávání stavového prostoru Algoritmus Minimax. Nedeterministické hry Hry s nepřesnými znalostmi. 72 studentů

Hry a UI historie. Obsah: Hry vs. Prohledávání stavového prostoru Algoritmus Minimax. Nedeterministické hry Hry s nepřesnými znalostmi

Hanojská věž. T2: prohledávání stavového prostoru. zadání [1 1 1] řešení [3 3 3] dva možné první tahy: [1 1 2] [1 1 3]

ALGORITMIZACE 2010/03 STROMY, BINÁRNÍ STROMY VZTAH STROMŮ A REKURZE ZÁSOBNÍK IMPLEMENTUJE REKURZI PROHLEDÁVÁNÍ S NÁVRATEM (BACKTRACK)

Úloha ve stavovém prostoru SP je <s 0, C>, kde s 0 je počáteční stav C je množina požadovaných cílových stavů

Složitost her. Herní algoritmy. Otakar Trunda

Hranová konzistence. Arc consistency AC. Nejprve se zabýváme binárními CSP. podmínka odpovídá hraně v grafu podmínek

Neinformované metody prohledávání stavového prostoru. Gerstner Laboratory Agent Technology Group, Czech Technical University in Prague

ALGORITMIZACE 2010/03 STROMY, BINÁRNÍ STROMY VZTAH STROMŮ A REKURZE ZÁSOBNÍK IMPLEMENTUJE REKURZI PROHLEDÁVÁNÍ S NÁVRATEM (BACKTRACK)

Prohledávání do šířky a do hloubky. Jan Hnilica Počítačové modelování 15

UNIVERZITA PARDUBICE

Karty Prší. Anotace: Abstract: Gymnázium, Praha 6, Arabská 14 předmět Programování, vyučující Tomáš Obdržálek

Algoritmy pro práci s neúplnou informací

5 Rekurze a zásobník. Rekurzivní volání metody

Grafové algoritmy. Programovací techniky

Úvod do teorie her

Kámen-nůžky-papír. Tomáš Svoboda Centrum strojového vnímání, Katedra kybernetiky Fakulta elektrotechnická, České vysoké učení technické

Předmět: Algoritmizace praktické aplikace

Martin Milata, Pokud je alespoň jeden rozměr čokolády sudý (s výjimkou tabulky velikosti 1x2, která už je od

Řešení: PŘENESVĚŽ (N, A, B, C) = přenes N disků z A na B pomocí C

a4b33zui Základy umělé inteligence

Šachové algoritmy využívající hluboké neuronové sítě

Genetické programování

Programování. s omezujícími podmínkami. Roman Barták. roman.bartak@mff.cuni.cz

Základy umělé inteligence

Distribuovaná synchronizace. Paralelní a distribuované systémy. 11. Přednáška Vzájemné vyloučení. Centralizovaný algoritmus - fronta procesů

Grafové algoritmy. Programovací techniky

Optimalizace & soft omezení: algoritmy

Kámen-nůžky-papír. Tomáš Svoboda Centrum strojového vnímání, Katedra kybernetiky Fakulta elektrotechnická, České vysoké učení technické

Základy algoritmizace 4. Problémy, algoritmy, data

Odstranění rekurze Binární soubory Programování her. Anotace. Středník II!! Odstranění rekurze, binární soubory, programování her.

Univerzita Karlova v Praze Matematicko-fyzikální fakulta DIPLOMOVÁ PRÁCE

3. ANTAGONISTICKÉ HRY

Monte Carlo Tree Search. Marika Ivanová

ANTAGONISTICKE HRY 172

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

DYNAMICKÉ PROGRAMOVÁNÍ A PROBLÉM BATOHU

Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program

Geneticky vyvíjené strategie Egyptská hra SENET

Teorie užitku. Marta Vomlelová 14. prosince / 23

Časová a prostorová složitost algoritmů

prohled av an ı graf u Karel Hor ak, Petr Ryˇsav y 16. bˇrezna 2016 Katedra poˇ c ıtaˇ c u, FEL, ˇ CVUT

Seminář z IVT Algoritmizace. Slovanské gymnázium Olomouc Tomáš Kühr

NPRG030 Programování I, 2018/19 1 / :03:07

Obecná informatika. Matematicko-fyzikální fakulta Univerzity Karlovy v Praze. Podzim 2012

Rekurzivní algoritmy

Základní datové struktury III: Stromy, haldy

Použití dalších heuristik

Vraťme se k základům: DFS = Depth First Search

Teorie her a ekonomické rozhodování. 2. Maticové hry

IB108 Sada 1, Příklad 1 Vypracovali: Tomáš Krajča (255676), Martin Milata (256615)

Jan Březina. Technical University of Liberec. 21. dubna 2015

Klasifikace a predikce. Roman LUKÁŠ

Slepé prohledávání do šířky Algoritmus prohledávání do šířky Při tomto způsobu prohledávání máme jistotu, že vždy nalezneme koncový stav, musíme ale p

Dijkstrův algoritmus

Dokažte Větu 2(Minimax) ze třetího dílu seriálu pro libovolnou hru s nulovým součtem, ve kterémákaždýhráčnavýběrprávězedvoustrategií.

Stromy, haldy, prioritní fronty

}w!"#$%&'()+,-./012345<ya

TGH05 - aplikace DFS, průchod do šířky

TEORIE HER

Dekompozice problému, AND/OR grafy

Algoritmizace Dynamické programování. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010

Semestrální práce z předmětu. Jan Bařtipán / A03043 bartipan@studentes.zcu.cz

PL/SQL. Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd.

Dynamic programming. Optimal binary search tree

Dynamické programování. Optimální binární vyhledávací strom

ŠACHOVÉ ENGINY. Semestrální práce pro předmět 4IZ430 Principy inteligentních systémů

Úvod do teorie her

Hledáme efektivní řešení úloh na grafu

Kapitola 7: Návrh relačních databází. Nástrahy relačního návrhu. Příklad. Rozklad (dekompozice)

Transkript:

Hry dvou hráčů (např. šachy) Uvažujeme jen hry s nulovým součtem, tj. zisk jednoho znamená ztrátu druhého hráče. Střídá se náš tah, kde maximalizujeme svůj zisk, s tahem soupeře, který se snaží náš zisk minimalizovat, neboť to je jeho ztráta. Náš graf prohledávání bude mít dva typy uzlů: MAX a MIN.

7 A MAX B C MIN 7 9 D 11 G MAX 7 9 E 1 F 9 4 11 MIN 2 5 1 9 4 11 9 2 5 1 9 listy

Algoritmus Minimax function MINIMAX DECISION(game) returns an operator for each op in Operators(game) do Value[op]=MINIMAX VALUE(Apply(op, game), game) end return the op with the highest Value[op] function MINIMAX VALUE(state, game)returns a utility value if TERMINAL TEST[game](state) then return Utility[game](state) else if MAX is to move in state then return the hightest MINIMAX VALUE of Successors(state) else return the lowest MINIMAX VALUE of Successors(state)

Prořezávání v dané hloubce (Cutoff) Potřebujeme ohodnocovací funkci na stavech, např. šachy, dáma, mlýnek: materiál jednoho hráče mínus materiál protivníka piškvorky: ohodnocení pozice volné trojice, čteřice, apod. v předem dané hloubce nevoláme MINIMAX, ale odhadneme ohodnocení pozice. Uklidnění: pokud zrovna může protivník brát, je odhad nestabilní je vhodné jít ještě pár tahů dopředu, než se situace uklidní. Problém horizontu: mohu sebrání dámy odkládat za horizont, ale ne navěky není univerzální řešení.

7 A MAX B alpha=7 C MIN 7 9 D 11 G MAX 7 9 E F 9 4 11 MIN 2 5 1 9 4 11 9 2 5 1 9 listy

α β prořezávání α je nejlepší skore MAX uzlu na cestě od kořene do stavu u MAX uzlu případně zvětšená prohledanými dětmi β je nejnižší skore MIN uzlu na cestě od kořene do stavu u MIN uzlu případně zmenšená prohledanými dětmi tj. pokud MAX uzel překročí β nebo MIN uzel překročí α, někdo z předků přetočí směr hry do jiného podstromu, než právě jsem.

α β prořezávání <alpha,beta> < I,I> alpha max I A if alpha > beta then prune < I,I> min I beta B min beta C D max alpha G 7 9 min beta E min beta F 9 4 11 2 5 1 9

α β prořezávání <alpha,beta> < I,I> alpha max I 7 < I,I> 7 A <7,I> if alpha > beta then prune min I beta 7 9 B min beta C 7 9 D max alpha G 7 9 min beta E min beta F 9 4 11 2 5 1 9

α β prořezávání min I 7 <alpha,beta> < I,I> alpha max I 7 7 < I,I> beta 7 7<I B 9 7<I 9 7 9 A alpha max 7 9 7 <7,I> min <7,I> <7,I> D I beta if alpha > beta then prune C alpha max 7 G <7,I> 9> min beta E I 2 2<7 2 min beta I F 9 4 11 2 5 1 9

α β prořezávání min I 7 <alpha,beta> < I,I> alpha max I 7 7 < I,I> beta 7 7<I B 9 7<I 9 7 9 min 2 A alpha max 7 9 7 <7,I> min <7,I> beta E I 2 2<7 <7,I> D I beta min C <7,I> beta I 9 F alpha max 7 G 9 9> 2 5 1 9 9 <7,> 9 9 4 11

Algoritmus alfa beta prořezávání function MAX VALUE(state, game, α, β) returns the minimax value of state if CUTOFF TEST(state) then return Eval(state) for each s in SUCCESSORS(state) do α = MAX(α, MIN VALUE(s, game, α, β)) if α β then return β end return α function MIN VALUE(state, game, α, β) returns the minimax value of state if CUTOFF TEST(state) then return Eval(state) for each s in SUCCESSORS(state) do β = MIN(β, MAX VALUE(s, game, α, β)) if β α then return α end return β

Transpoziční tabulky Pamatuji si stavy, neboť se často opakují v jiných větvích.

Transpoziční tabulky Lasker position Sigma Chess bílý na tahu

Vyhrávající tah je Ka1-b1!! Ka1-b2 vede k remíze je třeba prohledat aspoň 20 tahů dopředu bez paměti hodiny či dny, s pamětí méně než sekundu díky tomu, že pěši jsou blokovaní, je stavový prostor malý Za chvíli bude α β prořezávání s pamětí.

Nulové okno Test Pokud α β pustíme místo, s oknem k ɛ, k + ɛ, ptáme se, zda má MAX hráč zaručenu výhru k. Při takovémto testu prořezávám víc, než,, proto se často vyplatí zavolat několik testů místo,. Platím za to tím, že dostanu jen dolní či horní mez, nikoli přesnou hodnotu až se meze rovnají, mám přesnou hodnotu.

Nulové okno Test <alpha,beta> <1.5,1.6> max I <1.5,1.6> alpha A 7 7 7 > 1.6 7 dolní odhad if alpha > beta then prune min I beta 7 9 B min beta C 7 9 D max alpha G 7 9 min beta E min beta F 9 4 11 2 5 1 9

Memory-enhanced Test Driver function MTDF(root : node_type; f : integer; d : integer) : integer; g := f; upperbound := +INFINITY; lowerbound := -INFINITY; repeat if g == lowerbound then beta := g + 1 else beta := g; g := AlphaBetaWithMemory(root, beta - 1, beta, d); if g < beta then upperbound := g else lowerbound := g; until lowerbound >= upperbound; return g;

První odhad pomůže Pokud se trefím, tak jen dva průchody. function iterative_deepening(root : node_type) : integer; firstguess := 0; for d = 1 to MAX_SEARCH_DEPTH do firstguess := MTDF(root, firstguess, d); if times_up() then break; return firstguess;

α β prořezávání s pamětí function AlphaBetaWithMemory(n : node_type; alpha, beta, \\ depth : integer) : integer; if retrieve(n) == OK then /* Transposition table lookup */ if n.lowerbound >= beta then return n.lowerbound; if n.upperbound <= alpha then return n.upperbound; alpha := max(alpha, n.lowerbound); beta := min(beta, n.upperbound); if depth == 0 then g := evaluate(n); /* leaf node */

else if n == MAXNODE then g := -INFINITY; c := firstchild(n); while (g < beta) and (c!= NOCHILD) do g := max(g, AlphaBetaWithMemory(c, alpha, beta, d - 1)); alpha := max(alpha, g); c := nextbrother(c); else /* n is a MINNODE */ g := +INFINITY; c := firstchild(n); while (g > alpha) and (c!= NOCHILD) do g := min(g, AlphaBetaWithMemory(c, alpha, beta, d - 1)); beta := min(beta, g); c := nextbrother(c);

/* Traditional transposition table storing of bounds */ /* Fail low result implies an upper bound */ if g <= alpha then n.upperbound := g; store n.upperbound; /* Found an accurate minimax value - will not occur if called with zero window */ if g > alpha and g < beta then n.lowerbound := g; n.upperbound := g; store n.lowerbound, n.upperbound; /* Fail high result implies a lower bound */ if g >= beta then n.lowerbound := g; store n.lowerbound; return g;

Zájem UI o hry ukázat schopnosti inteligence počítačů stanovit hodnotu (game theoretic value) hry první hráč vyhraje, prohraje, remizuje pokud všichni hráči hrají optimálně My: hry s plnou informací a s nulovým součtem.

Stupně vyřešení hry Silně vyřešená je známá optimální strategie pro všechny pozice Slavě vyřešená je známá optimální strategie pro počáteční pozici Ultra slabě vyřešená je známá hodnota počáteční pozice, ale ne strategie, jak jí dosáhnout

Velikost stavového prostoru Složitost her velikost herního stromu (pro MINIMAX atd.)

Mlýnek (Nine men s morris)

Vyřešil Gasser 1995 Mlýnek (Nine men s morris) Počet stavů hry je: 7,673,759,269 (vyloučené symetrie) vytvořil databázi všech pozic pro střední a koncovou hru (od okamžiku, kdy je položen poslední kámen), tj. 2 w b databází, kde w a b jsou počty bílých a černých kamenů za použití této databáze prohledal strom pro 1 tahů od počátku hodnota hry je remíza

Checkers (Dáma, trochu jiná) CHINOOK se stal prvním mistrem světa v herní soutěži lidí a počítačů 1994 ještě nebyla (r. 2002) slabě vyřešená databáze koncovek pro osm a méně kamenů, tj. 443,74,401,247 pozic, zkomprimovaných na 6GB databáze střední hry jakmile se podaří určit hodnotu pozice ve střední hře, uloží se do databáze v praxi umožnilo určit hodnotu mnoha pozic s 22 kameny do databáze střední hry přidané pozice, získané pokusem řešit počáteční postupy popsané v literatuře do hloubky

Staletá pozice (197 letá) 100 1900 diskuse o hodnotě pozice, závěr bílý vítězí CHINOOK 1997: během sekundy odpověděl, že je to remíza

Šachy... budou příští týden na Semináři UI

Hex

Hex Ultra slabě vyřešeno 1. remíza není možná z tvaru hrací plochy 2. tah nikdy není na škodu 3. kdyby existovala vyhrávací stragetie pro druhého, pak první položí první kámen náhodně a pokračuje podle druhého strategie.

Connect four, Kokosové ořechy,...

AND OR graf př. rozklad úlohy na několik dílčích cílů nebo boj s náhodným výsledkem akce pak musíme větve AND uzlu vážit pravděpodobností výsledků Podobně jako v MIN MAX grafu se v AND OR grafu střídají uzly dvou druhů. Nechť máme heuristiku h(n), která je dolní odhad ceny optimálního řešícího grafu z uzlu n do cílových uzlů.

MAX Chance 1/3 2/3 MAX Chance MAX Chance MAX

AO* Algorithm Prohledávání AND OR grafu Řešící graf G z n do N: je li n N, je G tvořen pouze n jinak pokud vychází z n konektor K do množiny {n 1,..., n k }, že existuje řešící graf z každého n i do N, pak se G skládá z n, K, n 1,..., n k a řešících grafů z n i do N jinak řešící graf z n do N neexistuje. Cílem je najít optimální řešící graf. Cena k(n, N) řešícího grafu z n do N je li n N, je k(n, N) = 0 jinak z n vychází konektor K do množiny {n 1,..., n k }, je-li jeho cena c(k), je k(n, N) = c(k) + w K 1 k(n 1, N) +... + w K n k(n k, N).

1. G {s 0 }; q(s 0 ) h(s 0 ), je li s 0 cílový, označme ho SOLVED 2. while s 0 not SOLVED do 3. begin 4. G currently best solution subgraph from s 0 5. n unsolvedleaf(g ) 6. EXPAND(n); add successors to G, assign q(n) = h(n) to new nodes, assign SOLVED to terminal nodes; if n has no successors, set q(n) =. 7.

7. S {n} (a) while S not empty do (b) begin (c) m takeandremovenodewithoutsuccessorsins(s) (d) for each connector K i set q i (m) c(k i ) + w K 1 q(n 1) +... + w K n q(n ki ) (e) q(m) min i q i (m); mark appropriate connector, remove the old mark (f) if all nodes in the marked connector solved, mark m SOLVED (g) if m marked SOLVED or q changed then add all parents of m to S where m is a child via a marked connector

Negamax Pokud se Vám nechce pořád střídat MIN a MAX, zkuste Negamax!

7 A MAX B C MIN 7 9 D G MAX 7 9 min(2,5,1)= max( 2, 5, 1) 1 E F 9 4 11 MIN 2 5 1 9 4 11 9 2 5 1 9 listy

max(7,) 7 A MAX max( 7, 9, ) B max(, 11) C MAX 7 9 max(1,) D 11 max(9,4,11) G MAX 7 9 1 max( 2, 5, 1) E 2 5 1 9 4 11 max(, 9, ) F 9 4 11 9 MAX 2 5 1 9 listy