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



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

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

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

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

Algoritmy pro hraní tahových her

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

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

Algoritmy a datové struktury

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

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

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

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

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

Varianty Monte Carlo Tree Search

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

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]

Rekurzivní algoritmy

Herní algoritmy, předn. 2,3

Rozhodovací stromy a jejich konstrukce z dat

Složitost her. Herní algoritmy. Otakar Trunda

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

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

Datové struktury Úvod

Klasifikační stromy. Metriku, pro níž je E( C, použijeme jako kořen.

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

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

Intervalové stromy. Představme si, že máme posloupnost celých čísel p 0, p 1,... p N 1, se kterou budeme. 1. Změna jednoho čísla v posloupnosti.

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

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

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

Některé zákony rozdělení pravděpodobnosti. 1. Binomické rozdělení

Alfa-beta algoritmus pro umělou inteligenci hry šachy

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

STROMOVE ALGORITMY Prohledavani do sirky (level-order) Po vodorovnejch carach fronta

přirozený algoritmus seřadí prvky 1,3,2,8,9,7 a prvky 4,5,6 nechává Metody řazení se dělí:

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

přetrénování = ztráta schopnosti generalizovat vlivem přílišného zaměření klasifikátorů na rozeznávání pouze konkrétních trénovacích dat

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

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

Neuropočítače. podnět. vnímání (senzory)

8) Jaké jsou důvody pro použití víceprůchodového překladače Dříve hlavně kvůli úspoře paměti, dnes spíše z důvodu optimalizace

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

2 HRA V EXPLICITNÍM TVARU

bin arn ı vyhled av an ı a bst Karel Hor ak, Petr Ryˇsav y 23. bˇrezna 2016 Katedra poˇ c ıtaˇ c u, FEL, ˇ CVUT

8. Geometrie vrací úder (sepsal Pavel Klavík)

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

Monte Carlo Tree Search. Marika Ivanová

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

Stromy, haldy, prioritní fronty

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

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

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

Předmět: Algoritmizace praktické aplikace

PROHLEDÁVÁNÍ GRAFŮ. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

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

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

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

Výpočetní složitost I

Extrakce a selekce příznaků

VYHLEDÁNÍ NEJDELŠÍHO SHODNÉHO PREFIXU V FPGA

Cílem kapitoly je seznámit studenta se seznamem a stromem. Jejich konstrukci, užití a základní vlastnosti.

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

ALG 04. Zásobník Fronta Operace Enqueue, Dequeue, Front, Empty... Cyklická implementace fronty. Průchod stromem 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

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

Heuristiky, best-first search, A* search

Dynamic programming. Optimal binary search tree

Úvod do teorie her

Základy umělé inteligence

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

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

Algoritmy pro práci s neúplnou informací

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

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

Dynamické programování


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

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:

Compression of a Dictionary

DYNAMICKÉ PROGRAMOVÁNÍ A PROBLÉM BATOHU

Grafové algoritmy. Programovací techniky

Genetické programování

A4B33ZUI Základy umělé inteligence

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

Optimalizace & soft omezení: algoritmy

Regresní a korelační analýza

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

R zné algoritmy mají r znou složitost

Složitosti základních operací B + stromu

Geometrické indexování a dotazování multimediálních dat

GRAFY A GRAFOVÉ ALGORITMY

GENERAL GAME PLAYING Marika Ivanová Seminář Herní Algoritmy,

6. T e s t o v á n í h y p o t é z

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

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

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.

13. Třídící algoritmy a násobení matic

Geneticky vyvíjené strategie Egyptská hra SENET

Algoritmizace prostorových úloh

Transkript:

Počítačové šachy Otakar Trunda

Hraní her obecně Hra je definovaná pomocí: Počáteční situace Funkce vracející množinu přípustných tahů v každé situaci Ohodnocení koncových stavů Našim cílem je najít strategii pro úspěšné hraní hry.

Algoritmus Minimax Nejjednodušší algoritmus Najde vždy optimální strategii Prochází celý strom hry Časová složitost kde b 35-38

