Bakalářská práce

Transkript

Bakalářská práce
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

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...

Více

Algoritmy realizující počítačového hráče v jednoduchých deskových

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 ...

Více

Crypto-World

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...

Více

Seznam účastníků, program po sekcích a sborník abstraktů

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...

Více

zobrazit na celou obrazovku

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...

Více

1 Kybernetika v historii plzenského vysokého školstv´ı 3 2 Studijn´ı

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...

Více

Herní algoritmy, předn. 4 - Proof number search Lambda search

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...

Více

U´lozˇisˇteˇ digita´lnıch dat pro potreby U´K VSˇB-TU

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.

Více