Teknoshakkia – syväkaivauksia Caissan puutarhassa

@ mr.mip,1999

                                                                                                                                                               

 

Oletteko koskaan seuranneet sumopainin alkutoimia tai nyrkkeilyn MM – ottelun punnitustilaisuutta? Moista pullistelua ja psyykkausta harvoin näkee shakkiottelun avajaisissa. Niinpä ilman ihmeempiä odotuksia asetuin taannoin nojatuolini uumeniin, perehtyäkseni tietokoneiden MM-turnauksen osanottajain esittelyyn. Kuvittelin saavani tietoa siitä, että tämä malli on kukistanut ottelussa selvästi suurmestari NN:n. Tuo taas on voittanut niin ja niin monta turnausta viime vuonna jne. Mitä vielä! Esimerkiksi ”Dark Thought”-nimisestä turnaajasta luin seuraavaa :

 

 

” Dark Thought is a sophisticated alpha-beta searcher that uses PVS/ NegaScout  with state of art enhancements like hash tables, internal iterative deepening, dynamic move ordering with killer and history heuristics, recursive null-move pruning, selective extensions and interior node recognisers” 

 

 

Tämän jälkeen räpyttelin silmiäni kahdesti ja luin tekstin uudelleen.  Englantiahan tämä on, mutta puhummeko samasta asiasta? Seuraavaksi laitan pääni kylmän vesihanan alle minuutiksi ja luen tekstin jälleen. Eipä vaan aukea! No, suomalainen sisu kiehahtaa ja ryhtyy opiskelemaan asioita harmaan kiven läpi. (Tässä kohtaa onkin hyvä huomauttaa kaikille niille, jotka ovat ounastelleen Mr.Mipin laiskistuneen pakinoitsijana, että eipä lainkaan, eipä lainkaan. Työtä vuorotta on tehty asioiden todellisen laidan selvittämiseksi ja sitäpaitsi valvottu sekä juhlittu puolestanne.) Niinpä vanhan kunnon Katekismuksen tavoin yllä oleva kursiivi teksti kuuluu seuraavasti selitettynä :

 

(1) ” ... is a sophisticated alpha-beta searcher.”

 

Mitä se on ?

 

Ilmeisesti tietokoneet (ohjelmat) näkevät shakkipelin puumaisena rakenteena. Nykyinen asema vastaa juurta (root), josta kaikki välittömästi mahdolliset omat siirrot haarautuvat oksina (branch) ja päätyvät uusiin asemiin (nodes), joista vastustajan siirrot haarautuvat jne., kunnes tietyllä syvyydellä (korkeudella) päädytään lehtiin (leaves), joissa syntyneiden asemien arviointi tapahtuu. Arviointi tapahtuu nk. evaluaatiofunktion kautta. Tämä antaa numeerisen arvion asemasta perustuen mm. materiaalitilanteeseen, liikkuvuuteen, sotilasasemaan, kuninkaan turvallisuuteen jne.,jne. Kaupalliset ohjelmat pitävät yleensä evaluaatiofunktion tarkan sisällön liikesalaisuutena, mutta käyttäjää varten se skaalataan perinteisesti siten, että yhden sotilaan ”arvo” on 1.00. Lehdissä tapahtunut evaluointi ”peruutetaan” sitten juureen, siten että omalla siirtovuorolla valitaan tarjollaolevista vaihtoehdoista maksimi ja vastustajan siirtovuorolla minimi. Tästä maksimin ja minimin vuorottelusta tulee sitten menetelmän nimi Minimax- algoritmi.

 

 

 

                                                     A.1   A.2   A.3     B.1  B.2  B.3       C.1  C.2   C.3

                                                      3       4       5            2     6    -3           1    0      4

 

 

                Vastustaja = Min.

 

 

                                                                                  A=3       B= -3          C=0=Min (C.1,C.2,C.3)

                                       Oma siirto= Max

                                                                                                                 

 

                                                Juuri = Nykyinen tilanne /Laskettu arvo =3=Max(A,B,C)                            

 

                                              Minimax-algoritmi yksinkertaisessa siirtopuussa.     

     