Minimax - výsledek

α-β prořezávání Pozorování: Minimax hodnota kořene nezávisí na hodnotách všech vrcholů stromu Algoritmus α-β prořezávání: Stejný princip jako minimax, ale prohledává jen to, co je třeba

α-β prořezávání - příklad

α-β prořezávání - kód function SearchMax(node, α, β) if node is a terminal node return the value of node best = - foreach child of node score := SearchMin (child, α, β) best := max(best, score) if best β return best α := max(α, best) return best function SearchMin(node, α, β) if node is a terminal node return the value of node best = foreach child of node score := SearchMax (child, α, β) best := min(best, score) if best α return best β := min(β, best) return best

α-β kvíz α-β najde stejný nejlepší tah jako Minimax? ANO α-β ohodnotí nejlepší tah stejně jako Minimax? ANO α-β ohodnotí všechny tahy stejně jako Minimax? NE α-β zachová pořadí tahů stejně jako Minimax? NE

Efektivita α-β prohledávání Nejlepší případ: Efektivní větvící faktor Časová složitost Dvojnásobná hloubka oproti Minimaxu Nejhorší případ: Žádné prořezávání, větvící faktor b Časová složitost + režie navíc Pomalejší než Minimax

α-β nejlepší případ

Efektivita prořezávání Množství prořezaných větví závisí na velikosti intervalu <α, β> Zvyšování efektivity: Metoda okénka Úderné tahy a Killery Nulové okno - algoritmy typu Scout Null-move heuristika Futility pruning, Delta pruning a další

Killer heuristika Killer: dobrý tah, který (hodně) zmenšil interval <α, β> Během prohledávání udržujeme tabulku killerů, tyto tahy zkoušíme jako první Zobecnění: History heuristika Kdykoliv najdeme killer, inkrementujeme hodnotu čítače u tohoto tahu Tuto hodnotu použijeme pro řazení tahů při dalším prohledávání

Metoda okénka Každý killer zmenší interval <α, β> Na začátku nastaven na <-, > prohledáváme mnoho špatných tahů Metoda okénka: Předem odhadneme hodnotu nejlepšího tahu Interval nastavíme kolem této hodnoty Při špatném nastavení, musíme prohledávat znovu!

Metoda okénka Při prohledávání s nastaveným intervalem <α, β> mohou nastat 3 případy: Nalezneme řešení v intervalu Nalezneme pouze řešení < α tzv. Fail-low OK Prohledáme znovu s intervalem <-, α> Nalezneme pouze řešení > β tzv. Fail-high Prohledáme znovu s intervalem < β, >

Nulové okno Prohledává s oknem velikosti <α, α+1> Pouze testuje, zda je skutečná hodnota menší nebo větší než α Algoritmus Scout: Heuristicky odhadne nejlepší tah Spočítá jeho hodnotu Pomocí nulového okna dokáže, že ostatní tahy jsou horší

Algoritmus NegaScout function negascout(node, depth, α, β) if node is a terminal node or depth = 0 return the heuristic value of node b := β // initial window is (-β, -α) foreach child of node score := -negascout (child, depth - 1, -b, -α) if α < score < β and child is not first child // check if null-window failed high score := -negascout(child, depth - 1, -β, -α) α := max(α, score) if α β return α // Beta cut-off b := α + 1 // set new null window return α // full re-search

Null-move heuristika Pozorování: Téměř vždy je lepší zahrát tah, než nedělat nic Null-move heuristika - myšlenka: Pokud po vynechání tahu je hodnota pozice větší než β, pak bude větev stejně odřezaná Hodnotu podstromu stačí spočítat do nějaké malé hloubky (typicky 3) Pokud heuristika selže, vrátí alespoň killer pro další hladinu Nelze použít vždy

