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



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

Algoritmy pro hraní tahových her

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

Základy umělé inteligence

Dokumentace programu piskvorek

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

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

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

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

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

Základy umělé inteligence

Obsah prezentace. Základní pojmy v teorii o grafech Úlohy a prohledávání grafů Hledání nejkratších cest

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

Varianty Monte Carlo Tree Search

Stromy. Strom: souvislý graf bez kružnic využití: počítačová grafika seznam objektů efektivní vyhledávání výpočetní stromy rozhodovací stromy

UNIVERZITA PALACKÉHO V OLOMOUCI KATEDRA INFORMATIKY. ALGORITMY REALIZUJÍCÍ v jednoduchých deskových hrách

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

Základní pojmy teorie grafů [Graph theory]

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

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

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

bfs, dfs, fronta, zásobník, prioritní fronta, halda

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Vhodné k testování AI technik protože a) není třeba množství znalostí b) snadno se měří úspěšnost (výhra/prohra)

bfs, dfs, fronta, zásobník, prioritní fronta, halda

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

Úvod do teorie her

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:

Základy informatiky. Teorie grafů. Zpracoval: Pavel Děrgel Úprava: Daniela Szturcová

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

Ú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ů

UNIVERZITA PARDUBICE

Algoritmy výpočetní geometrie

Optimalizace & soft omezení: algoritmy

Úvod do teorie grafů

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

Algoritmus pro hledání nejkratší cesty orientovaným grafem

Teorie her a ekonomické rozhodování. 7. Hry s neúplnou informací

Algoritmizace prostorových úloh

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

Předmět: Algoritmizace praktické aplikace

bfs, dfs, fronta, zásobník

Dijkstrův algoritmus

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

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]

Grafové algoritmy. Programovací techniky

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

TGH13 - Teorie her I.

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

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

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

Stromy, haldy, prioritní fronty

Geneticky vyvíjené strategie Egyptská hra SENET

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

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

Pravidla vybraných deskových her pro potřeby předmětů Projektový seminář 1 a 2 v roce 2011/2012. Tomáš Kühr

A4B33ZUI Základy umělé inteligence

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

Vzdálenost uzlů v neorientovaném grafu

14. Složitější konstrukce

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

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

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

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

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

3. úloha - problém batohu metodami branch & bound, dynamické programování, heuristika s testem

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

Úvod do teorie her

popel, glum & nepil 16/28

Operační výzkum. Teorie her cv. Hra v normálním tvaru. Optimální strategie. Maticové hry.

CAS. Czech Association of Shogi

Grafové algoritmy. Programovací techniky

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

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

STRATEGICKÁ HRA MAGNETIC CHALLENGE

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.

Umělá inteligence pro hru Pentago Petr Kouba

Teorie her a ekonomické rozhodování. 8. Vyjednávací hry

Modely teorie grafů, min.kostra, max.tok, CPM, MPM, PERT

HRA GOMOKU FAKULTA INFORMAČNÍCH TECHNOLOGIÍ BRNO UNIVERSITY OF TECHNOLOGY FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INTELLIGENT SYSTEMS

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

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

MATEMATICKÁ TEORIE ROZHODOVÁNÍ

Algoritmy na ohodnoceném grafu

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

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

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

Operační výzkum. Síťová analýza. Metoda CPM.

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

2. lekce Algoritmus, cyklus Miroslav Jílek

Zdůvodněte, proč funkce n lg(n) roste alespoň stejně rychle nebo rychleji než než funkce lg(n!). Symbolem lg značíme logaritmus o základu 2.

INTERACTIVE GAMES 750 CZK

3. ANTAGONISTICKÉ HRY

Pokročilá implementace deskové hry Dáma

Teorie her a ekonomické rozhodování 5. Opakované hry

STROMY. v 7 v 8. v 5. v 2. v 3. Základní pojmy. Řešené příklady 1. příklad. Stromy

TEORIE HER

Transkript:

Hraní her (Teorie a algoritmy hraní her) 4. 3. 2015 2-1

Hraní her pro dva a více hráčů Počítač je při hraní jakékoli hry: silný v komplikovaných situacích s množstvím kombinací, má obrovskou znalost zahájení a koncovek, nevnímá hluk, stress a psychický tlak, tvrdý hráč proti soupeři bez fantazie, je však "překvapen" originálními tahy, má malou nebo žádnou znalost strategie, díky efektu horizontu neodhalí plán na mnoho kol dopředu, je obvykle zaměřen na materiální výhodu neobětuje figuru či pozici, pokud se to brzy nevyplatí. 2-2