Kuten kuvasta huomaa, niin lehtiarvoista valitaan ”ryppäittäin” minimiarvot, koska evaluointi tapahtuu vastustajan siirtovuorolla. Nämä arvot kuljetetaan sitten runkoja pitkin juureen. Rungoista valitaan maksimiarvo (=3), koska tämä taso vastaa omaa siirtovuoroa. Käytännön siirtopuut ovat tietysti paljon monihaaraisempia ja syvempiä, mutta Minimax-perusfilosofia on sama.

 

Kuinka paljon monihaaraisempia puut käytännössä ovat? Tästäpä on ihan tutkittua tietoa. Herra Andreas Stabel suoritti nimittäin tilastollisen analyysin Dan Corbittin 1 496 327 pelin tietokannasta ja havaitsi, että keskimääräisessä asemassa oli 31,25 laillista jatkosiirtoa. Tämä lukema on niin lähellä luvun 1000 neliöjuurta, että riittävällä tarkkuudella voimme väittää laillisia asemia (=puun lehtiä) syntyvän eri syvyyksillä seuraavasti:

 

1 siirtopari (Valkean + mustan siirto)         1000 asemaa keskimäärin.

2 siirtoparia                                                   1000 000 = 10^6

3 siirtoparia                                                   1000 000 000 = 10^9

4 siirtoparia                                                   1000 000 000 000 = 10^12

5 siirtoparia                                                   1000 000 000 000 000 =10^15

jne.

 

Voidaan kysyä, kuinka monta siirtoa tietokone näkee eteenpäin, jos se suorittaa täydellisen Minimax – haun siirtopuusta? Oletetaanpa nyt, että meillä on supernopea tietokone, joka pystyy generoimaan ja evaluoimaan miljoona siirtoa sekunnissa. (Tämä on hiukan enemmän kuin Fritz 5.32 200Mhz pentiumilla, n.500 000 nps [= nodes per second] ). Tyypillisessä  40 siirtoa / 2h pelissä siirtoa kohti aikaa on 3 minuuttia, jolloin superkoneemme arvioi 180 miljoonaa asemaa. Tällä nopeudella ehtisi analysoida vain viidenneksen kolmannesta siirtoparista ennen nk. Sakkeus-ilmiötä [Mr. Mipin kehittämä uudisilmaus = Aika loppuu, nopeasti puusta alas!]. Siis hädintuskin vaiheeseen: ”Jos minä siirrän näin, niin hän siirtää noin. Jos minä sitten lyön tuosta, niin hän vastaavasti syö noin..” Eli ei kovinkaan pitkälle. Jos tässä olisi kaikki, niin eipä meillä olisi suurta hätää. Hassuttaisimme edelleen koneita mennen tullen!

 

Mutta, mutta kehitys kehittyy ja ilkeät tutkijat keksivät kavaluuksia päämme menoksi. Tässä nimenomaisessa tapauksessa Tuomion Pasuuna törähti jo 1958 Carnegie- Mellon yliopistosta, jossa herrat Newell,Shaw & Simon havaitsivat, että tietyllä menetelmällä – jota he kutsuivat Alfabeta algoritmiksi – voidaan suuri osa siirtopuusta karsia pois ja näin säästetty aika mahdollistaa puun syvällisemmän tutkimisen.

 

Alfabetan leikkausteho perustuu siihen, että kaikkia lehtiä ei tarvitse tutkia, jos valmiiksi löytyy lehtitertusta yksikin lehti, joka osoittaa sen parasta aiemmin tutkittua terttua heikommaksi. Meitä ei kiinnosta kuinka paljon huonompi se on, tieto huonommuudesta riittää hyvin karsimaan loput tertusta. Otetaan esimerkki :

 

 

                                                     A.1   A.2   A.3      B.1  B.2  B.3      C.1  C.2   C.3

                                                      3       4       5            2     ?     ?          1      ?      ?

 

 

                Vastustaja = Min.

 

 

                                                                              A=3          B< 2              C<1

                                       Oma siirto= Max

                                                                                                                      =Alfabeeta leikkaus      

 

                                                                Juuri = Nykyinen tilanne /Laskettu arvo =3                    

 

                                                            Yksinkertainen Alfabeeta - algoritmi

 

Kuviossa on yksinkertainen kahden siirron puu, jonka haarautumistekijä (Branching Factor) on kolme. Itseasiassa sama puu, jota käytettiin Minimaxin kuvaamiseen.

 

