Dokumentace programu piskvorek

Podobné dokumenty
Základy umělé inteligence

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

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

Úvod do teorie grafů

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

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

Algoritmy pro hraní tahových her

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

A4B33ZUI Základy umělé inteligence

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

Teorie her(povídání ke čtvrté sérii)

3. ANTAGONISTICKÉ HRY

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

Teorie grafů. zadání úloh. letní semestr 2008/2009. Poslední aktualizace: 19. května First Prev Next Last Go Back Full Screen Close Quit

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

Grafy. RNDr. Petra Surynková, Ph.D. Univerzita Karlova v Praze Matematicko-fyzikální fakulta.

Úvod do informatiky. Miroslav Kolařík

Základy umělé inteligence

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

ANTAGONISTICKE HRY 172

Metody návrhu algoritmů, příklady. IB111 Programování a algoritmizace

ADT STROM Lukáš Foldýna

UNIVERZITA PARDUBICE

Výhody a nevýhody jednotlivých reprezentací jsou shrnuty na konci kapitoly.

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

Prohledávání do šířky = algoritmus vlny

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

Varianty Monte Carlo Tree Search

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

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

Základy programování. Úloha: Eratosthenovo síto. Autor: Josef Hrabal Číslo: HRA0031 Datum: Předmět: ZAP

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:

TEORIE HER

Genetické algoritmy. Vysoká škola ekonomická Praha. Tato prezentace je k dispozici na:

Algoritmizace prostorových úloh

Grafy. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 13.

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

Úvod do teorie her

Přijímací zkouška - matematika

Vzdálenost uzlů v neorientovaném grafu

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

Dokumentace programu sdc

Domény. Petr Štěpánek. S využitím materialu Krysztofa R. Apta

Dijkstrův algoritmus

PROJEKT MINY - DOKUMENTACE

59. ročník Matematické olympiády 2009/2010

Hledání správné cesty

Zadání soutěžních úloh

Základy algoritmizace. Pattern matching

TGH13 - Teorie her I.

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

Úvod do počítačových sítí

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

Programy na PODMÍNĚNÝ příkaz IF a CASE

Piškvorky. Gymnázium, Praha 6, Arabská 16. Kristofer Filip, 1.E. Květen Stránka 1. předmět programování, vyučující Tomáš Obdržálek

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

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

Grafové algoritmy. Programovací techniky

Václav Jirchář, ZTGB

Grafové algoritmy. Programovací techniky

Drsná matematika III 10. demonstrovaná cvičení Kostry grafů

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

Zadání a řešení testu z matematiky a zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia od podzimu 2016

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

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. 72 studentů

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

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

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

Příručka aplikace Bovo

Algoritmy. Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 15. dubna / 39

LinuxDays 2017 Ondřej Guth GNU grep LD 17 1 / 14

( + ) ( ) f x x f x. x bude zmenšovat nekonečně přesný. = derivace funkce f v bodě x. nazýváme ji derivací funkce f v bodě x. - náš základní zápis

{Q={1,2};S,T;u(s,t)} (3.3) Prorovnovážnéstrategie s,t vehřesnulovýmsoučtemmusíplatit:

Základy informatiky. 07 Teorie grafů. Kačmařík/Szturcová/Děrgel/Rapant

( ) ( ) ( ) ( ) Skalární součin II. Předpoklady: 7207

Otázku, kterými body prochází větev implicitní funkce řeší následující věta.

2. úkol MI-PAA. Jan Jůna (junajan)

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.

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

zejména Dijkstrův algoritmus pro hledání minimální cesty a hladový algoritmus pro hledání minimální kostry.

programátorský manuál

Automaty a gramatiky(bi-aag) Motivace. 1. Základní pojmy. 2 domácí úkoly po 6 bodech 3 testy za bodů celkem 40 bodů

Čtvercové, krychlové a teseraktové minipiškvorky

ALGORITMY A DATOVÉ STRUKTURY

Šifrování/Dešifrování s použitím hesla

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

5 Orientované grafy, Toky v sítích

2.2. SČÍTÁNÍ A NÁSOBENÍ MATIC

Zadání a řešení testu z matematiky a zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia od podzimu 2015

Úvod do teorie her

Zadání semestrálního projektu Algoritmy II. letní semestr 2017/2018

OPTIMALIZACE. (přehled metod)

Matematická analýza pro informatiky I. Limita posloupnosti (I)

14. cvičení z PSI. 9. ledna Pro každý stav platí, že všechny hrany z něj vycházející mají stejnou pravděpodobnost.

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

Pokud nebude na příkazové řádce uveden právě jeden argument, vypište chybové hlášení a stručný

I. D i s k r é t n í r o z d ě l e n í