Algoritmy hraní her algoritmus minimaxu a alfa-beta prořezávání Hraní her je zcela přirozeně spojováno s představou prohledávání stavového prostoru, tedy jakési zkoušení možných tahů. Téměř všichni lidé právě tímto způsobem hrají přemýšlejí, co by mohl soupeř udělat, pokud oni táhnou takhle. Základní rozdělení algoritmů: 1) algoritmy, které prohledávají celý stavový prostor do určité hloubky, 2) algoritmy, prohledávající jen "dobře vypadající" části stavového prostoru, 3) cílově orientované algoritmy Nejčastěji se používají programy prvního typu, ale je i hodně programů třetího typu (ty jsou ale většinou dobré jen na jednu konkrétní věc - v případě šachu např. některé koncovky). 2-3

Klíčové otázky hraní her: 2. Řešení úloh hraní her 1. Je nalezené řešení dobré? libovolné řešení (lze použít heuristiku) nejlepší (prohledat celý prostor) 2. Mohu "vrátit" tah? ano (osmička) ne (šachy) 3. Je "jistý" vstup? ano (šachy) ne (poker) 2-4

Klasické deskové logické hry Základem je PROBLEM SOLVING snažíme se dostat z počátečního stavu do cílového (např. mat) za použití pravidel. Významný rozdíl je v tom, že hráči mají rozdílné úkoly. Cílem jednoho je maximalizovat ohodnocující funkci, zatímco cílem druhého je minimalizovat jí. Kromě klasického hledání řešení se používají i jiné techniky: knihovna zahájení a koncovek rozpoznávání vzorů (šablon) 2-5

Algoritmus existence vítěze a minimaxu Algoritmy na prohledávání stavového prostoru se používají pro hry dvou hráčů s úplnou informací, tzn. když má každý hráč všechny informace o hře a jejím současném stavu. Tato informace je konečná (nazývá se pozice) a obsahuje též údaj, který hráč je na tahu. Dále existují pravidla hry, která určují ke každé pozici konečný počet přípustných tahů, pro hráče, který je právě na tahu. Krokem hry (tahem, popř. půltahem) je, když si hráč, který je na tahu, vybere jeden z přípustných tahů a provede jej. Tím vznikne nová pozice a na tahu je soupeř. Hra pokračuje, dokud se nedostane do závěrečné pozice, u které musí být též definováno, kdo vyhrál či prohrál, příp. že jde o remízu. Na závěr je ještě nutné, aby pravidla vylučovala nekonečnou hru. 2-6

Existence vítěze Hra je znázorněna stromem, v němž uzly reprezentují jednotlivé pozice (stavy) hry, hrany reprezentují přípustné tahy, listy stromu odpovídají koncovým pozicím (stavům) hry. Př.: Pozice ohodnocená +1 je vítězná, 1 je prohraná, 0 je remízou. Zvýrazněné tahy jednoznačně vedou k výhře. +1 0 0 0-1 0-1 0-1 +1-1 +1 0 +1 +1-1 +1 +1 0 +1-1 +1 +1-1 0 +1 0 2-7

Algoritmus minimaxu Používá ohodnocení uzlů, které zpravidla vyjadřuje pravděpodobnost, s jakou lze ve hře dosáhnout vítězství. Proto na úrovni hráče vybíráme maximum, na úrovni protihráče vybíráme minimum. 2-8