Oletetaan, että lehdet evaluoidaan vasemmalta oikealle. Ensimmäinen lehtiryhmä (A1,A2,A3) pitää aina evaluoida kokonaan, jolloin löydetään siihen paras tulos. Tässä tapauksessa minimi=3 on tuo tulos. Kun toista ryhmää aletaan arvioimaan. Jo ensimmäinen asema (B1) antaa arvon 2. Nyt ei tarvi, eikä kannata, muita tämän ryhmän lehtiä edes arvioida! Järkeily lähtee siitä, että siirrolla A saamme parastakin vastasiirtoa kohti aseman, jonka arvo on 3. Vaihtoehtoista siirtoamme B kohti löytyi heti vastasiirto, joka aiheutti asema-arvon 2. Niinpä riippumatta muiden vastasiirtojen arvosta, vastustajamme voi aina pelata vähintään tämän. Meidän kannaltamme A on B.tä toivottavampi jo tämän tiedon perusteella.Myös kolmannen haaran ensimmäinen evaluointi (C1=1) aiheuttaa välittömän alfabeta leikkauksen.

 

Näin pienessä puussa säästö ei ole kovin tuntuva. Ajatellaanpa nyt reaalista kahden siirron puuta, jossa haarautumistekijä on 30. Oletetaan lisäksi, että paras jatko löytyy ensimmäisestä ryppäästä kuten esimerkissä. Tällöin tutkittava asemamäärä on:

 

Ilman alfabetaa : 30 * 30 = 900 asemaa

Alfabetan kanssa: 30 + 29= 59 asemaa (jo ensimmäinen asema leikkaa 29 ryppäässä)

 

Siis varsin radikaali säästö! Säästö voi olla vielä suurempi silloin, kun puu on syvempi (vähintään 4 tasoa) kuin esimerkissä. Tällöin nimittäin esimerkin latvaleikkausten (shallow cuts) lisäksi voi esiintyä syväleikkauksia (deep cuts), jotka karsivat isoja lohkoja siirtopuusta. Tehokkaan puukirurgian kannalta on erittäin tärkeätä, että "hyvät" (= leikkauksia aiheuttavat) siirrot esiintyvät jo alkulehdillä. Jos esimerkissämme lehtirykelmät olisi tutkittu järjestäytyneenä arvoltaan pienimmästä suurimpaan olisimme joutuneet tutkimaan koko lehdistön ilman mitään säästöä!

 

Käytännössä alfabeta pienentää haarautumistekijän n.30:stä 5-6:een hyvin järjestetyssä siirtopuussa. Tämä taas tarkoittaa, että samassa ajassa ehditään tutkia kaksinkertainen siirtomäärä. Supertietokoneemme (1Mns) tutkisi jo yli 4 siirtoparia eli 8-9 plyn syvyyteen.( 1 ply= 1 puolisiirto). Dark Thought on siis alfabeta- hakukone, kuten lähes kaikki nykyaikaiset ohjelmat. Sen lisäksi se on "sophisticated" eli kehittynyt alfabeta versio, josta pääsemmekin seuraavaan aiheeseen.....

 

(2)....uses PVS/NegaScout with state of art enhancements…

 

Mitä se on?

 

Shakkipuuta voidaan ilmeisesti tutkia moneen eri suuntaan. Erilaiset etsintäalgoritmit voidaan myös tyypittää tämän mukaan. Esimerkiksi perinteinen alfabeta on syvyyssuunnassa ensin (Depth First) liikkuva, muistia vähänkäyttävä ja helposti ohjattava algoritmi. Vaihtoehtoinen tapa on etsiä leveyssuunnassa (Width First) ensin ja vasta sitten siirtyä seuraavalle syvyystasolle. Sitten on vielä kolmas, mystinen "Best First" kategoria. Tämä kuulostikin Mr.Mipin mielestä heti hyvältä ajatukselta! Jo leikkaustehokkuuden kannalta "Paras ensin" -tutkimusmenetelmä vaikuttaa kaikin puolin suositeltavalta. Hiukan tarkemmin ajateltuna menetelmä kuitenkin alkoi yhä enemmän ja enemmän muistuttaa Jussi Tellan taannoin news-ryhmässä esittämää siirtojen laskentasääntöä ihmismielelle: "Toteutuvaa siirtoa ei kannata laskea, se kun tehdään kumminkin. Mitään muuta kuin toteutuvaa siirtoa ei missään tapauksessa kannata laskea, sehän olisi pelkkää ajanhukkaa." Eli jos paras kerran tiedetään....

 

 