Futility Pruning Jedná se o tzv. Forward pruning Ořezává větve, které mají malou naději překonat hodnotu α Odhaduje maximální možnou změnu hodnoty pozice za 1 tah Příklad: prořezává větve 1 tah před limitní hloubkou pokud hodnotapozice < α - hodnotanejsilnejsifigury - konstanta Hrozí ztráta optimálního řešení, nutno používat opatrně

Nedokonalé strategie Z časových důvodů nelze prohledat celý strom Prohledáváme jen do určité hloubky, kde použijeme heuristický odhad výsledku Výpočet skončí v požadovaném čase, ale získaná strategie nemusí být optimální

Další techniky pro zvýšení výkonu Singulární prodloužení a Quiescence search jako řešení problému horizontu Databáze zahájení a koncovek Transpoziční a zamítací tabulky Kombinace popsaných metod pomocí Iterativního prohlubování

Problém horizontu (1) Prohledání tahu za limitní hloubkou může dramaticky změnit hodnotu pozice Příklad:

Problém horizontu (2) Odsouvání nevyhnutelné události za horizont (často pomocí obětí materiálu) Příklad: Snaha oddálit ztrátu dámy: 1. Sg2+ 2.Kxg2 h4-h3+ 3. Kxh3 g5-g4+ 4.Kxg4 atd.

Problém horizontu - řešení Quiescence search: Prohledáváme i za limitní hloubku, ale pouze vybrané tahy Prohledávání končí, až když se pozice uklidní

Quiescence search Pozice je typicky považována za neklidnou pokud je možné sebrat nějaký kámen je možné proměnit pěšce je možné dát šach Speciální případ metody zvané Singulární prodloužení Mnoho dalších modifikací např. Botvinnik- Markoff Extension

Databáze zahájení a koncovek Mohou výrazně zlepšit výkonnost programu Částečně eliminují problém s různými prioritami v zahájení a koncovce Zahájení: Praxí ověřené varianty, několik desítek tahů Koncovky: Optimální strategie až do matu Nejdelší vyřešená koncovka: 7 kamenů, lze vynutit mat za 517 tahů

Transpoziční tabulky Na stejný uzel můžeme během prohledávání narazit vícekrát Jednou spočítané hodnoty lze uložit a později znovu použít Velmi efektivní zejména při použití iterativního prohlubování U prozkoumaného uzlu můžeme uložit: Výsledek statické ohodnocovací funkce Minimax hodnotu podstromu do určité hloubky Seznam přípustných tahů v dané pozici (seřazený od nejlepších) a další informace

Iterativní prohlubování Namísto prohledání do hloubky n, hledáme postupně do hloubky 1,2,3,,n Asymptoticky stejná časová složitost V praxi mírně vyšší, ale lze výrazně zlepšit pomocí transpozičních tabulek Výpočty z předchozích vrstev lze výhodně použít pro heuristické odhady Metoda okénka odhad hodnoty pozice Killery Pořadí tahů pro Scout, atd

Statická ohodnocovací funkce Výrazně ovlivňuje herní sílu enginu Měla by odpovídat skutečné ceně pozice Typicky se kombinují materiální i poziční faktory Mnoho ručně nastavených parametrů

Netradiční přístupy Nové možnosti při programování šachových enginů Využití evolučních algoritmů a neuronových sítí Nevhodné jako úplná náhrada prohledávacího algoritmu Lze použít pro nalezení kvalitní ohodnocovací funkce Velké časové nároky, proto se často používá zjednodušená doména (např. koncovka)

Projekt NeuroChess Snaží se naučit neuronovou síť na ohodnocování pozice Učí se podle konečného výsledku partie Sofistikované předzpracování vstupních dat, propracovaný algoritmus učení Přesto učení trvalo 2 týdny na 20 počítačích, poměrně slabé výsledky

Řešení koncovky K+V x K pomocí neuronové sítě Bez prohledávacího algoritmu Snaha klasifikovat pozici podle počtu tahů zbývajících do matu Učení podle databáze koncovek Dosažený výsledek: 3 skryté vrstvy s celkem 82 neurony doba učení 4 hodiny úspěšnost klasifikace přes 80%

Děkuji za pozornost