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