09.09.2013 Views

Kunstig Intelligens til Brætspillet Taiji - Danmarks Tekniske Universitet

Kunstig Intelligens til Brætspillet Taiji - Danmarks Tekniske Universitet

Kunstig Intelligens til Brætspillet Taiji - Danmarks Tekniske Universitet

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

36 <strong>Kunstig</strong> <strong>Intelligens</strong><br />

3.2.1 Nodes:<br />

Noderne bruges <strong>til</strong> at holde styr p˚a informationerne om hvert enkelt spilstadie.<br />

I en node gemmes spilbrættet med alle brikkerne. Der gemmes ingen information<br />

om grænserne for de enkelte brikker, der gemmes blot hvor der er sorte,<br />

hvide og frie felter. Det betyder at der ikke er nogen bestemt struktur gemt i<br />

brættet om hvordan, spillet n˚aede dette punkt. Denne anonymitet er en fordel,<br />

da det er mere end en rute <strong>til</strong> hver eneste brætsituation i spillet, og brættets<br />

fortid derfor ikke m˚a være bundet <strong>til</strong> en bestemt forgænger. I noden kaldes det<br />

to-dimensionelle array hvor bræt<strong>til</strong>standen gemmes for nodeBoard.<br />

P˚a trods af brættets p˚akrævede anonymitet er koordinatorerne <strong>til</strong> det træk, der<br />

skabte Noden, gemt i fire variabler. wc, wr, bc, br, kolonnen for det hvide felt,<br />

rækken for det hvide felt, kolonnen for det sorte felt og rækken for det sorte felt<br />

for brikken, der blev lagt for at komme <strong>til</strong> dette stadie. Disse koordinatorer er<br />

et levn fra de første versioner, hvor der ikke blev taget højde for at flere forgænger<br />

kunne lede <strong>til</strong> samme spilsituation. I de nyere versionerne bliver de dog<br />

stadig brugt <strong>til</strong> at gemme det træk, som den kunstige intelligens finder frem <strong>til</strong><br />

skal foretages. I Noden er der ogs˚a en variabel <strong>til</strong>egnet at gemme værdien som<br />

heuristikken finder n˚ar Noden evalueres. Denne variabel hedder a.<br />

Dybden gemmes ogs˚a i Noden, under navnet d. Dybden er ligesom scoren uafhængig<br />

af hvilken rute, der er blevet taget for at n˚a Noden, da der skal være<br />

blevet lagt lige mange brikker før to brætsituationer kan være ens.<br />

Til slut holder to arraylister af variable længde styr p˚a hvilke forgængere og<br />

efterkommere Noden har. Den kaldes par for parents og den anden kaldes blot<br />

children.<br />

3.2.2 Skabelsen af efterkommere:<br />

Det vil i langt de fleste af de kunstige intelligenser før eller siden være nødvendigt<br />

at skabe alle efterkommere <strong>til</strong> en given node. Da denne proces i disse <strong>til</strong>fælde er<br />

den samme, vil den blive beskrevet her. I de <strong>til</strong>fælde hvor skabelsen af efterkommer<br />

foreg˚ar p˚a anden vis vil det være beskrevet i afsnittet om den p˚agældende<br />

AI.<br />

For at skabe alle efterkommerne <strong>til</strong> en Node, er det nødvendigt at foretage alle<br />

de træk som den p˚agældende spilleplade <strong>til</strong>lader. Dette gøres ved at gennemg˚a<br />

brættet fra enden <strong>til</strong> anden og lægge brikker alle de steder det er muligt. Det<br />

nemmeste er først at gennemg˚a brættet med vandrette brikker og hver gang der<br />

findes en vandret plads <strong>til</strong> en brik oprettes to Noder, en for hver led brikken<br />

kan vender p˚a, sort-hvid og hvid-sort. Der samme gøres derefter for alle mulighederne<br />

for at lægge en brik lodret. Checkes der for b˚ade lodrette og vandrette<br />

samtidigt opst˚ar der en masse special<strong>til</strong>fælde omkring to af kanterne af brættet,

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!