NABÍDKA TÉMAT SOČ PRO STŘEDNÍ ŠKOLY

Úvod do informatiky. Miroslav Kolařík. Zpracováno dle učebního textu R. Bělohlávka: Úvod do informatiky, KMI UPOL, Olomouc 2008.

Transkript:

Dokumentace programu piskvorek Zápočtového programu z Programování II PRM045 Ondřej Vostal 20. září 2011, Letní semestr, 2010/2011 1 Stručné zadání Napsat textovou hru piškvorky se soupeřem s umělou inteligencí. 2 Přesnější zadání Program bude interaktivní. Rozhraní programu bude textové. Po spuštění program začne v nekonečném cyklu pracovat následujícím způsobem: 1) vypíše stav hracího pole a vyzve hráče na taku k zadání dalšího tahu; 2) pokud je na tahu počítač, pak dojde k automatickému vygenerování tahu; 3) pokud žádný z kráčů nevyhrál a hrací pole ještě není zaplněné, pokračuje se bodem 1). Velikost herního pole jde nastavit. Po jejím nastavení je program nutno překompilovat. Stejně tak bude možné nastavit v jistém smyslu pravidla. Ondřej Vostal je studentem Matematiky, 4. semestr, Matematicko-fyzikální fakulta Univerzity Karlovy v Praze. mailto:ondrej.vostal@vostal.net. 1

2.1 Popis parametrů určujících pravidla hry Následující parametry lze nastavit v hlavičce zdrojového souboru programu. Program je nutné překompilovat. To lze udělat na standartním GNU systému (testováno na Gentoo GNU/Linux) pomocí (máme-li v aktuálním adresáři distribuční soubor piskvorek.tar) $ tar xf piskvorek.tar $ cd piskvorek $ make $./piskvorek BOARD_WIDTH. Šířka hracího pole. BOARD_HEIGHT. Výška hracího pole. WS. Kolik kamenů nepřetržitě v jednom ze směrů definovaném v DIR vyhrává hru. DIR. Pole, které určuje výherní směry, ve smyslu předchozího bodu. 3 Prostředky implementace a použité algoritmy Program budu impletovat v Pascalu. Testování bude probíhat v gpc (GNU Pascal compiler, gcc-3.4.5). Pro implementaci umělé inteligence použiji negamaxovou modifikaci megamaxového algoritmu s alfa-beta ořezáváním. Jako hodnotící funkci použiji maximum z maximálních počet po sobě jdoucích kamenů v jednotlivých směrech definovaných v pravidlech (konstanta DIR). 3.1 Umělá inteligence pro konečné hry s nulovým součtem a úplnou informací Hra piškvorky, pro kterou chci implementovat umělou intelogenci je konečnou hrou s nulovým součtem a úplnou informací. Podle Shannonovy věty je možné 2

tedy hledat pro počítačového hráče neprohrávající strategii. Takovou strategii je možné hledat pomocí negamaxového algoritmu. Já jsem použil pro hledání vhodného dalšího pohybu pro počítačového protivníka algoritmus negamaxu s alfa-beta ořezáváním a prohledáváním stromu možných tahů pouze do omezené úrovně. 3.1.1 Reprezentace hry pomocí stromu možných tahů a jejich hodnot Každému hracímu poli, reprezentovanému maticí čísel B = (b yx ) typu H W (BOARD_HEIGHT BOARD_WIDTH), kde b yx {0, 1, 2} značící, který hráč má pole obsazené, příp. 0, je-li pole neobsazeno, přiřadím přirozené číslo c(b). Hodnoty c(b) lze uspořádat do stromu, ve kterém každá úroveň odpovídá jistému kolu hry. Hodnoty c(b) odrážejí vhodnost pozice pro hráče 1. Čím vyšší hodnota, tím je situace pro hráče 1 výhodnější; aby vyhrál, snaží se je maximalizovat. Jelikož jde o hru s nulovým součtem hodnoty c(b) odrážejí i nevýhodnost pozice pro hráče 2, který se je bude zase snažit minimalizovat. Strom možných tahů s ohodnoceními je možné vygenerovat v každém stavu hry B = (b yx ), kdy je na tahu hráč p {1, 2}. Strom S = (V, E) (V budiž jeho vrcholy a E jeho hrany) lze generovat rekurzivně následujícím algoritmem. Algoritmus 1. 1. Vygeneruj možné tahy M = {(y, x); 1 y H, 1 x H, b yx = 0}. 2. Polož V = {B} {B yx ; B yx je matice stejná jako B, až na to, že na místě (y, x) je číslo p a ne 0, (x, y) M} a E = {(B, v); v V } 3. Pro každý vrchol z V spočítej podle Algoritmu 1 graf S = (V, E ). Výsledkem je V = V V, E = E E. 3

