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