Hledání vítězného tahu algoritmem minimaxu: minmax(u) { // u is the node you want to score if u is a leaf return ( score of u ); else if u in a min node for all childern of u: v1,..., vn return min({minmax(v1),...,minmax(vn)}); else for all childern of u: v1,..., vn; return max({minmax(v1),...,minmax(vn)}); } 2-9

Příklad: Ohodnocení uzlů stromu řešení při hledání řešení metodou minimaxu: 4 4 4 3 4 7 5 8 4 6 3 5 3 2 4 7 2 5 3 8 2 3 4 1 6 3 3 3 2 5 0 2 7 3 2 2 5 4 9 7 9 2 6 5 3 5 9 8 2 3 8 4 6 1 2 6 4 3 3 8 3 2 7 9 5 0 2 8 8 2 2-10

Příklad: Hledání řešení hry piškvorky (ve variantě omezené na hrací pole 3 x 3 čtverečky) metodou minimaxu 2-11

Použijeme omezení stromu: 2-12

Omezený strom řešení: 2-13

Popis úlohy a algoritmus výpočtu ohodnocující funkce: Vložení křížku (x) do hracího pole značí tah 1. hráče a bude reprezentováno uzlem stromu, v němž budeme volit maximum (MAX). Vložení kroužku (o) do hracího pole značí tah protihráče a bude reprezentováno uzlem stromu, v němž budeme volit minimum (MIN). Výpočet ohodnocující funkce definujeme takto: nachází-li se 1. hráč (MAX-uzel) v pozici výherce, pak f(n i ) = (maxint); nachází-li se protihráč (MIN-uzel) v pozici výherce, pak f(n i ) = ; není-li ani jeden z hráčů v pozici výherce, pak f(n i ) vyčíslíme jako počet kompletních řádků, sloupců a diagonál (souvislých trojic křížků) hracího pole, které 1. hráč ještě může vyplnit (minus) počet kompletních řádků, sloupců a diagonál (souvislých trojic kroužků) hracího pole, které ještě může vyplnit protihráč. Např. pro situaci: f(n i ) = 6 4 = 2. 2-14

Vkládání uzlů: 2-15

1. tah 1. hráče + 1. tah protihráče (část stromu řešení): 2-16

2. tah obou hráčů (pouze část stromu řešení): 2-17

3. tah obou hráčů vedoucí k vítězství: 2-18

Algoritmus alfa beta prořezávání Podstata algoritmu: Když víme, že nějaká větev je špatná (tj. horší než doposud nalezená nejlepší), nepotřebujeme už vědět, jak moc je špatná. Navíc nás ani nezajímá, zdali tam nebude lepší podvětev, protože soupeř by se jí jistě uměl vyhnout. Př.: 5 4 A -2 B C 5 D 3 8 4 5-2 -3 6 5 9 7 3 6 1 2-19

Postup: Pro množinu uzlů na jedné úrovni si pamatujeme nějaké maximum (nebo minimum, pokud jde o minimalizující úroveň) a pokud zjistíme, že ohodnocení synů dalšího uzlu v řadě je menší (větší) než toto maximum (minimum), nepotřebujeme tento uzel dál rozvíjet, protože víme, že už minimaxovou hodnotu svého otce neovlivní (tečkované větve). 4 4 4 3 4 7 5 8 4 6 3 3 2 4 7 5 3 8 4 1 6 4 3 3 2 7 3 2 2 5 4 9 7 9 2 6 5 3 5 9 8 2 3 8 4 6 1 2 6 4 3 3 8 3 2 7 9 5 0 2 8 8 2 2-20

Hledání vítězného tahu algoritmem alfa beta prořezávání: 2-21

Algoritmus alfa beta prořezávání v pseudokódu: function MINIMAX-AB(N, A, B) is ;; // Here A is always less than B begin if N is a leaf then return the estimated score of this leaf else Set Alpha value of N to -infinity and Beta value of N to +infinity; if N is a Min node then For each successor Ni of N loop Let Val be MINIMAX-AB(Ni,A,Min{B,Beta of N}); Set Beta value of N to Min{Beta value of N,Val}; When A >= Beta value of N then Return Beta value of N endloop; Return Beta value of N; else For each successor Ni of N loop Let Val be MINIMAX-AB(Ni,Max{A,Alpha value of N},B); Set Alpha value of N to Max{Alpha value of N, Val}; When Alpha value of N >= B then Return Alpha value of N endloop; Return Alpha value of N; end MINIMAX-AB; 2-22

Jiná varianta implementace algoritmu: minimax(in game board, in best_opposing_score, out score chosen_score, out move chosen_move) begin best_score = -infinity; Gt_generate_moves(current_mimx_data,moves_list); for (i = 0 to moves_list.num_moves-1) do new_board = board; Gt_move(board, moves_list[i],the_unmove); minimax(board, the_score,the_move); Gt_unmove(board,the_unmove); if (the_score > best_score) then best_score = the_score; best_move = moves_list[i]; if (best_score > best_opposing_score) then cut;/* the opponent will not allow you to reach this node in real life so there is no since in continuing*/ endif endif enddo chosen_move = best_move; Gt_evaluate(current_mimx_data,chosen_score,best_score); end. 2-23

Př.: Strom řešení piškvorek prořezaný algoritmem alfa beta prořezávání 2-24

Efektivnost algoritmu alfa beta prořezávání Z porovnání algoritmů minimaxu a alfa beta prořezávání vyplývá vlastnost, že algoritmus alfa beta prořezávání vrací hodnotu, kterou by vrátil původní algoritmus, aniž by musel projít celým stromem, což je vlastně to, co jsme potřebovali získat. Z předchozích obrázků je patrna jistá efektivita, ale je toto efektivní vždy? Může se stát, že je ořezávání lepší nebo naopak horší? Na následujícím obrázku jsou ukázány dva příklady: 5 5 2 5 7 7 1 1 5 3 1 4 5 9 3 3 4 5 0 3 9 2 8 9 3 5 4 1 7 5 5 1 3 5 Oba stromy jsou ohodnoceny algoritmem alfa beta ořezávání. Alfa beta metoda se neuplatní, protože strom nemá dost zde pater. Aby se uplatnila, jsou potřeba alespoň čtyři úrovně (viz výše). Na prvním obrázku byl strom algoritmem ořezán poměrně hodně, na druhém vůbec. Přitom jediná odlišnost, která je mezi oběma obrázky, je pořadí, v jakém jsou v obou stromech znázorněny tahy. Důkaz, proč tomu tak je, si proveďte jako cvičení. 8 2 9 3 0 5 4 3 1 7 5 2 2-25

Úloha k samostatnému řešení: sedm mostů v Königsbergu 2-26