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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

58 Optimering af Minimax<br />

Det er derfor hensigtsmæssigt at finde en nye hashfunktion <strong>til</strong> at erstatte hash-<br />

Function. Dette alternativ kun baseres p˚a brikkernes placering p˚a bræt, da den<br />

enkelte briks placering er s˚a godt som uafhængig af dybden. Problemet er bare<br />

at en hashfunktion skal give samme hashværdi uanset om spilstadiets bræt er<br />

blevet spejlvendt, roteret eller en kombination af disse for at fungere. For at<br />

komme uden om dette problem, kan et bræt med værdi bruges <strong>til</strong> finde en hashværdi.<br />

Et s˚adant værdibræt skal have samme dimensioner som selve spilbrættet<br />

og skal forblive det samme uanset hvordan det vendes og drejes. Hvert felt skal<br />

have en værdi, som s˚a kan tages i anvendelse, hvis en brik lægges oven p˚a det,<br />

og derved f˚a indflydelse p˚a den endelige hashværdi.<br />

I dette <strong>til</strong>fælde er værdibrættet konstrueret s˚aledes; det midterste felt har værdien<br />

1, der kan være tale om flere felter, hvis antallet af kolonner eller rækker af<br />

lige generationer. Værdierne for fletterne lodret og vandret ud fra midten stiger<br />

med 1 hver gang de kommer et felt længere fra midten. Disse felter kan ses<br />

som to akser. De resterende felter f˚ar deres værdi ud fra disse. Er et felt ud for<br />

værdien 2 p˚a den lodret akse og ud for værdien 3 p˚a den vandret, bliver feltet<br />

<strong>til</strong>delt værdien 6 (2 x 3).<br />

Et eksempel p˚a dette kan se s˚aledes ud:<br />

12 9 6 3 3 6 9 12<br />

8 6 4 2 2 4 6 8<br />

4 3 2 1 1 2 3 4<br />

8 6 4 2 2 4 6 8<br />

12 9 6 3 3 6 9 12<br />

Den oprindelige ide var at lægge alle værdierne sammen for alle de felter hvor<br />

der l˚a en hvid halvdel, og trække summen fra af værdierne for alle de felter hvor<br />

der l˚a en sort halvdel. Det kan dog hurtigt observeres at dette ikke er en optimal<br />

fremgangsm˚ade, da en vandret brik vil <strong>til</strong>føje den samme værdi s˚a længe den<br />

bevæger sig langs en række ind<strong>til</strong> den n˚ar midten. Det samme gælder en lodret<br />

briks bevægelse i en kolonne.<br />

Eksembel for midterste række: 2 - 1 = 1, 3 - 2 = 1, 4 - 3 = 1.<br />

Dette kan løses ved i stedet for at fratrække de sorte værdier, halveret værdien<br />

og s˚a lægge den <strong>til</strong>, for fortsat at bibeholde en vigtig afvigelse mellem de<br />

to farver. Til sidst benyttes modulus <strong>til</strong> at reducere resultatet <strong>til</strong> en passende<br />

størrelse. Denne hashfunktion er navngivet hashFunction2.<br />

Til slut forsøges med en tredje funktion som kombinerer hashFunction og hashFunction2.<br />

Denne funktion lægger blot hashværdierne fra de to funktionerne<br />

samme og anvender igen modulus <strong>til</strong> at holde værdien inde for rammerne. Den<br />

funktion har f˚aet navnet hashFunction3.

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

Saved successfully!

Ooh no, something went wrong!