V tomto stromu se pak hráč na tahu vydá takovým směrem, aby maximalizoval minimální ohodnocení v listech, do kterých se v tomto směru může dostat (ohodnotit je tedy potřeba jen listy). 3.2 Herní horizont Výpočty herního stromu/hodnotící funkce končí v listech, ve kterých jeden z kráčů vyhraje, nebo dojde k remíze. I bez prořezávání je tedy výpočet konečný. 3.3 Prohledávané tahy Množinu prohledávaných tahů (v Algoritmu 1, bod 1, M) jsem pro zrychlení výpočtu zmenšil. Výhodné tahy jsou intuitivně vždy jen takové, které jsou poblíž již položených buď mých, nebo soupeřových kamenů. Množina M v programu piskvorek tedy obsahuje pouze takové dvojice (y, x), které jsou na hracím poli a ještě k tomu jsou od posledního mého (počítačový hráč), nebo protivníkova tahu v nějakém z herních směrů vzdálena o ne více, než WS políček. 3.4 Alfa-beta prořezávání negamax Výpočet kompletního stromu podle Algoritmu 1 by byl náročný. Práci si ale můžeme ušetřit prořezáváním. Hodnotící funkce v listech budeme vyhodnocovat stále ve stejném směru posloupnost herních směrů, podle kterých se generují prohledávané tahy je stále stejná. V každém z vrcholů stromu pak budeme definovat dvě hodnoty: α a β pro hráče na tahu. α je minimální hodnota hodnotící funkce, kterou hráč na tahu může dosáhnout v některém z do teď prohledaných listů. β je minimální hodnota hodnotící funkce, kterou může dosáhnout protivník v některém z do teď prohledaných listů. Dojde-li k tomu, že je pro vrchol V β < α je možné zpracovávání potomků V ukončit, neboť pak mají oba hráči lepší možnosti v jiných tazích. 4

Negamaxový algoritmus pak využívá toho, že pro α a β ve vrcholu V a pro α a β ve vrcholu V, který je potomkem V a ve kterém ještě nebylo nic prohledáno platí: α = β a β = α. 3.5 Hodnotící funkce Funkci c nazývám hodnotící funkcí. Její hodnoty určuji v programu piskvorek podle následujícího předpisu: Hodnota c(b) je délka nejdelšího retězce (po sobě jdoucích kamenů bez soupeřova, nebo prázdného pole) hráče 1, plus WS*WS, pokud hráč 1 má řetězec délky WS, mínus délka nejdelšího retězce kamenů hráče 2, mínus WS*WS, pokud hráč 2 má řetězec délky WS. 3.6 Postupný výpočet hodnotící funkce Hodnotící funkci počítám postupně s použitím podkladů o výpočtech z minulých kol. Pro každý směr a každého hráče vytvořím další hrací pole na kterém je při každém tahu v každém jeho políčku, číslo udávající jaká je délka nejdelšího souvislého řetězce kamenů daného hráče končícího na daném poli při postupu v daném směru. Čísla v těchto pomocných polích se pochopitelně mohou pouze zvětšovat, neboť kameny nelze odebírat. Při každém tahu stačí upravit hodnotu pouze políček, která mohla být ovlivněna. Protože mě zajímá délka řetězců v daném směru, stačí se nejprv podívat na délku řetězce končícího na poli proti směru; ta nám umožní spočítat a zaznamenat délky řetězců na poly posledního taku a po směru zájmu až k poly s nulou - nejdelší řetězec končící na takovém poli má délku nula, tedy na daném poli není kámen žádného hráče. Délku řetězce si pro každý směr a hráče označíme l i,d, kde i značí hráče a d směr. Pro výpočet vlastní hodnoty c(b) potřebuji znát hodnotu nejdelšího řetězce na hracím poli. Jediné řetězece, které se však mohou v jednom tahu prodloužit jsou ty, na které navazuje právě položený kámen. Délka nejdelšího řetězce pro hráče i v tahu t je tedy L i,t = max{max (d) l i,d, L i,t 1 }. 5

4 Zhodnocení Úkol, ač se zdál zpočátku triviální, překvapil svojí obtížností. Hodnotící funkci bylo nutné počítat postupně a výpočet si co nejvíce zjednodušovat. Když jsem s programováním a návrhem začínal, nemyslel jsem si, že by pro počítače dnešního výkonu měl být ne příliš optimalozovaný alpha-beta ořezávací algoritmus pro umělou inteligenci k piškvorkům oříšek. Ukázalo se však, že s nepromyšleným programem se ani výkonný počítač ve výpočtu daleko nedostane. 6