Hieman tarkempi perehtyminen kuitenkin osoittaa, että vanha paras voikin olla uuden parhaan alku  (tai sitten ei ..). Tässä nimittäin viitataan menetelmään, jossa puuta tutkitaan kerroksittain. Mikä on paras siirto yhden lehtikerroksen perusteella, entä paras vastaus siihen (2 plyn syvyydellä), jne. Näin menetellen voidaan N:n puolisiirron jälkeen muistiin rakentaa siihenastisten tutkimusten perusteella todettu paras siirtosarja, nk. pääjatko (Principal Variation). Kun nyt lähdetään tutkimaan syvyydellä N+1, niin veikkaus on, että kannattaa aloittaa puun laajentaminen siihenastisesta pääjatkosta, "Best First". Tämä menetelmä kulkee nimellä Principal Variation Search eli PVS.

 

Entä sitten tämä NegaScout? Perinteinen alfabeta algoritmi ei tee mitään oletuksia siitä mikä haun lopputulos tulee olemaan. Se lähtee siitä, että aseman yläraja (alfa) ja alaraja (beta) ovat aluksi +/- ”ääretön” ja tarkentuvat luonnollista tietä hakuprosessin edetessä, jonka vuoksi sitä kutsutaan leveäikkunaiseksi hauksi. Vuonna 1980 Julius Pearl esitti ajatuksen, että loppuaseman arvo kannattaa ”arvata” ja asettaa ikkuna hyvin kapeaksi tämän arvauksen ympärille. Sitten käynnistetään tutkimus siten, että tämä arvaus lähetetään ikäänkuin tunnustelijana (Scout) puuta karsimaan. Jos vain yhden lehtiryppään arvo ylittää arvauksen, niin paras jatko on löydetty. Jos useamman kuin yhden arvo (tai ei minkään) ylittää arvauksen, on haku uusittava korotetulla (alennetulla) arvauksella. Huolimatta todennäköisistä uusintahauista, on osoitettavissa, että tämä nk. Pearlin Scout- algoritmi saavuttaa järkevillä arvauksilla lopputuloksen nopeammin kuin leveäikkunainen alfabeta puissa, joiden haarautumiskerroin on >20.

 

Tämän edelleenkehitys NegaScout on puhtaasti ohjelmatekninen muunnos. Minimax algoritmi tarvitsee periaatteessa kaksi erillistä aliohjelmaa minimin ja maksimin laskemiseksi riippuen siitä, lasketaanko tilannetta omalla vai vastustajan siirrolla. Jos kuitenkin menetellään siten, että vastustajan vuorolla aseman arvosta otetaan aina sen vastaluku (Negaatio), niin voidaankin käyttää vain yhtä, maksimia etsivää, aliohjelmaa kauttaaltaan. Tällöin systeemiä kutsutaan NegaMax algoritmiksi. Juuri tämän muunnoksen NegaScout tekee Scout- algoritmille.

 

Hakualgoritmiikka on muuten ihan ikioma tieteenhaaransa. Erityisesti silloin, kun montaa tietokonetta käytetään rinnan aseman arvioinnissa. Näissä kaikissa kun vilistää oma Scout’insa – joka tarkoittaa myös partiopoikaa – niin hakumenetelmän nimihän on tietysti, arvasitte oikein, Jamboree. Muita enemmän tai vähemmän hauskoja nimityksiä ovat ”Stockman’s SSS*”,” MTD(f)”, ”Conspiration Number Search” ja ”Young Brothers Wait Algorithm”. Vanhana kyynikkona Mr.Mip epäilee, että yliopistojen professorit kyhäävät näitä hienoja nimiä saadakseen kunniaa,mainetta ja julkaisuja, sekä päästäkseen ulkomaille konferenssiin. Mutta eteenpäin....

 

(3)  ....like Hash tables….

 

Mitä se on ?

 

