Tietokoneshakki / Transpositiotaulukot

Hyödyt

Transpositiotaulukkoon tallennetaan haussa jo lasketut asemat, niin että niitä ei tarvitse laskea uudestaan. Tämä säästää paljon työtä, koska kun laskenta etenee syvemmälle, samoihin asemiin päädytään useaa eri kautta. Tällöin kokonaisia hakupuun haaroja tulee vastaan uudestaan. Jos niiden laskemisen sijaan otetaankin arvo suoraan transpositiotaulukosta, koko haku voi tapahtua monta kertaa nopeammin.

Kun käytetään alfa-beta-haun kaltaisia algoritmeja, asemalle saatu arvo ei aina ole tarkka, vaan se voi olla ylä- tai alaraja aseman arvolle. Tästä on silti apua, jos transpositiotaulukkoon merkitään myös aseman arvon tyyppi. Tällöin jos alfa-beta-haussa aseman yläraja on huonompi kuin tämän hetkinen alfa, voidaan haku tuosta asemasta eteenpäin katkaista.

Koko ja tehokkuus

Transpositiotaulukoiden kanssa on käytettävä jonkinlaista hajautusfunktiota, jolla asemat sijoitetaan taulukoon. Tämä aiheuttaa yhteentörmäysten vaaran, kun kaksi asema hajautetaan samaan taulukon paikkaan. Tämän vuoksi taulukon koko ja hajautusfunktio on valittava tarkkaan, jotta transpositiotaulukosta saadaan paras hyöty. Liian suuren taulukon nollaus aina siirron jälkeen olisi raskas operaatio ja lisäksi suurien muistialueiden osoittaminen saattaa olla hidasta. Liian pienessä taulukossa yhteentörmäyksiä tapahtuisi liikaa, ja sen hyöty menisi hukkaan.

Hajautusfunktiota käytetään käytännössä kahdessa paikassa. Ensinnäkin jokaiselle asemalle lasketaan avainarvo, joka erottaa sen kaikista muista asemista. Tämän avaimen on oltava tarpeeksi pitkä, jotta se olisi ainutlaatuinen. Lisäksi lähellä toisiaan olevien asemien olisi paras saada kaukana toisistaan olevat avaimet, jotta hajautus olisi tehokasta. Tässä käytetään usein satunnaislukuja. Toinen hajautusfunktion käyttö on aseman hajauttaminen taulukkoon, joka on huomattavasti pienempi kuin aseman avainarvo. Taulukko saattaisi sisältää miljoona asemaa, joka on indeksoitavissa 20 bitillä, kun taas avain saattaa olla 64 bittiä. Tässä voidaan käyttää standardeja hajautusfunktioita

Huomioitavia asioita

Transpositiotaulukoissa on sovittava asemien korvauspolitiikka. Käytännössä taulukossa pyritään törmäystilanteissa pitämään ne asemat, joita todennäköisimmin tarvitaan pian uudestaan. Tässä voidaan käyttää erilaisia heuristiikkoja. Esimerkiksi tarkat arvot säilytettäisiin aina tai lähempänä hakupuun juurea olevat arvot. Lisäksi on mahdollista vain antaa viimeisimmän arvon korvata edellinen.


Pääsivulle