Bakalářská práce
Transkript
VYSOK É U ČEN Í TECHNICK É V BRN Ě FAKULTA INFORMA ČN ÍCH TECHNOLOGI Í Ukázka využitı́ UI v počı́tačových hrách Bakalářský projekt 2005 Michal Hejtmánek Ukázka využitı́ UI v počı́tačových hrách Odevzdáno na Fakultě informačnı́ch technologiı́ Vysokého učenı́ technického v Brně dne 2. května 2005 c Michal Hejtmánek, 2005 Autor práce tı́mto převádı́ svá práva na reprodukci a distribuci kopiı́ celého dı́la i jeho částı́ na Vysoké učenı́ technické v Brně, Fakultu informačnı́ch technologiı́. Prohlášenı́ Prohlašuji, že jsem tuto bakalářskou práci vypracoval samostatně pod vedenı́m Ing. Pavla Slavı́čka. Uvedl jsem všechny literárnı́ prameny a publikace, ze kterých jsem čerpal. ....................... Michal Hejtmánek 2. května 2005 Abstrakt Bakalářská práce popisuje vliv akademické UI na rozvı́jejı́cı́ se hernı́ průmysl v podobě zrodu a vývoje zábavnı́ inteligence a jejı́ zpětný vliv na akademickou. Hlavnı́ část práce je zaměřena na porovnánı́ zástupců dvou základnı́ch směrů hernı́ umělé inteligence, na logické hře piškvorky: Jednı́m je matematický Goliáš“, typický reprezentant hrubé sı́ly, který prohledává stavový prostor ” o velké šı́řce, ale malé hloubce – kvůli geometrickému nárůstu zkoumaných stavů. Druhým je David“, soustředı́ se jen na pár nadějných tahů, ale z těch si vybı́rá velmi důkladně. Při ” hledánı́ do hloubky mu roste počet zkoumaných stavů pouze aritmetickou řadou. Vede si záznam o předešlých hrách, snažı́ se vyvarovat stejných chyb a pokoušı́ se využı́t i odkoukaných zkušenostı́ ve svůj prospěch. V bakalářské práci je uveden podrobný popis u obou algoritmů, jejich princip, chovánı́ v ukázkových situacı́ch a srovnávacı́ testy. Klı́čová slova AI middleware, umělá inteligence, zábavnı́ inteligence, znalostnı́ inteligence, Turinguv test, model neuronu, Mini-max, AlfaBeta, heuristická funkce, backtracking, hrubá sı́la, bot, konečný automat, pathfinding, genetické algoritmy, evolučnı́ algoritmy, neuronová sı́t’, zrcadlové kombinace, posuvná modifikace, vztažný kvadrant, kritický tah Poděkovánı́ Za zajı́mavý design hry (viz screenshot přı́loha B) bych rád poděkoval grafikům Karlu Böhmovi a Vı́tězslavu Šudomovi a za mnoho cenných rad a nekonečnou trpělivost Ing. Pavlu Slavı́čkovi. Abstract This bachelor essay describes the influence of the academic artificial intelligence algorithms on the game industry. It tries to discover, how these algorithms affect “entertainment intelligence”. Alghoritms used in a great variety of games or automats, and vice-versa. The main part of the text focuses on the comparation of two representatives of the main trends in the entertainment intelligence. It observes these two playing together a simple logic game five-in-a-row. I call the first algorithm “Goliath”, because it is a typical representant of brute strenght, but it does not seem to be very smart. It searches fairly through the wide state space of all possibilities, which the game offers. Because of this, it cannot go very deep. The amount of states, which it examines, increases very rapidly by each step deeper. The second one, Goliath’s opponent, I call “David”. It concentrates its attention only on a few, but promising moves. It can then choose from them very carefully, because it has not so many states to explore, and the amount of the states does not increases as fast as by Goliath, when it tries to go deeper. David has also a memory, and it remembers the previous games. It can learn from its own, but also from the opponent’s successes. In this technical essay is detailed description of both algorithms, their principles, behaviours in sample situations and the comparative tests. Keywords AI middleware, artificial intelligence, entertainment intelligence, knowledge intelligence, Turing test, neuronal model, Mini-max, AlfaBeta, heuristic function, backtracking, brute strenght, bot, finite automata, pathfinding, genetic algorithm, evolutionary algorithm, neuron network, mirror combination, movable modification, reference quadrant, critical turn Obsah Obsah 6 1 Úvod 8 2 Umělá inteligence 2.1 Rozdı́l mezi inteligencı́ lidskou a umělou . . . . . . . . . . . . . . . . . . . . . . 2.2 Zábavnı́ inteligence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.1 Historie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 9 10 10 3 Typy počı́tačových her a jejich UI 3.1 Logické . . . . . . . . . . . . . . . . . . . . . . 3.2 Takticko-strategické . . . . . . . . . . . . . . . . 3.3 Akčnı́ (3D) . . . . . . . . . . . . . . . . . . . . 3.4 Textové – konverzačnı́ . . . . . . . . . . . . . . 3.5 RPG, Arkády, Adventury, Simulátory, Online-hry 12 12 12 13 14 14 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dva hlavnı́ směry UI 15 5 Úvod k implementaci algoritmů 5.1 Hodnotı́cı́ funkce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Blokovánı́ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 16 17 6 7 8 Goliáš 6.1 Přı́liš hrubá sı́la . 6.2 Odlehčenı́ . . . . 6.3 Mini-max . . . . 6.4 Goliáš vs. Člověk 6.5 Goliáš vs. Goliáš . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 19 19 20 21 22 David 7.1 Záznam znalostı́ . . . . . . . 7.1.1 Kódovánı́ . . . . . . 7.1.2 Vztažný kvadrant . . 7.1.3 Ověřenı́ použitelnosti 7.2 Vyhodnocovacı́ jádro . . . . 7.3 David vs. Člověk . . . . . . 7.4 David vs. David . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 23 24 25 27 27 27 30 . . . . . . . . . . . . . . . . . . . . . . . . . Srovnávánı́ David vs. Goliáš 31 6 OBSAH 9 Závěr 9.1 Dalšı́ možná vylepšenı́ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.2 Zhodnocenı́ přı́nosu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 33 33 33 Kapitola 1 Úvod Bakalářská práce je přehledem typů počı́tačových her, jejich UI a algoritmů které se na ně použı́vajı́. Důraz je kladen na dva hlavnı́ směry vývoje hernı́ UI, jejich teoretické i praktické srovnánı́. Teoretická část popisuje v druhé kapitole principy UI obecně a rozdı́l mezi lidskou a umělou inteligencı́ na hře šachy. Převážná část je věnována hernı́ inteligenci, jejı́mu zrodu, vývoji a očekávané blı́zké budoucnosti. Třetı́ kapitolou následuje ucelený přehled typů dnešnı́ch her, rozbor problematiky jejich EI a nástin algoritmů, které se k jejich řešenı́ použı́vajı́. Čtvrtá kapitola shrnuje teoretickou část do dvou základnı́ch směrů vývoje UI, na hrubou sı́lu a znalostnı́ inteligenci, aby praktická část mohla navázat jejich implementacı́, testovánı́m a porovnánı́m. Praktická část nejprve pátou kapitolou osvětluje společný základ obou typů UI a jejich zasazenı́ do hry piškvorky, na které budou testovány. Kapitoly 6 a 7 podrobně popisujı́ algoritmy zástupců těchto směrů: 1. Reprezentantu hrubé sı́ly, budu řı́kat Goliáš“, protože tato mýtická postava přesně vystihuje ” jeho vlastnosti, které jsou tı́m patrnějšı́. 2. Protikladem Goliáše je David“, představujı́cı́ směr znalostnı́ inteligence. Ten se svojı́ snahou ” učit se a vyvı́jet, vı́ce blı́žı́ lidskému myšlenı́. Obsahuje také zajı́mavou ukázku reprezentace, modifikace a aplikace zı́skaných znalostı́ v nových situacı́ch. Důkladný popis obou algoritmů je doprovázen záznamem ukázkové hry s člověkem. V nı́ předvádı́m na pár kritických situacı́ch slabá mı́sta algoritmů a posuzuji jejich reakce. Demonstrace je zakončena rozborem hry algoritmu proti sobě samému. Celá osmá kapitola rozebı́rá jednotlivé souboje obou algoritmů mezi sebou. Hry se vzájemně lišı́ právě reakcemi rychle se učı́cı́ho Davida, který se snažı́ vyvarovat zaznamenaným prohrám. Závěrečná devátá kapitola je souhrnem a vyhodnocenı́m všech výsledků tohoto teoretického i praktického srovnávánı́ obou směrů a snažı́m se v nı́ podchytit výhody a nevýhody obou přı́stupů. Zbytek kapitoly patřı́ diskusi možných vylepšenı́ a přı́nosu této práce pro mne. 8 Kapitola 2 Umělá inteligence Cı́lem tohoto oboru je naučit stroje inteligentnı́mu chovánı́. Inteligence je vlastnostı́ některých živých organismů. Vznikala a vyvı́jela se v průběhu dlouhého časového intervalu a dnes jim umožňuje optimálně reagovat i na složité projevy prostředı́. Za jejı́ projev považujeme schopnost efektivně řešit různé problémy, v rozumném čase. Představuje určitý stupeň hodnocenı́ kvality řešenı́ i složitých úloh. Máme docela jasnou představu o tom co je kvalitnı́, ale složité je pro každého něco jiného, přı́mo závislé na jeho inteligenci. Lze považovat za různě složité hry: člověče nezlob se, piškvorky, a šachy. Jsou to stolnı́ hry pro dva hráče (napřı́klad), kde je smyslem hry dosaženı́ výhernı́ho postavenı́ dřı́ve, než to udělá protihráč. Lišı́ se předevšı́m počtem, složitostı́ pravidel a množstvı́m přı́pustných tahů. U šachů se odhaduje 1043 ÷ 1050 povolených postavenı́ [3], u piškvorek to bude o poznánı́ méně a o člověče nezlob se ani nemluvě. Co je pro někoho složité, pro jiného být nemusı́. Pojem inteligentnı́“, stejně tak jako složitý“, ” ” chápeme velmi subjektivně. A z toho vyplývá následujı́cı́ definice: Umělá inteligence je nauka o tom, jak konstruovat stroje, jejichž činnost, kdyby ji vykonávali lidé, bychom považovali za projev jejich inteligence. [2] Jednı́m ze zakladatelů této počı́tačové disciplı́ny je Alan Turing. Podle jeho předpokladů měly být počı́tače roku 2000 schopné projı́t takzvaným Turingovým testem. 70% průměrných lidı́ nemělo být schopno po pěti minutách konverzace rozpoznat, že nehovořı́ s člověkem. [1] Odtud také: Chytré je to, co se chytře chová“. ” 2.1 Rozdı́l mezi inteligencı́ lidskou a umělou Byly to právě šachy, hra natolik složitá, že byla do nedávna považována za výhradně lidskou doménu, které prokázaly základnı́ rozdı́l mezi lidskou a umělou inteligencı́. Inteligence počı́tače prozatı́m spočı́vá předevšı́m v hrubé sı́le, kdy propočı́tává obrovské množstvı́ kombinacı́, zatı́mco člověk dokáže okamžitě zavrhnout miliony nevýhodných tahů, což je fakt, ukazujı́cı́ na značný vliv zkušenostı́ na rozhodovánı́ o dalšı́m postupu. Tı́m byl určen dalšı́ směr vývoje UI. Pokusy prokázaly, že největšı́ potenciál inteligence majı́ právě znalosti a jejich aplikace. Naproti tomu vliv vyhodnocovacı́ho aparátu hrubé sı́ly, se s rostoucı́mi zkušenostmi snižuje. I tak, UI založená předevšı́m na slabšı́“, méně perspektivnı́ větvi, v provedenı́ superpočı́tače ” Deep Blue od firmy IBM, porazila v květnu 1997 šachového mistra světa Garry Kasparova. Bylo to 9 KAPITOLA 2. UMĚLÁ INTELIGENCE 10 poprvé v historii, kdy počı́tač zvı́tězil nad špičkovým šachistou. [7] Jen málo šachových počı́tačů si ale může dovolit zkoumat všechny možné pozice až na 9 tahů dopředu, jako Deep Blue. Ten k tomu má ovšem paralelnı́ architekturu s 500 speciálnı́mi procesory, které mu umožňujı́ výkon 400 miliónů analyzovaných pozic za sekundu. Dı́ky nim mu stačı́ na oněch devět tahů dopředu pouze necelé tři minuty, zatı́mco PC by potřebovalo vı́ce než 5 hodin. I tento superpočı́tač byl obohacen o dalšı́ informace, jako napřı́klad záznamy her velmistrů, které mu umožňujı́ odhadovat sı́lu jednotlivých stylů her a zaměřit se na silné tahy. Deep Blue měl v databázi celkem 600.000 her, ale ty mu byly dány omylnými lidmi, efektivnějšı́ by jistě bylo, kdyby si je vytvořil sám, spojenı́m vlastnı́ch neuronů. [6] V polovině roku 2000, oznámila IBM dokončenı́ superpočı́tače tisı́ckrát rychlejšı́ho než Deep Blue. . . 2.2 Zábavnı́ inteligence Označuje se ZI, nebo jako EI (entertainment inteligence). Jejı́m hlavnı́m cı́lem je pobavit hráče a udržet si jeho pozornost. Snažı́ se hráče přesvědčit, že postavy ve hře jsou inteligentnı́, autonomně jednajı́cı́ bytosti a ne pevně předskriptované, bezduché loutky, neschopné vymyslet cokoliv nového a jen do kolečka opakujı́cı́ již známé, předpověditelné a tak nezajı́mavé vzorce chovánı́. Dnes je jednı́m z nejbouřlivěji se rozvı́jejı́cı́ch odvětvı́ zábavnı́ho průmyslu. Vznikla při programovánı́ her, jako snaha neustále překvapovat hráče něčı́m novým a v poslednı́ch letech se začı́ná uplatňovat dokonce i při akademickém výzkumu UI. Složitost, komplexnost a hloubka řešeného problému jsou přı́mo závislé na technických prostředcı́ch a hernı́ch požadavcı́ch. Některé algoritmy musı́ běžet v reálném čase i na průměrných domácı́ch počı́tačı́ch, u jiných se toleruje zpožděnı́ i několika vteřin. 2.2.1 Historie Filozofická otázka: Mohou stroje myslet?“, pocházı́ již ze 17. stoletı́. ” Počátky UI jsou datovány kolem roku 1946 - model neuronu, jenž se doposud mnoho nezměnil. Až do druhé poloviny 90. let byla UI v počı́tačových hrách považována za okrajovou záležitost. Hernı́ vývojáři měli v té době jiné priority: dokonalejšı́, realističtějšı́ a tehdy na procesor velice náročnou grafiku. To mělo za následek málo času procesoru na jakoukoli UI a tak se o nějaké hernı́ inteligenci nedalo moc hovořit. Na sklonku 90. let se situace výrazně zlepšila s rozmachem grafických akcelerátorů, který vedl k podstatnému snı́ženı́ zatı́ženı́ procesoru, aby se ten mohl věnovat i náročnějšı́m algoritmům. Jedná se o typický přı́klad vzájemné závislosti akademické a zábavnı́ umělé inteligence. Vývoj her zapřı́činil rozvoj hardwaru, což umožnilo i rozmach hernı́ UI a to přineslo pozornost a prostředky i k té akademické. V dnešnı́ době můžeme sledovat dalšı́ ukázku této závislosti. Grafika již dosahuje svých meznı́ch“ ” možnostı́ a tak se vývojáři snažı́ hru oživit autonomnı́m chovánı́m, snažı́cı́m se reagovat přı́mo na změny hráčovy taktiky. Již se neomezuje na pouhé střı́dánı́ předem nastavených strategiı́, přechody mezi fázemi útoku či obrany. Dnešnı́ hernı́ UI se vyvı́jı́ akademickým směrem k zapamatovánı́ si zkušenostı́, učenı́ se a vymýšlenı́“ nových řešenı́. To vede k výraz” nému pokroku v obou oborech, který přinášı́ prvnı́ ovoce v podobě standardizace základnı́ch algoritmů UI a jejich implementaci do knihoven. KAPITOLA 2. UMĚLÁ INTELIGENCE 11 Řı́ká se jim AI middleware a jedná se o obdobu 3D grafických knihoven pro oblast hernı́ UI. Vývojáři tak nemusı́ stále znova implementovat ty stejné algoritmy, ale mohou jı́t dál a soustředit se na zkvalitňovánı́ UI, jejich efektivnějšı́m použitı́m, přı́padně přidávánı́m nových. Vznikajı́ i nová slovı́čka - jako Bot“ - což je označenı́ pro hernı́ postavu ovládanou počı́tačem, ” snažı́cı́ se simulovat lidské chovánı́, at’ už jako protivnı́k, nebo spoluhráč člověka. [5] V budoucnu předpokládám rozvoj a standardizaci těchto AI knihoven a s rostoucı́ náročnostı́ na čas procesoru i odpovı́dajı́cı́ hardwarovou podporu. Historie se tedy nejspı́še zopakuje pro hernı́ UI stejně, jako tomu bylo u hernı́ grafiky a tak dá vzniknout AI akcelerátorům“. ” Rovněž lze předpokládat, že s rostoucı́ důležitostı́ a nároky se stanou natolik specializovanými zařı́zenı́mi, až opustı́ univerzálnı́ sběrnici pro obyčejná zařı́zenı́ a vydobudou si i své vlastnı́ mı́sto na základové desce, jakousi obdobu AGP portu. UI tedy představuje přirozené pokračovánı́ počı́tačové revoluce a předpokládám i masivnı́ využitı́ na poli operačnı́ch systémů. Tendence k automatickým optimalizacı́m dle potřeb konkrétnı́ho uživatele, bez zásahu programátora, nebo údržbáře, lze sledovat u nových operačnı́ch systémů už nynı́. Dalšı́m krokem tedy nejspı́š bude samovývoj i bez zřejmých potřeb (podnětů) uživatele. Kapitola 3 Typy počı́tačových her a jejich UI Jak jsem uvedl výše, v současné době je sice snaha o univerzálnı́ myslı́cı́ UI použitelnou do vı́ce her, na řešenı́ různých úloh, ale bohužel nenı́ ještě tak daleko, abychom měli jednu UI použitou ve dvou různých hrách, jako třeba piškvorky a šachy. A to se jedná o stejný typ hry. Tato kapitola je věnována výčtu typů her, rozboru požadavků na jejich UI a jejich algoritmům: 3.1 Logické Typicky deskové tahové hry pro dva hráče s šachovnicovým hernı́m polem, na které se dle zadaných pravidel rozmist’ujı́ figurky, kameny, nebo jakékoli jiné značky, znázorňujı́cı́ současný stav, který se postupem hry měnı́ až do stavu výhry, prohry, nebo remı́zy. UI se zde použı́vá výhradně jako protihráč a hratelnost bývá postavena na volitelné obtı́žnosti. Základem každé umělé inteligence je matematika. Je to obor silně deterministický a tohle je jediný typ hry, od které právě takovéto chovánı́ očekáváme. K této deterministické UI stačı́ pár jednoduchých algoritmů na posouzenı́ situace a provedenı́ takového tahu, který vyjde v posuzované hloubce (tahů dopředu) jako nejvýhodnějšı́. Typicky se k tomu použı́vá algoritus: mini-max, přı́padně s AlphaBeta prořezávánı́m stromu a heuristická funkce na hodnocenı́ situace. Právě na detailnı́ popis, srovnánı́ a vyhodnocovánı́ těchto základnı́ch algoritmů logické UI na hře piškvorky, se budu v dalšı́ch článcı́ch soustředit. Algoritmy lze dále rozšı́řit o záznam zkušenostı́, čı́mž se hra může stát zábavnějšı́, protože bude věrněji simulovat lidského (učı́cı́ho se) protihráče. Tento protihráč je ale v některých směrech schopnějšı́ než protihráč lidský. Učı́ se rychleji a nedělá chyby“. Člověk je zase kreativnějšı́ a lépe ” řešı́ nové situace. A to dělá tento typ her velmi atraktivnı́: souboj lidské vynalézavosti a strojové preciznosti. 3.2 Takticko-strategické U tohoto typu her je hráč na úrovni vládce. Jeho strategickým úkolem je udržet ekonomickou, vědeckou, vojenskou, politickou, přı́padně ještě nějakou dalšı́ složku řı́še v rovnováze tak, aby co nejefektivněji podporovala jeho taktické dovednosti. Pokud bude mı́t tato společnost vyvinutou jednu složku na úkor ostatnı́ch, stane se zranitelnou. Prvnı́m úkolem UI – jako protihráče – je vystihnutı́ a využitı́ těchto slabých mı́st k dosaženı́ vı́tězstvı́. Sloužı́ mu k tomu série předem naprogramovaných strategiı́ na každou přı́ležitost“, jež ” kombinuje podle momentálnı́ potřeby, závislé na činnosti hráče. Takto postavený hernı́ systém bývá 12 KAPITOLA 3. TYPY POČÍTAČOVÝCH HER A JEJICH UI 13 velice dynamický. Počı́tač i hráč musı́ s předstihem reagovat na vznikajı́cı́ situace a odhadovat soupeřův obranný i útočný potenciál. Aby byla důležitost nejen strategie, ale i taktiky ještě posı́lena, hra umožňuje kombinovat několik způsobů útoku i obrany: vzdušnou, pozemnı́, námořnı́, atp. Cı́lem hry je rovnováha mezi kvalitou a kvantitou jednotek i jejich dobré taktické využitı́ k poraženı́ nepřı́tele. Takovýchto možnostı́ na poraženı́ nepřı́tele bývá hned několik: vyhlazenı́, vyhla-dověnı́, koupenı́, apod. Typicky je hra postavena na surovinách, vynálezech, civilnı́ch a vojenských jednotkách. Když nebude mı́t hráč dost civilnı́ch jednotek na těžbu surovin, bude růst jeho společnosti omezen. Naopak pokud investuje přı́liš do civilnı́ch jednotek na úkor vojenských, stane se jeho společnost zranitelnou a bude snadno přemožen. Po stránce strategické se nejedná o žádnou jednoduchou záležitost. Hry obsahujı́ obrovská množstvı́ velmi komplikovaných pravidel a to nedává mnoho prostoru pro využitı́ hrubé sı́ly UI. Proto se většinou pouze“ přepı́najı́, přı́padně obměňujı́ strategie již přeprogramované, nebo se ” některé prvky nahodile měnı́ aby se člověku ztı́žil odhad dalšı́ho počı́tačova kroku. Druhým úkolem UI je taktika, ale po této stránce bývajı́ algoritmy dost ošizeny. Počı́tač většinou kvůli strategiı́ nemá na důmyslnějšı́ taktické algoritmy čas. Zde majı́ tedy vývojáři ještě co dohánět. Třetı́m úkolem UI je prováděnı́ elementárnı́ho chovánı́ hernı́ch jednotek: Pohyb, útok, obrana, hlı́dka, přeskupenı́ atd. Zde se použı́vajı́ konečné automaty a algoritmy BFS, DLS, A* a mnoho dalšı́ch, napřı́klad pro nalezenı́ nejrychlejšı́ch cest členitým terénem. Tyto algoritmy musı́ být velmi rychlé, protože jsou použı́vány desı́tkami, až stovkami jednotek, pohybujı́cı́ch se v reálném čase. Právě tato inteligence bývá terčem nejčastějšı́ kritiky. Poslat na bojiště oddı́l 50 hezky sešikovaných jednotek, aby tam došla sotva polovina a to ještě po jednom, kvůli přı́liš členitému terénu na použitý jednoduchoučký algoritmus. . . hráče moc nepotěšı́. 3.3 Akčnı́ (3D) U těchto her je UI jen v jediné podobě: bot“ - dalšı́ postava ve hře, počı́tačový protihráč, nebo ” spoluhráč. Jeho inteligence je řešena na třı́ základnı́ch úrovnı́ch: Hernı́ záměr je snaha připravit si výhodné situace sbı́ránı́m taktických informacı́ o terénu, překážkách, skladech, vlajkách, oblı́bených mı́stech pobytu nepřátel, dobrých úkrytech, nebo mı́st pro přepadenı́ ze zálohy, apod. Právě zde se začı́ná využı́vat akademické inteligence. Volba strategie počı́tače závisı́ hlavně na zkušenostech, zı́skávaných právě hrou proti člověku. Bot se tedy snažı́ opakovaně neskočit na připravenou léčku a naopak zkusı́ využı́t této znalosti ve svůj prospěch, pro vlastnı́ proti-léčku, napřı́klad nečekaným přı́chodem čı́hajı́cı́mu protivnı́kovi do zad. Také brzy zjistı́ že je dobré se, vybavit obrannými prostředky jako jsou vesta, či helma, pokud jsou k dispozici a nebo že pokud je zraněn, je lépe se ukrýt a vyléčit před dalšı́m útokem. Na všechny tyto strategické prvky ve hře přicházı́ sám, vlastnı́mi zkušenostmi a nezřı́dka přijde i na něco úplně nového. Bez nadsázky lze řı́ci, že až se on přestane učit od nás, začneme se my učit od něj. Občas si ale – bohužel – vyvine jakési super řešenı́“, zneužı́vajı́cı́ chyby v pravidlech hry, která ” se tak stane nezajı́mavou. Řešenı́ konkrétnı́ch situacı́ je snaha o co nejlepšı́ zvládnutı́ vzniklé situace vhodnou volbou zbraně pro dané prostředı́, nebo správným úhybným manévrem. Za tı́mto účelem si vede statistiku KAPITOLA 3. TYPY POČÍTAČOVÝCH HER A JEJICH UI 14 k jednotlivým zbranı́m, manévrům a poměrně rychle přijde na to, že v uzavřených mı́stnostech nenı́ radno použı́vat zbraně hromadného“ ničenı́, ale že jsou naopak vhodnějšı́, na hlouček protivnı́ků. ” Protože tyto hry jsou založeny na procvičovánı́ právě taktických dovednostı́, bývá ve hře k dispozici velký výběr různých typů zbranı́: miny, granáty, bazuka, sniper-puška a také různé druhy terénu, ve kterých se dajı́ vhodně kombinovat. Vzniká tak poměrně slušný prostor pro uplatněnı́ znalostnı́ inteligence, když se nechává na botovi“, aby si metodou pokusu omylu vypracoval vlastnı́ ” optimálnı́ taktiku i strategii, ušitou přesně na mı́ru protihráče. Elementárnı́ chovánı́ aneb jak provést požadovaný manévr: vystřelit, přebı́t zbraň, uhnout, nebo se co nejrychleji a nejbezpečněji přemı́stit na dalšı́ pozici. K tomu se použı́vá pathfinding, často založený na heuristickém prohledávánı́ grafu. Pro jeho efektivnı́ využitı́ je ale potřeba mı́t již připravenou navigačnı́ sı́t’ - ony taktické informace o terénu. Tato sı́t’ bývá občas připravena pro konkrétnı́ mapu od jejı́ho tvůrce, ale to omezuje použitı́ takového bota jinde. Proto se dalšı́ vývoj zaměřuje i na tuto část UI a snažı́ se naučit počı́tač: učit se terén“. Pokusem a omylem může přece ” přijı́t nejen na to, že zdı́ neprojde a dveřmi ano, ale třeba i jak si je otevřı́t.[5] 3.4 Textové – konverzačnı́ Zde se velmi využı́vá učenı́ a sbı́ránı́ zkušenostı́. Nejdůležitějšı́ a nejtěžšı́ je zavedenı́ zpětné vazby, protože počı́tač potřebuje neustále vyhodnocovat kvalitu svého výkonu, aby se mohl vyvı́jet. Dosud nejúspěšnějšı́m konverzačnı́m programem je A.L.I.C.E. (Artificial Inteligence Internet Computer Entity) Systém vyvinul v roce 1995 Dr. Richard S. Wallace a od té doby se na jeho zdokonalovánı́ podı́lely stovky vývojářů. V lednu 2000 zı́skal poprvé Loebnerovu cenu za nejúspěšnějšı́ výsledek v Turingově testu, protože se největšı́ počet sudı́ch domnı́val, že hovořı́ s člověkem. [4] 3.5 RPG, Arkády, Adventury, Simulátory, Online-hry Inteligence v těchto hrách nenı́ tak významná, nebo se nelišı́ od některých výše jmenovaných. Kapitola 4 Dva hlavnı́ směry UI Jak bylo naznačeno výše, pojem inteligentnı́ lze též chápat jako efektivnı́ a to jak ve smyslu výkonu (při hledánı́ řešenı́), tak i kvality (při hodnocenı́ nalezeného řešenı́). Podle toho rozeznáváme dva základnı́ směry ve vývoji inteligence: Hrubá sı́la je výkon, tedy počet prozkoumaných kombinacı́ za čas. Snažı́ se co nejrychleji vyhodnotit co největšı́ množstvı́ kombinacı́ a vybrat si z nich co nejlepšı́ řešenı́. Jedná se o mělké prohledávánı́ širokého stavového prostoru. Znalostnı́ inteligence se snažı́ na základě zkušenostı́, statistiky, nebo jiného principu, odhadnout možná řešenı́ a vybrat si z nich to nejkvalitnějšı́. Důraz je v tomto směru kladen na výběr perspektivnı́ch kandidátů, které lze následně posoudit velmi důkladně. Zajı́mavou kombinacı́ obou jsou genetické a evolučnı́ algoritmy. Ty se také učı́“, ale pouze v rámci ” jednoho projektu. Nejprve projdou celý stavový prostor a hledajı́, zkoumajı́ a kombinujı́ částečná řešenı́, až dojdou k tomu nejlepšı́mu. Podobně pracujı́ i neuronové sı́tě, simulujı́cı́ vybrané procesy jejich biologických protějšků. Velmi zjednodušeně řečeno: Vytvářı́ soustavu náhodných“ vazeb, jež jsou následně spojovány ” a rozpojovány, podle vlivu na kvalitu řešenı́. Časem tak systém vazeb konverguje k optimálnı́mu řešenı́. Je důležité neskončit v některém z lokálnı́ch extrémů. Proto se většinou proces opakuje několikrát a vybı́rá se z nalezených řešenı́ to nejlepšı́. Jedná se doslova o implementaci přı́rodnı́ch zákonů přirozeného výběru a tak přı́slovı́: přı́roda ” si najde vždycky cestu“, můžeme vztáhnout i na takovéto umělé inteligence. 15 Kapitola 5 Úvod k implementaci algoritmů Pro lepšı́ představu dále popisovaných algoritmů uvedu nejprve stručný popis prostředı́, ve kterém jsou implementovány. UI je samostatná jednotka, která si ukládá informace o jednotlivých tazı́ch hráčů (viz obrázek 5.1) do hernı́ho pole na obrázku (5.2) a na požádánı́ vrátı́ souřadnice tahu, který považuje pro zadaného hráče za nejlepšı́. Nejkrajnějšı́ sloupce a řádky hernı́ho pole tvořı́ obálku, vymezujı́cı́ jeho hranice. To usnadňuje pole procházejı́cı́ algoritmy, které tak nemusı́ tyto hranice neustále sledovat. K němu koresponduje i vhodné pole na obrázku (5.3), které vymezuje tahy vhodné pro simulaci. Jsou to neobsazená pole v hernı́ oblasti, s neprázdným okolı́m. Nenulové čı́slo tohoto pole určuje vzdálenost k nejbližšı́mu tahu. Obrázek 5.1: tahy hráčů 5.1 Obrázek 5.2: hernı́ pole Obrázek 5.3: vhodné pole Hodnotı́cı́ funkce Sloužı́ pro ohodnocenı́ přı́nosu jednotlivých tahů na stejné úrovni stromu. Spočı́tá kolik nepřerušených n-tic daným tahem vzniklo a jestli při tom nastal výhernı́ stav (pětice). Protože máme jen čtyři směry (společně s jejich protisměry), mohou jednı́m tahem vzniknout maximálně čtyři n-tice. Z naznačeného tahu na obrázku (5.4) je patrné, že tı́mto tahem vznikne ve třı́ směrech jednice“ a v jednom směru trojice. Funkce tomuto tahu za zeleného hráče přiřadı́ ” čı́slo 10 + 10 + 10 + 1000 = 1030. 16 17 KAPITOLA 5. ÚVOD K IMPLEMENTACI ALGORITMŮ Obrázek 5.4: směry Takovouto hodnotı́cı́ funkcı́ bychom mohli rozumně řešit základnı́ situace až od čtyř půltahů napřed, protože až pak by se projevilo snı́ženı́ priority tahu útočnı́ka kvalitnı́ obranou. Přitom se jedná o kritické situace, končı́cı́ v přı́padě chybného rozhodnutı́ prohrou. 5.2 Blokovánı́ Přidáme tedy pravidlo které snižuje taktickou hodnotu o jednu úroveň za každou blokovanou stranu daného směru. Pokud budou takto zablokovány obě strany a nezbude dost mı́sta pro rozestavenı́ výhernı́ pětice, bude taktická hodnota takového směru nulová, protože výhra v tomto směru nenı́ možná. Obrana Obrázek 5.5 1020 : 120 1020 : 120 Obrázek 5.6 10020 : 30 1020 : 20 Obrázek 5.7 200 : 30 200 : 30 Útok Obrázek 5.8 1020 : 120 1020 : 120 Obrázek 5.9 10020 : 1020 10020 : 1020 Obrázek 5.10 VYHRA : MINIMUM VYHRA : MINIMUM KAPITOLA 5. ÚVOD K IMPLEMENTACI ALGORITMŮ 18 NA obrázku (5.5) je ukázková situace a pod nı́ patřičné ohodnocenı́ poslednı́ho tahu zeleného vs. červeného hráče bez blokovánı́. Pod nı́m je pro srovnánı́ ohodnocenı́ situace s blokovánı́m. Obrázky (5.6) a (5.7) ukazujı́ obranný rozvoj a jeho ohodnocenı́. Obrázek (5.8) zobrazuje stejnou situaci, ale obrázky (5.9) a (5.10) ukazujı́ jejı́ útočný rozvoj. U (5.6) je již patrný účinek obrany s blokovánı́m (na snı́ženı́m priority protihráče v obranném rozvoji proti útočnéu), zatı́m co bez blokovánı́ je účinek patrný až o tah později na (5.7). Dı́ky tomu lze předvı́dat hrozbu dřı́ve, než ji odhalı́ mini-max strom popisovaný dále a s předstihem na ni reagovat. Kapitola 6 Goliáš Je představitelem hrubé výpočetnı́ sı́ly a bude procházet obrovské množstvı́ větvı́ metody mini-max. Dı́ky minimálnı́m rozdı́lům mezi jednotlivými větvemi stromu můžeme výhodně použı́t algoritmus backtracking, kterému stačı́ držet v paměti pouze zkoumanou situaci. 6.1 Přı́liš hrubá sı́la Při implementaci Goliáše je nejdůležitějšı́ výška stromu a počet kombinacı́ které ho necháme projı́t. V ideálnı́m přı́padě by měl projı́t všechny možné korektnı́ kombinace, až do požadované hloubky: (xy − o)! (xy − o − t)! x, y - šı́řka, výška hernı́ho pole o - již obsazených tahů t - tahů myslı́cı́ch napřed Napřı́klad: U hernı́ho pole 23 na 23 by prvnı́m tahem, při simulaci dvou-půltahů napřed, prošel 279.312 kombinacı́ a při pouhých čtyř půltazı́ch už přes 77 miliard, což by při rychlosti počı́tače 10.000 kombinacı́ za vteřinu, trvalo celé 3 měsı́ce. 6.2 Odlehčenı́ Je třeba výrazně snı́žit počet zkoumaných kombinacı́ vynechánı́m nesmyslných tahů: • Začı́ná-li UI, nebude uvažovat nad prvnı́m tahem a umı́stı́ ho rovnou do středu HP. • Zvažovat se budou pouze tahy do bezprostřednı́ho okolı́ již provedených tahů. Každý tah, hned po tom prvnı́m, je pouhou“ reakcı́ na soupeřeův předešlý, at’ už se jedná o útok, ” rozvı́jejı́cı́ vlastnı́ postavenı́, nebo obranu. Osamocený tah mimo ostatnı́ tahy hráčů je ztrátový z hlediska útoku (útok selhal, začı́ná nový) a nesmyslný z hlediska obrany. Některé tahy se mohou ukázat výhodné až ve většı́ výšce stromu, než jakou budeme při rozhodovánı́ použı́vat. Nebudou tedy vybrány a tak nemá smysl se jimi zabývat. Proto zavedeme následujı́cı́ pravidla pro výběr zvažovaných tahů: 1. Zvažujeme jen tahy v bezprostřednı́m okolı́ již provedených tahů a tahy kde se ob-jedno protı́najı́ dvě alespoň dvojice, jak je znázorněno na obrázku (6.1). 19 20 KAPITOLA 6. GOLIÁŠ 2. Každý dalšı́ tah bude veden v pomyslném křı́ži, znázorněném žlutými body na obrázcı́ch (6.2) a (6.3), který vzniká při zápisu nesimulovaného tahu, ve všech směrech od něj. To snižuje počet vznikajı́cı́ch kombinacı́ přidávánı́m simulovaných tahů, na nezbytné minimum. Optimálnı́ délka tohoto křı́že pro čtyři půltahová zanořenı́ jsou tři pole. Obrázek 6.1: okolı́ 1 Obrázek 6.2: okolı́ 2 Obrázek 6.3: okolı́ 3 Tı́m jsme snı́žili počet zvažovaných kombinacı́ (v přı́padě reakce na prvnı́ tah), bez vážnějšı́ ztráty kvality řešenı́, až na přijatelných: 8 · 10 · 10 · 9 − 4 · 4 · 3 · 9 = 6.768 Vynechané možnosti by se stejně neukázaly efektivnı́mi do hloubky čtyř-půltahů, kterou se budeme zabývat. 6.3 Mini-max Jádrem Goliáše je metoda mini-max, která simuluje výše popsaným způsobem vybrané tahy. Na každý z nich zvažuje všechny“ (vybrané) odpovědi soupeře a na každou z nich zase všechny“ ” ” možnosti vlastnı́ch tahů s odpovı́dajı́cı́mi reakcemi soupeře. Teprve po simulaci těchto dvou úplných tahů použije hodnotı́cı́ funkci pro taktické posouzenı́ poslednı́ho vlastnı́ho tahu, zmenšené o hodnocenı́ poslednı́ho tahu protihráče. Tento princip je naznačen na obrázku (6.4). Jediný rozdı́l spočı́vá v tom, že mı́sto zobrazených dvou potomků každého uzlu, jich má mini-max kolem deseti. Strom tak rychle roste do astronomické šı́řky. Metoda mini-max vybı́rá na nejnižšı́ úrovni nejmenšı́ hodnoty těchto taktických koeficientů, protože představujı́ nejlepšı́ protihráčovy reakce na daný tah a předá je otcovskému uzlu, aby si z nich vybral tu, která vyjde pro hráče nejlı́p. Z těchto maxim se opět vybı́rajı́ minima a z nich zase maximum, poslednı́ na vrcholu stromu. To představuje náš hledaný, na čtyři půltahy dopředu nejlepšı́, tah. Pokud během konstrukce stromu dojde k výhře některého z hráčů, tato větev končı́ s hodnotou minimálnı́ + výška, nebo maximálnı́ − výška, podle výhry hráče, či protihráče. Z takovýchto stavů by si vybral nejrychlejšı́ výhru, nebo nejpomalejšı́ prohru (neměl by-li lepšı́ možnost). KAPITOLA 6. GOLIÁŠ 21 Obrázek 6.4: Úplný čtyřpůltahový strom se dvěma potomky každého uzlu 6.4 Goliáš vs. Člověk Většinu lidı́ na poprvé porazı́, ale brzy prohlédnou jeho slabiny a metodou pokusu a omylu přı́jdou na posloupnost silnějšı́ch tahů, než je dvoutahový mini-max schopen rozlišit. Přı́klad takové posloupnosti je na obrázku (6.5), aby ji se zeleným křı́žkem hrajı́cı́ Goliáš správně vyhodnotil, musel by mı́t minimálně čtyř-půltahový mini-max strom. Obrázek 6.5: Výhernı́ posloupnost tahů nad Goliášem KAPITOLA 6. GOLIÁŠ 22 Kritický, špatně vyhodnocený tah je na obrázku na obrázku (6.5) znázorněn žlutě. Posloupnost tahů vedoucı́ k neodvratné výhře červeného hráče, je znázorněna červenými body a odpovı́dajı́cı́ Goliášova reakce zelenými. Je vidět, že po kritickém tahu hra spěje k neodvratnému konci, protože vede ke vzniku typické neodvratné situace, se dvěma neblokovanými posloupnostmi trojic, naznačených křı́žem. Zelený může následně blokovat jen jednu z nich a červený tak dokončı́ nepřerušenou posloupnost na výhernı́ch pět u té druhé. Je-li tento typ UI jednou poražen, pro člověka ztratı́ význam s nı́m hrát, protože takto ho porazı́ vždy. 6.5 Goliáš vs. Goliáš Jak patrno na obrázku (6.6), vyhrál začı́najı́cı́ zelený po 30 tazı́ch. I zde je zřetelně vidět následek špatně vyhodnoceného kritického bodu, jež vedl k nebránitelné situaci. Zvětšenı́ mini-max stromu o pár dalšı́ch pater by podstatně zvýšilo inteligenci, kvalitu vybraných tahů, ale princip by zůstal stejný. Opět by některý z hráčů přehlédl kritický tah, protože by se ukázal později, než kam až simuloval jeho strom. Zato doba na vybránı́ tahu by se několik set krát prodloužila a hra by přestala být pro člověka hratelnou. Obrázek 6.6: Výhernı́ posloupnost tahů nad Goliášem Na obrázku (6.6) vlevo dole, vedle poslednı́ho výhernı́ho polı́čka, je vidět dalšı́ otevřená posloupnost. Bohužel, chybou použitého algoritmu je, že jakmile Goliáš zjistı́, že nemá šanci, protože je schopen bránit jen jednu posloupnost a protihráč má připraveny dvě, vzdá to. Tomu odpovı́dajı́ dva nesmyslné červené tahy vlevo nahoře. Člověk by se pokusil bránit alespoň jednu, ale počı́tač v tom nevidı́ smysl, protože pro něj už to, že hra skončila, je hotová záležitost ve chvı́li kdy si to uvědomı́, což je přesně dva tahy před opravdovým koncem. Pro počı́tač je to šach-mat druhým tahem“. ” Kapitola 7 David Použı́vá sice stejné hernı́ pole i stejnou hodnotı́cı́ funkci, ale jeho základnı́ algoritmus je jiný. Zatı́mco Goliášův mini-max promýšlel všechny vhodné kombinace až do zadané hloubky, David simuluje jen následujı́cı́ čtyři větve pro každý vhodný tah: 1. Útočná větev logická si vybı́rá nejlepšı́ tah pro hráčův útok, protihráč reaguje nejlepšı́ obranou. To se opakuje až do zadané hloubky, kde se vyhodnotı́ dosaženı́ taktických výsledků hráče. 2. Obranná větev logická pracuje obráceně. Protihráč útočı́ a hráč se bránı́. 3. Útočná větev znalostnı́ je stejná jako útočná větev logická, s tı́m rozdı́lem, že útok je simulován dle záznamu zkušenosti, se zjištěnou podobnostı́ s poslednı́m tahem hráče. Vyhodnocuje se, zda větev končı́ koncem záznamu výhrou, nebo ještě dřı́ve pokusem o nekorektnı́ tah. 4. Obranná větev znalostnı́ simuluje útok protihráče dle záznamu zkušenosti s předpokládanou obranou hráče. David tedy procházı́ méně kombinacı́, ale platı́ za to horšı́ kvalitou nalezených řešenı́, kterou se snažı́ dorovnat zkušenostmi. 7.1 Záznam znalostı́ Každá hra má 8 zrcadlových kombinacı́ s až 528 modifikacemi dle souřadnic počátečnı́ho tahu. S obyčejnou pamětı́ jednotlivých her bychom se tak daleko nedostali. Ani provádět 4224 modifikacı́ každého záznamu nenı́ rozumné. Záznam znalostı́ musı́ být kromě snadné a rychlé dostupnosti i efektivnı́ na zrcadlové a posuvné modifikace. Jinak by učenı́ bylo chaotické, trvalo nepřiměřenou dobu, nebo by záznamy zabı́raly mnoho mı́sta a vyhledávánı́ v nich zase času. Záznam bude tedy ve speciálnı́m vysušeném“ formátu, oproštěném od počátečnı́ch souřadnic ” a zrcadlových kombinacı́. Protože nejčastějšı́ záznamovou operacı́ bude čtenı́ (přı́mo úměrné počtu záznamů), bude nejlepšı́ vysušit“ tah z hernı́ch souřadnic na záznamový formát a pak pohodlně ” porovnat se všemi tahy všech dostupných záznamů her. Takto jediným průchodem s jediným porovnánı́m efektivně vyhodnotı́me všechny zrcadlové a posuvné kombinace. 23 KAPITOLA 7. DAVID 7.1.1 24 Kódovánı́ Pro nejefektivnějšı́ porovnávánı́ záznamových tahů bude tah zapsán jako jediné celé čı́slo. Toto čı́slo je obyčejný vektor posunu proti předešlému tahu, jehož složky x a y dostaneme rozkladem na součin prvočı́sel. Přı́tomnost prvočı́sel 2 a 3 v tomto rozkladu určuje kvadrant, ve kterém se posun odehrává. Ten je ovšem závislý na předešlých tazı́ch, takže přı́tomnost těchto prvočı́sel nám pouze řekne, zda je posun ve směru nastaveného vztažného kvadrantu, nebo v opačném. Obrázek 7.1: Kódovánı́ tahu do prvočı́selných souřadnic Obrázek (7.1) znázorňuje posuny s nastavenou osou x vodorovně a vztažným kvadrantem odpovı́dajı́cı́m kvadrantu druhému. Tyto parametry jsou proměnné, tvořı́ právě 8 zrcadlových kombinacı́ a jsou závislé na směru počátečnı́ho vývoje hry. Mějme posloupnost prvočı́sel: 2,3,5,7,11,13,17,19,. . . 2 určuje posun od/do vztažného kvadrantu po ose x 3 určuje posun od/do vztažného kvadrantu po ose y 5,11,17,. . . znamenajı́ posun o 1,2,3,. . . po ose x 7,13,19,. . . znamenajı́ posun o 1,2,3,. . . po ose y V pořadı́ lichá prvočı́sla (pětkou počı́naje) udávajı́ posun po ose x a sudá zase (sedmičkou počı́naje) po ose y. Výsledný kód tahu je složen ze součinu těchto dvou prvočı́sel a pokud byl posun v opačném kvadrantu osy x, vynásobı́ se dvěma, přı́padně třemi pro osu y. Přı́klad: Posun 1,1 ve vztažném kvadrantu 5 · 7 = 35. Stejný posun v opačném směru 2 · 3 · 5 · 7 = 210. 25 KAPITOLA 7. DAVID Tı́mto způsobem můžeme jednoznačně de / kódovat jakékoli souřadnice x, y až do velikosti: q 2n )−2 PrvociselDo( 2·3 2 n - počet bitů proměnné 32 bitů pokrývá interval < (0, 0), (1467, 1467) >, což bohatě postačuje na pokrytı́ hernı́ plochy. 7.1.2 Vztažný kvadrant Prvnı́ tah se nekóduje. Označuje pouze startovnı́ pozici obrazce“ následujı́cı́ch tahů, která pro ” záznam nemá žádný význam. Každý následujı́cı́ tah se zakóduje jako posun vůči předešlému. Přı́klad: Tah − Předešlý tah = (11, 12) − (12, 12) = (−1, 0) = 5 · 1 = 5 Tah − Předešlý tah = (13, 12) − (12, 12) = ( 1, 0) = 5 · 2 = 10 Jak vidı́me v přı́kladu, výsledek obou záznamů by byl bez zohledněnı́ vztažného kvadrantu stejný. V tomto přı́padě je vztažný kvadrant pro osu x, která je vodorovná, nastaven záporný. Všechny posuny s kladným výsledkem x jsou v opačném kvadrantu a jejich prvočı́selný rozklad obsahuje prvočı́slo 2. Tabulka 7.1 zobrazuje všech osm zrcadlových kombinacı́, kterými si můžeme vysušený“ záznam ” 5 5 7“ vyložit nastavenı́m promněnných: kvadrant x, kvadrant y, osa x (+−, +−, vodorovná / kolmá). ” Osa x Kvadrant y Kvadrant x vodorovná − − kolmá − + + − + − + + − Tahy Tabulka 7.1: osm zrcadlových možnostı́ jak vyložit záznam 5 5 7“ ” Vztažný kvadrant x, y a směr osy x se určuje hned na začátku hry dle prvnı́ch tahů. + KAPITOLA 7. DAVID 26 Úplný přehled nastavenı́ vztažného kvadrantu a osy x dle počátečnı́ch tahů (v poli 5 na 5) rozdělený do třı́ hlavnı́ch kategoriı́: 1 1. Jednoznačný vztažný kvadrant x, y i osa x • Obě složky posunu x i y jsou nenulové, jedna je většı́ než druhá. • Osa x je stanovena ve směru většı́ z obou složek. • Kvadrant x přebı́rá znaménko složky x. • Kvadrant y přebı́rá znaménko složky y. 2. Jednoznačný vztažný kvadrant x, y, neznámá osa x • Obě složky posunu x i y jsou stejné, nenulové. • Kvadrant x přebı́rá znaménko složky x. • Kvadrant y přebı́rá znaménko složky y. • Dokud budou obě složky posunu vůči prvnı́mu tahu stejné, nelze určit směr osy x. Tyto nerozhodné tahy mohou být pouze ve směru vztažného kvadrantu (x i y), nebo v protisměru obou těchto složek. Směr osy x se pro tento tah nijak neuplatnı́, protože obě složky jsou stejné a posun je oběma složkami bud’ ve vztažném kvadrantu, nebo v opačném. 3. Jednoznačný vztažný kvadrant x, neznámý y, známá osa x • Jedna ze složek je nulová. • Protože je složka nulová, nemá v kódu současného tahu žádný význam a tak nemusı́ být zatı́m určena. Tak jako v kategorii (2), rozhodne o znaménku dalšı́ tah. Dvě ze třı́ složek lze zjistit hned při zápisu druhého tahu (prvnı́ho posunu), ta zbývajı́cı́ (pokud nebyla zjištěna) nemá na kódovaný tah vliv a lze ji proto zjistit později. Jednoprůchodové kódovánı́ je tedy vždy jednoznačné a úplné. 1 Na obrázcı́ch konkrétnı́ch přı́padů u jednotlivých kategoriı́ je znázorněna osa x modře, tah posunu vůči tahu do středu červeně a vstažný kvadrant šedě. KAPITOLA 7. DAVID 7.1.3 27 Ověřenı́ použitelnosti Záznam předešlých her pořizujeme za účelem odhadnutı́“ následujı́cı́ho tahu. Rekonstrukce probı́há ” tak, že na začátku hry určı́me vztažný kvadrant x, y a osu x z tahů hráče, výše uvedeným způsobem. Poslednı́ zakódovaný tah hráče hledáme v paměti předešlých her. Pokud je nalezen, je zkoumáno, zda zbývajı́cı́ posloupnost tahů záznamu vede k vı́tězstvı́ i v této situaci. Ve většině přı́padů se bude jednat o falešný poplach a simulace zbývajı́cı́ části záznamu od nalezené shody, znalost vs. reakce, skončı́ před koncem záznamu nekorektnı́m tahem. Pokud ale bude znalostnı́ útok dotažen až do výhernı́ho konce i přes simulovanou obranu, je znalost použitelná pro tuto hru a takto vedený útok bude pravděpodobně výhernı́. Hodně záležı́ na kvalitě simulované obrany. Obdobně se postupuje i při posuzovánı́ obrany. Je zkoumáno, zda následujı́cı́m tahem může protihráč navodit situaci, která již jednou vedla k jeho výhře. 7.2 Vyhodnocovacı́ jádro Jak jsem již naznačil v úvodu této kapitoly, David provede simulaci následků všech vhodných tahů v podobě logické a zkušenostnı́ větve, pro svůj i protihráčův útok. K tomu si ještě zapamatuje nejnadějnějšı́ tah (s největšı́ prioritou), u kterého žádná z obou větvı́ neskončila prohrou. Upřednostňuje tah, vedoucı́ k nejrychlejšı́mu vı́tězstvı́. Pokud takový nenalezne, vybı́rá nejnadějnějšı́ z neprohrávajı́cı́ch a nenı́-li ani žádný takový, spokojı́ se s tahem nejdelšı́ obrany. I David trpı́ syndromem druhým tahem mat“ a jak mile zjistı́ že prohru již nelze zastavit ani zpo” malit, vzdá to. Podrobné schéma popisujı́cı́ funkci jádra je v přı́loze A. Šipkami jsou v něm znázorněny větve perspektivnı́, pokračujı́cı́ a obyčejnými čarami větve neperspektivnı́, koncové. Zásadnı́ rozdı́l oproti Goliášovi spočı́vá v tom, že z každého uzlu výše popsané větve se pokračuje pouze do jediného dalšı́ho a zbytek je zavržen. Mı́sto geometrického nárůstu kombinacı́ tak máme aritmetický. 7.3 David vs. Člověk Davidovu obtı́žnost lze nastavit limitem zkoumaných tahů do hloubky u logikých větvı́. Sloužı́ k tomu tlačı́tko úroveň. (viz screen-shot ze hry v přı́loze B, přı́padně uživatelská přı́ručka přı́loha C) Doporučená hodnota je kolem deseti tahů dopředu. Méně znamená pozdnı́ odhalenı́ kritických tahů a vı́ce zbytečnou nepřesnost simulace, vzhledem k jednoduchosti použitého postupu. Pokud však nastavı́me úroveň pod dva tahy dopředu, David přestane rozeznávat i základnı́ kritické situace a stane se nepoužitelným. Znalostnı́ větve lze vyřadit odstraněnı́m souboru zkusenosti.dat“. Každou výhrou člověka, či ” stroje, přibude do tohoto souboru záznam výhernı́ch tahů a tomu se pak v dalšı́ch hrách snažı́ útokem přiblı́žit a v obraně vyhnout. Pokud stroj porazı́m nějakou důmyslnou pastı́, na vı́ce tahů dopředu než rozpoznala jeho logická větev, nejen že se jı́ v přı́štı́ hře vyhne dı́ky varovánı́ znalostnı́ větve, ale při vhodné situaci ji použije zase proti mně. Protože počı́tač se učı́ rychleji než člověk, je schopen procházet - předvı́dat mnohem vı́ce stavů, hra představuje zajı́mavý souboj intelektu člověka a stroje. Pro názorný přı́klad Davidovi schopnosti učenı́ na obrázcı́ch (7.2) až (7.6) mu byla nejprve vymazána pamět’ záznamů her a hloubka logických větvı́ nastavena na 10. David hraje se značkou zeleného křı́žku a člověk červeného kolečka. Kritické tahy jsou znázorněny žlutou výplnı́ pole, 28 KAPITOLA 7. DAVID v záznamech vı́tězné posloupnosti pak tučným pı́smem. Neodvratné tahy vedoucı́ do bezvýchodné situace jsou naznačeny tečkami barev odpovı́dajı́cı́ch hráčům a červené čáry ukazujı́ dvě otevřené posloupnosti, kdy počı́tač je schopen oboustranně zablokovat jen jednu z nich. Davidova diskutovaná reakce na kritický tah je zvýrazněna žlutým rámem. Obrázek 7.2: Zaznamenánı́ porážky Obrázek 7.3: Vliv záznamu na dalšı́ hru Obrázek (7.2) ukazuje výhernı́ posloupnost tahů člověka nad Davidem. Pro včasné rozpoznánı́ kritického tahu by musel myslet plných pět tahů napřed. Logická větev má sice nastavených 10, ale nebere v úvahu všechny možnosti. Záznam vı́tězné posloupnosti tahů: 35 858 210 119 10 21 5 22 17“ ” Na Obrázku (7.3) je vidět odlišná reakce na stejnou situaci jako byla na (7.2). Dı́ky záznamu předešlé hry si David uvědomil (úspěšně odsimuloval) hrozı́cı́ nebezpečı́ a vyhnul se mu. Mı́sto útoku který již jednou nestihl, byl opatrnějšı́ a zvolil obranu. Obrázek 7.4: Dalšı́ záznam porážky Obrázek 7.5: Vliv obou záznamů na dalšı́ hru 29 KAPITOLA 7. DAVID Člověk se nedá tak snadno zahanbit a vymyslel nový způsob na obrázku (7.4) jak Davida porazit. Záznam druhé vı́tězné posloupnosti tahů: 35 858 210 119 7 22 7 70 2001“. ” David se opět adaptoval a znemožnil použitı́ obou předešlých postupů tahem na obrázku (7.5). Aby ho člověk mohl znovu porazit, musel se vı́ce snažit a myslet až na šest tahů dopředu. (viz obr. 7.6) Záznam hry: 35 858 210 119 10 130 285 10 11 5“ ” Takto lze pokračovat pořád“, člověk bude hledat stále složitějšı́ a rafinovanějšı́ způsoby na ” poraženı́ počı́tače a ten se zase bude učit jim bránit, čı́mž se budou vyvı́jet oba. Kdopak to asi vydržı́ déle. Obrázek 7.6: Dalšı́ záznam porážky Nynı́ vymažeme poslednı́ záznam hry (7.6). Obrázek (7.7) ukazuje zrcadlovou kombinaci hry (7.5), kde mı́sto v pravo dole pokračovala hra obdobně vpravo nahoře. Jiným směrem počátečnı́ho vývoje hry došlo k odlišnému nastavenı́ vztažného kvadrantu a osy x, což umožnilo při simulaci stejného záznamu dojı́t k jiným (správným) souřadnicı́m tahů. Poslednı́ obrázek (7.8) ukazuje stejnou reakci i u posuvné modifikace hry. Na obou obrázcı́ch (7.7) i (7.8) je prvnı́ Davidův tah vlevo dole na souřadnici (12,12). Obrázek 7.7: zrcadlová kombinace Obrázek 7.8: posuvná modifikace 30 KAPITOLA 7. DAVID 7.4 David vs. David Následujı́cı́ hry začı́najı́ s prázdnou pamětı́ záznamů a hloubka logických větvı́ je nastavena na simulace dvou tahů dopředu. Obrázek 7.9 Obrázek 7.10 Obrázek 7.11 Obrázek 7.12 Obrázek 7.13 Obrázek 7.14 Z nevelkých her je patrný nedostatečný obranný charakter logických větvı́. Ty jsou velmi platné při plánovánı́ brilantnı́ho útoku, ale neposkytujı́ mnoho možnostı́ pro účinnějšı́ obranu. Znalostnı́ větve sice na podruhé zjistı́ hrozı́cı́ nebezpečı́ a algoritmus se mu účině vyhne, ale protihráč rychle vymyslı́ nějaké dalšı́. S rostoucı́mi znalostmi roste délka i úroveň her, což ukazuje na postupnou auto-kompenzaci hendikepu způsobeného stvořitelem a (v teoretické části předpovězené) minimalizaci vlivu logických větvı́, posilovánı́m znalostnı́ch. Kapitola 8 Srovnávánı́ David vs. Goliáš Davidova hlavnı́ výhoda, schopnost učit se a přizpůsobovat byla demonstrována výše. Následujı́cı́ hry jsou zkouškou jeho logických větvı́ a záznamy her jsou vždy vymazány. Na obrázku (8.1) začı́nal Goliáš a porazil davida na desáté úrovni. Pokud ale dostal výhodu prvnı́ho tahu David, obrázek (8.2), stačilo mu to k vı́tězstvı́. Poslednı́ obrázek (8.3) ukazuje souboj začı́najı́cı́ho Goliáše a Davida na 20 úrovni. Z rozsahu hry je vidět, že Davidovy chvı́li trvalo vypořádat se s Goliášovou výhodou prvnı́ho tahu, ale na konec zvı́tězil. Prohledávánı́ do šı́řky vs. do hloubky tedy 1 : 2. Obrázek 8.1: Goliáš vs. David(10) Obrázek 8.2: David(10) vs. Goliáš 31 KAPITOLA 8. SROVNÁVÁNÍ DAVID VS. GOLIÁŠ Obrázek 8.3: Goliáš vs. David(20) 32 Kapitola 9 Závěr Bez hrubé sı́ly to nepůjde. Jestliže se z teoretického úvodu mohlo zdát, že hrubá sı́la je zastaralý model a bude kompletně nahrazena znalostmi, v praktické části se ukázalo, že oba majı́ své chyby i přednosti a nejefektivnějšı́ je zatı́m kombinace obou. Porazit Goliáše člověku sice zabere delšı́ dobu, ale pak s nı́m ztratı́ smysl hrát. U Davida je to snažšı́, ale jeho úroveň znalostmi roste. Samovývoj David vs. David je pomalý a začı́ná na přı́liš nı́zké úrovni. Je lépe ho nejprve natrénovat na všı́mavějšı́ UI, nebo lidech. Pak je schopen samovývoje bez patrných omezenı́ jı́ných než časových. 9.1 Dalšı́ možná vylepšenı́ Goliáše lze vylepšit použitı́m AlfaBeta prořezávánı́ stromu. Účinnost prořezávánı́ AlfaBety se dá zvýšit zařazenı́m silnějšı́ho tahu na prvnı́ průchod algoritmu. Takový lze rychle vybrat logickou větvı́ jako má David. Pokud by dostatečně klesl počet zvažovaných stavů, mohl by se použı́t hlubšı́ strom, myslı́cı́ vı́ce tahů dopředu, což by zvedlo jeho inteligenci. Davidovou slabinou je logická obrana, která je zase Goliášovou přednostı́. Nejlepšı́ cesta dalšı́ho vývoje se tedy zdá ve vhodné kombinaci obou těchto přı́stupů. Za úvahu by snad stálo i použitı́ genetických či evolučnı́ch algoritmů. 9.2 Zhodnocenı́ přı́nosu Bakalářská práce pro mne byla rozhodně přı́nosem. Kromě programovánı́ hry a UI jsem se naučil základům práce s LATEXem a mimo jiné si i uvědomil dvě podstatné věci: 1. HW podpora standardizovaných algoritmů UI značně zvýšı́ jejich výkon. Počı́tač bude moci procházet na sobě nezávislé větve stromu paralelně a přitom se nezdržovat ani úklidem při návratu. Takto podporovaná hrubá sı́la se stane řádově rychlejšı́, jako tomu je u Deep Blue. Procesor bude mı́t rovněž vı́ce času starat se o běh prograu, GUI a jiné potřebné, méňe specifické věci. 2. I omylný člověk může stvořit inteligenci schopnou samovývoje a potenciálem převyšujı́cı́m ten jeho. Bude to nejspı́š jen dalšı́ a zřejmě nevyhnutelný krok ve vývoji. Otázkou je, jestli jsme připraveni takovouto filozofii přı́jmout. Zatı́m byl inteligentnějšı́ a kreativnějšı́ člověk, použı́val šikovnějšı́, silnějšı́ a přesnějšı́ stroje, ale nebylo tomu tak – a asi ani nebude – vždy. 33 Literatura [1] Referát z předmětu umělá inteligence na téma historie ai a vymezenı́ problematiky. http://zdenek.euweb.cz/other/ai.html, Květen 2005. [2] ZBOŘIL F. Základy umělé inteligence. https://www.fit.vutbr.cz/study/courses/IZU/private/, Květen 2005. [3] KALKUS J. Chess. http://wikipedia.infostar.cz/c/ch/chess_1.html, Květen 2005. [4] SVRŠEK J. Umělá inteligence. http://www.gymtc.cz/natura/2004/3/20040301.html, Květen 2005. [5] JAKOB M. Umělá inteligence v počı́tačových hrách. http://www.scienceworld.cz/sw.nsf/ID/77BBB33A0476FAA9C1256EB5004DF919, Květen 2005. [6] RYBKA M. Umělá inteligence v počı́tačových hrách. http://www.krokodyyl.wz.cz/inteligence.htm, Květen 2005. [7] BURGER T. Člověk versus stroj. http://www.sever.cz/text.asp?clanek=605, Květen 2005. 34 Přı́loha A: jádro Davida 35 Přı́loha B: screen-shot hry 36 Přı́loha C: uživatelská přı́ručka Na přı́loze B screen-shotu ze hry je vidět pět hlavnı́ch ovládacı́ch prvků: Rám s hernı́m polem - Po spuštěnı́ programu je vidět pouze rám a chybı́ modrý hernı́ rastr. Ten se objevı́ až při startu hry, po stisknutı́ tlačı́tka Nová hra“. V přı́padě že je ve hře na tahu ” člověk, kurzor myši je zobrazen v podobě jeho značky a hráč může levým kliknutı́m myši zapsat tah do libovolného prázdného pole v hernı́ oblasti, čı́mž předá slovo“ druhému hráči. ” Stavová tabulka UI ukazuje hodnoty: • • • • • Stav – pokud je na tahu UI, zobrazuje kolik procent stavového prostoru již prozkoumala Tahů do výhry – počet tahů zbývajı́cı́ch do zjištěné výhry. U Davida je jen orientačnı́ Tahů do prohry – počet tahů zbývajı́cı́ch do zjištěné prohry. U Davida je jen orientačnı́ Davidova úroveň znalostnı́ – počet znalostı́ kterými disponuje (soubor zkušenosti.dat) Davidova úroveň logická – maximálnı́ hloubka logické větve. Lze přidávat levým a ubı́rat pravým tlačı́tkem myši Panel pro volitelná nastavenı́ parametrů hráčů: • hráč 1,2 – sloužı́ k nastavenı́ prvnı́ho a druhého hráče. (Goliáš, David, člověk) • znak – každý hráč si může vybrat svůj zástupný symbol na hernı́ poli (křı́žek, kolečko,. . . ) • výhra – touto volitelnou značkou bude zobrazena výhra přı́slušného hráče Tlačı́tko nová hra“ - citlivé na pohyb myši, zmáčknutı́m je zahájena hra ” Tlačı́tko konec“ - citlivé na pohyb myši, zmáčknutı́m je program ukončen. ” INFORMACE: Kompilováno na OS: Podpora dalšı́ch OS: Akcelerace grafiky: Formát zdroje grafiky: Multithreading: Linux, FreeBSD, WindowsXP BeOs, MacOS, MacOS X, IRIX, Solaris DirectX nebo OpenGL (dle OS) jpg, png, gif GUI, UI Ke kompilaci mimo DevC++, MVS.NET je třeba mı́t nainstalováno SDL s SDL_Image, SDL_Mixer. Dı́ky tomu že GUI běžı́ ve vlastnı́m vláknu, nezávislém na UI, lze program kdykoli ukončit, bez nutnosti čekat na dokončenı́ tahu UI. Tato výhoda přinášı́ problém s nedořešenou kritickou sekcı́. Pokud běžı́ UI a uživatel zadá novou hru se stejnou UI právě na tahu, běžı́cı́ UI ze staré hry se nemusı́ včas ukončit a může tak dojı́t k nežádoucı́ schizofrenické“ situaci, kdy obě UI sdı́lejı́“ ” ” stejnou pamět’. 37
Podobné dokumenty
Po dlouhé zimě se jaro ve městě rozběhlo bouřlivým
Dùvodù pro toto rozhodnutí bylo více. Ing. Bu
byl do funkce protlaèen starostou Jiøím Èásteèkou doslova podvodem, kdy zastupitelùm sdìlil, e
se bude jednat o neplacenou funkci, o kterou z
toho...
Algoritmy realizující počítačového hráče v jednoduchých deskových
Řádek 7 si ovšem zasloužı́ podrobnějšı́ vysvětlenı́. Pozorný čtenář si již jistě všiml, že kód
algoritmu obsahuje pouze funkci pro výpočet maxima — funkce pro výpočet minima se ...
Crypto-World
napsal zprávu na oholenou hlavu svému otroku, který ji po té, co mu zarostly vlasy, dopravil
do Milétu a pomohl tak ke koordinaci povstání proti Peršanum.
Je zaznamenána i jiná technika, kterou Rek...
Seznam účastníků, program po sekcích a sborník abstraktů
Tato práce se zabývá návrhem systémů napájení pro mobilního robota, určeného k ostraze objektu v průmyslu komerční bezpečnosti.
Celý robot je napájen dvěma olověnými akumulátory, jsou zapojené séri...
zobrazit na celou obrazovku
znaku – pohyby a pozice těla, mimika a pohyby úst (mluvní a orální komponenty). Zmíním
se také o používání interpunkce v SignWritingu. K vybraným symbolům uvedu příklady
zápisů českého znakového ja...
1 Kybernetika v historii plzenského vysokého školstv´ı 3 2 Studijn´ı
Bakalářské studium poskytuje základnı́ stupeň vysokoškolského vzdělánı́ v řı́zenı́ procesů technického i netechnického charakteru, v návrhu řı́dicı́ch systémů a v aplikacı́ch uměl...
Herní algoritmy, předn. 4 - Proof number search Lambda search
dokazovánı́, zda je pozice vyhraná
• Idea: některé větve majı́ mnohem lehčı́ (tj. menšı́) důkaz
• Hodı́ se uspořádanı́ tahů
• Uniformnı́ prohledávánı́ do stejné hloubky (jako alfabeta...
U´lozˇisˇteˇ digita´lnıch dat pro potreby U´K VSˇB-TU
Prohlašuji, že jsem tuto diplomovou práci vypracoval samostatně. Uvedl jsem všechny
literárnı́ prameny a publikace, ze kterých jsem čerpal.