Koneelta/ohjelmalta kuluu shakkia pelatessaan aikaa lähinnä kahteen asiaan: Laillisten siirtojen generoimiseen ja asemien arviointiin. Mitä monipuolisempi evaluaatiofunktio on, eli mitä enemmän kone ”tietää” shakista, sitä kauemmin aikaa kuluu arviointiin. Mitä yksinkertaisempi arviointi, sitä pidemmälle ehditään laskea – joskin epätarkemmin. Kaikki millä aikaavievää arviointia voidaan helpottaa on suureksi avuksi. Eräs keino on tallentaa muistiin jo arvioituja asemia, niiden arviointituloksia ja asemassa parhaaksi laskettuja jatkosiirtoja. Tämä tapahtuu siinä toivossa, että siirtovaihdoin päädyttäisiin jatkossa samaan asemaan toisaalla puussa ja jo valmiiksi tehtyjä arviointeja ei tarvitsisi toistaa. Oleellista on luonnollisesti, että aseman muistissaolon tarkistaminen on paljon nopeampaa kuin aseman arviointi.

Tällaista muistitaulukkoa kutsutaan Hash – tai Transpositiotaulukoksi. Hash-koodien, jotka mahdollistavat juuri yllämainitun pikahaun, laatiminen on myös oma tieteenalansa, johon ei tässä tarkemmin puututa. Sensijaan voidaan kysyä, kuinka paljon tästä on apua? Kuinka usein käytännössä siirtovaihtoja esiintyy shakkipuussa? Jos niitä on suhteellisen harvoin, niin eikös ylimääräinen muistintarkistus syö lopulta enemmän aikaa kuin säästää?

 

Hyviä kysymyksiä.Otetaan karrikoitu esimerkki. Oletetaan 40 siirtoparin shakkipeli, jossa keskimääräinen haarautumistekijä on tuo tutkittu, hieman yli 30. Kuinka monta mahdollista asemaa on tällä perusteella koko pelin mittaisessa puussa? Luonnollisesti 1000^40 eli luokkaa 10^120. (Tätä samaa laskelmaa yleensä käytetään kuvaamaan erilaisten shakkiasemien määrää, ja perinteisesti tässä kohden kuuluu sanoa ”..eli enemmän kuin tunnetussa universumissa atomeita, joita arvioidaan olevan vain 10^80.” Näin tekee mm. Kasparov Oregon-luennossaan ’Chess, Politics and Computers’, jonka  ‘Computers’ osan hän, lähdettä mainitsematta, kopioi sanasta sanaan Frederic Friedelin artikkelista ’A Short History of Computer Chess’, joka häveliäästi ja äkkinäisesti katosi Club Kasparovin saitilta.)

 

Mutta montako näistä asemista on samoja, eli olisiko suuresta Hash taulukosta tässä hyötyä? Erilaisten shakkiasemien lukumäärää voi myös arvioida selkeämmin kysymällä: Kuinka monella eri tavalla 2...32 nappulaa voidaan asettaa 64 ruudun laudalle? Menemättä yksityiskohtiin, konsensus on, että näin laskettu erilaisten mahdollisien asemien lukumäärä on luokkaa 10^43. Galaktinen luku tämäkin, mutta huomaa, että tämän perusteella ylläolevan pelin mahdolliset asemat toistuvat puussa n.10^77 kertaa kukin, eli lähes yhtä usein kuin atomeita on universumissa.... Giganttinen Hash-taulukko olisi siis tosi tarpeellinen.

 

Käytännön shakkipuissa on tutkimusten mukaan Hash - taulukko erinomaisen tehokas. Sitä parempi, mitä monihaaraisempi ja syvempi puu on. Asemista jopa 75% voi löytyä taulukosta valmiiksi, eli tutkittavia asemia jää noin neljäsosa (25%). Tästä aiheutuvan ajansäästön myötä ehditään puuta tutkia yksi puolisiirto pidemmälle kuin ilman Hash - taulukkoa. Eräiden asiantuntijoiden mukaan Hash-taulukon käyttö kattaa 99% hyödyistä, joita kaikilla Alfabetan laajennuksilla on saatavissa.

 

(4) ...Internal iterative deepening                                                                                                                           

 

Mitä se on?

 

Tämä on helppo. Ilmaisu tarkoittaa kerroksittaista syventämistä, kuten jo PVS:n yhteydessä oli puhe. Eli ensin etsitään paras jatko syvyydellä 1 puolisiirto, sitten syvyydellä 2 puolisiirtoa jne. tarkentaen hakutulosta kerros kerrokselta. Tämä onkin erinomainen tapa välttää Mr.Mipin Sakkeus-ilmiötä. Kun nimittäin hakuun varattu aika loppuu, niin meillä on valmiiksi arvioitu paras siirto edelliseltä kierrokselta, vaikka nykyisen lehtikerroksen tutkimus on vielä kesken. Myöskään ajankäytön kannalta ei iteratiivinen syventäminen ole niin tuhlaavaista kuin luulisi. Lehtimäärähän kasvaa kerrosten välissä haarautumistekijän verran, jolloin alemman kerroksen tutkimiseen kuluu vain murto-osa siitä ajasta, joka nykyiseen tulee kulumaan. Suhteellisen vähäinen investointi siihen varmuuteen nähden, että hyvä (vaikka ei ehkä paras) siirto on valmiiksi laskettu ajan loppuessa.

 

(5 ) ...,dynamic move ordering with killer and history heuristics                                                                       

 

Mitä se on?

 

Heuristics eli Heuristiikka on muistaakseni alunperin tieteenala, joka tutkii kylpyvedestä aiheutuneita vesivaurioita. Jotenkin se on siitä kehittynyt kaikkea nerokasta, mutta selittämätöntä, käsitteleväksi teoriaksi, ollen näin selvästi sukua mm. Tri Hilseen tieteelliselle metodille. Tässä tapauksessa heuristiikka tarkoittaa kaikkia niitä toimintoja, joiden avulla generoidut asemat voidaan järjestää arviointia varten tehokkaasti ennakolta. Alfabeta leikkauksen kannaltahan on tärkeää, että parhaan tuloksen todennäköisesti antavat siirrot tutkitaan ensin. Tämän vuoksi kannattaa jo aiemmissa tutkimuksissa hyviksi osoittautuneista siirroista pitää taulukkoa.

 

Killer heuristiikka taulukoi voimasiirtoja ('killereitä'). Niille on tunnusomaista, että ne antavat huomattavasti paremman arvon asemalle, kuin muut vaihtoehtoiset siirrot samasta lähtöasemasta. Vastustajan siirtovuorolla taas puhutaan kumoussiirroista, jotka ainoina riittävät vastapeliin, muiden johtaessa surkeaan arviointitulokseen. Näitä poikkeuksellisia siirtoja säilytetään killer-taulukossa. Kun seuraavaksi järjestetään siirtoja arviointia varten, katsotaan onko mahdollisesti taulukossa joku asemaan sopiva siirto ja evaluoidaan se ensin. Ideana on, että koska tämä siirto on jossakin sukulaisasemassa osoittautunut voimasiirroksi, niin se on varmaan hyvä nytkin.

 

History heuristiikka on edellisen ajatuksen tarkennus ja hienoviritys. Siinä talletetaan taulukkoon voimasiirtojen lisäksi tieto siitä, kuinka usein ne ovat aiheuttaneet alfabeta leikkauksen. Näin taulukko voidaan vielä sisäisesti järjestää paremmuusjärjestykseen - suurimmat rosvosiirrot kärkeen. Selvää on tietysti myös, että taulukkoa tulee pelin kuluessa jatkuvasti päivittää ja uusia. Suurikin voimasiirto, joka esiintyi jo ammoin, ei välttämättä vastaa juuri esiintynyttä hyvää siirtoa 'naapuriasemassa'. Tähän päivitys toimintaan viitataan määreellä  'dynamic' .

 

(6) ....recursive null-move pruning..

 

Mitä se on ?

 

Null-move pruning on menetelmä, jonka avulla pyritään löytämään uhkaavia, mahdollisesti ratkaisevia voimasiirtoja. Sen käyttö perustuu siihen, että jompikumpi pelaaja siirtovuorollaan "passaa", eli tekee nollasiirron, jolloin toinen pelaaja tulee tehneeksi kaksi siirtoa peräkkäin. Tämä taas mahdollistaa asemassa piilevien uhkausten esiin kaivamisen nopeasti, ilman täyshakua. Saatua tietoa voi sitten käyttää mm. siirtojärjestyksen valintaan kuten heuristiikkaakin.

 

Toki samaa tekniikkaa voi käyttää pidemmällekin, antamalla vastustajan tehdä useampia nolla siirtoja peräkkäin. Tähän viittaa otsikon ilmaisu 'rekursiivinen'. Etenkin hiljaisissa asemissa voi näin löytyä hyökkäyskohteita, 'peli-ideoita'. Harvoin kuitenkaan menetelmää käytetään kahden siirron yli, koska syntyvät asemat alkavat olla epärealistisia. Vastaavasti on hyödyksi tehdä omalla siirtovuorolla nolla siirto, jolloin näkyy mitä vastustaja uhkaa. Eräs seikka, joka lyö nollasiirtotekniikkaa vahvasti korville on siirtopakko-asemien olemassaolo. Tämän vuoksi nolla siirroista yleensä luovutaan loppupeliasemissa.

 

Tietokoneohjelmista Fritz on kuuluisa siitä, että se soveltaa laajalti nollasiirto tekniikkaa. Tämä yleensä vahvistaa koneen taktista pelaamista, mutta rohkaisee myös tavallista selektiivisempään siirtovalintaan. Se, että Fritz ei tutki kaikkia siirtoja edes suhteellisen lähellä juurta, käy ilmi Alexis Baburinin suorittamasta kokeesta, jossa hän antoi Fritz 5:n ratkaistavaksi yksinkertaisen, materiaaliköyhän, Sam Loydin 3-siirron mattitehtävän.

 

(Ka2,Db6,sc5 - Ka4,sb5  3#).

 

 Tätä  Fritz5 mietti 20 minuuttia ja oli sen jälkeen sitä mieltä, että kyseessä on 5 siirron matti.

 

 

(7) .... selective extensions....

 

Mitä se on ?

 

Kaikenlaisen puuntutkimuksen tulee pakostakin jossain vaiheessa loppua ja on aika tehdä siirto. Yllättäen nyt ei ilman muuta olekaan selvää, että tehdään paras siihen asti löydetty siirto. Voihan olla, että olemme juuri viimeksi lasketulla kierroksella lyöneet tornin, joka antaa meille muhkean pistejohdon. Se, että vastustaja seuraavalla kierroksella vastaavasti ottaa daamimme jäi tosin laskematta ajanpuutteen vuoksi.

 

Tämmöisiä horisontti-ilmiöitä pyrkivät kaikki ohjelmat välttämään käyttämällä valikoivaa jatkolaskentaa, jota otsikon termi tarkoittaa. Koska jatkojen täydelliseen laskentaan ei luonnollisesti ole aikaa, pitää valita minkä tyyppisiä siirtoja ja miten pitkään lasketaan valikoivasti. Tavallisesti - ja näin Dark Thought myös tekee - lasketaan lyöntisarjat, shakkaussarjat sekä lähellä korotusta olevien sotilaiden siirtosarjat siihen asti, että saavutetaan suhteellisen hiljainen asema (Lyönnit & shakit loppu, korotustilanne selvinnyt suuntaan tai toiseen). Täytyy muistaa, että normaalilaskenta päättyy noin 6 - 10 puolisiirron jälkeen, johon nämä erikoistapaukset lisäävät helposti toisen mokoman syvyyttä. Tämä alkaakin olla jo useimmille ihmispelaajille liikaa.

 

(8) ...and interior node recognisers.

 

Mitä se on ?

 

Tässä ohjelman kuvaajat heittäytyvät hienostelijoiksi ja antavat 'tieteellisiä' nimiä suhteellisen yksinkertaiselle asialle. Totuus on, että toisin kuin yhdenkoon sukkahousuja, evaluaatiofunktioita pitää olla erilaisia eri tarpeeseen. Aluksi mennään tietysti avauskirjaston mukaan. Sitten tarvitaan ensimmäistä arviointifunktiota, joka painottaa keskusta kontrollia, upseerien kehitystä ja kuninkaan turvaa (=linnoituksesta lisäbonusta jne.). Kun sitten päädytään loppupeliin, vapaasotilaat, kuninkaan aktivointi jne. vaativat toisenlaista arviointifunktiota. Tämän lisäksi ohjelman tulee huomata, milloin asema pelkistyy sellaiseksi, että siirrot selviävät jo loppupelitaulukosta. Edelleen mikäli asema-arvio näyttää suurta plussaa, voi olla aiheellista käynnistää erillinen matinetsintärutiini.

 

Dark Thought omaa mm. näitä tilanteita varten omat, erilliset evaluointifunktionsa. Kun se havaitsee asiantilan muuttuneen (=interior node recognisation), se ottaa käyttöön uuden arviointitavan.

 

================================================================================

 

No, niin. Puuuh, tästähän tuli pitkä juttu. On kai tässä tapauksessa pakko sanoa, että Mr.Mipin jutut saattavat sittenkin olla aika ajoin "puisevia".