27.07.2013 Views

Nr. 3 - DSU - Dansk Skak Union

Nr. 3 - DSU - Dansk Skak Union

Nr. 3 - DSU - Dansk Skak Union

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

... TROLDMANDEN<br />

Tidslinie:<br />

1985 1985: Steen Suurballe<br />

påbegynder programmeringen<br />

af Gandalf.<br />

1993 1993: Gandalf spiller sin første<br />

rigtige turnering, Computer-<br />

VM i München. Gandalf 1.0<br />

slår ét af verdens bedste<br />

programmer, Mchess, men<br />

opnår samlet set kun 3½ af 11.<br />

Steen Suurballe møder i<br />

München Dan Wulff, som kort<br />

efter går i gang med at skabe en<br />

åbningsbog til programmet.<br />

1997 1997: Gandalf scorer 4 af 6<br />

point ved AEGON-turneringen<br />

i Holland, hvor mennesker<br />

spiller mod maskiner.<br />

Præstationsratingen over 6<br />

partier er 2450.<br />

2001 2001: Seneste kommercielle<br />

version af Gandalf, version 5.1,<br />

udsendes for det hollandske<br />

firma Lokasoft.<br />

Nov. 2002 2002: Steen Suurballe<br />

møder Christian Kongsted, og<br />

et samarbejde påbegyndes.<br />

Apr. 2003 2003: Gandalf bliver nr.<br />

1 i den prestigefyldte turnering<br />

CSS Online Masters foran alle<br />

verdens stærkeste programmer:<br />

Deep Fritz, Deep Shredder og<br />

Deep Junior. Gandalf slår Deep<br />

Fritz 2 ½-1 ½ i kvartfinalen og<br />

Deep Shredder i finalen,<br />

ligeledes med cifrene 2 ½-1½.<br />

eb. Febr. 2004 2004: Gandalf bliver nr.<br />

5 i den internationale computerskakturnering<br />

IPCC i<br />

Paderborn, Tyskland.<br />

remtid Fremtid: Danmarksmesteren<br />

fra 2003, Peter Heine Nielsen,<br />

har indvilliget i at spille en<br />

match over fire partier mod<br />

Gandalf. For tiden mangler der<br />

arrangørkræfter til at løfte<br />

opgaven.<br />

34 2004 /3/114<br />

fandt skakprogrammører en række<br />

nye algoritmer, som går under fællesbetegnelsen<br />

‘pruning’ (engelsk<br />

for forkortelse/beskæring), og nu er<br />

kompleksiteten faldet til 2,5 i n’te<br />

potens.<br />

En af de vigtigste teknikker til at<br />

skære i søgetræet er algoritmen ‘nullmove’,<br />

som blev udviklet i slutningen<br />

af 80’erne. Null-move betyder<br />

at ‘undlade at trække/at melde pas’,<br />

og princippet kan bedst illustreres<br />

med et eksempel:<br />

t+vWlVmT<br />

+oOo+oOo<br />

o+m+-+-+<br />

+b+-O-+-<br />

-+-+p+-+<br />

+-+-+n+pPpP-PpP<br />

RnBqK-+r<br />

I denne stilling kan hvid vælge<br />

mellem i alt 32 lovlige træk, og det<br />

er kun 6 af disse, der ikke taber<br />

materiale. Ved hjælp af null-movealgoritmen<br />

kan programmøren sikre<br />

sig, at hans program koncentrerer sig<br />

om disse varianter, hvilket sparer<br />

megen tid. Hvis programmet kun<br />

analyserer 6 ud af 32 træk, vil søgetræet<br />

blive reduceret til omtrent 19<br />

pct. af sin oprindelige størrelse.<br />

Null-move fungerer således, at<br />

programmet tillader, at den ene side<br />

trækker to gange i træk. Modstanderen<br />

laver et null-move – han undlader<br />

at trække. Denne algoritme anvendes,<br />

når den ene part har en meget<br />

stor fordel. Lad os forestille os,<br />

at hvid i ovenstående diagram spiller<br />

4. 0-0, hvorefter sort tager løberen<br />

med 4... axb5. Hvid fortsætter så<br />

med 5. d3. I denne stilling vil et<br />

computerprogram evaluere balancen<br />

mellem hvid og sort til ca. –3, altså<br />

stor sort fordel, da hvid har tabt en<br />

løber uden kompensation.<br />

Her laver programmet et nullmove<br />

for at teste, hvor god sorts stilling<br />

egentlig er. En hurtig analyse<br />

viser, at evalueringen ikke ændrer<br />

sig nævneværdigt selv med et ekstra<br />

træk til hvid. Derefter afprøver programmet<br />

samtlige andre muligheder<br />

i træk 5 til hvid og laver et null-move<br />

efter hvert af disse træk. Resultatet<br />

er dog det samme som efter 5. d3.<br />

Hvid står dårligt, selv om han får et<br />

ekstra træk, og programmet har derfor<br />

gode grunde til at formode, at<br />

sort har en meget stabil fordel. Varianten<br />

med 4.0-0 kan forkastes.<br />

Forestiller man sig i stedet for en<br />

stilling, hvor den ene side foretager<br />

et officersoffer i forbindelse med et<br />

matangreb, er det derimod sandsynligt,<br />

at null-move-algoritmen vil<br />

resultere i, at angrebet ikke uden videre<br />

kan afvises. Derfor vil programmet<br />

regne videre på sådanne mere<br />

lovende officersofre.<br />

0,27 bonde?<br />

Et andet centralt punkt i skakprogrammering<br />

er at tune programmets<br />

positionelle evaluering. Computere<br />

omsætter alt til tal, og hvis man skal<br />

lære et computerprogram at spille<br />

skak, må man opbygge et fuldstændigt<br />

parallel-univers, som udelukkende<br />

består af tal. For maskinerne<br />

findes kun det binære talsystem, 0’er<br />

og 1’taller, som så kan omsættes til<br />

ti-tals-systemet for at gøre det lettere<br />

for os mennesker. Computerne<br />

kan lægge tal sammen og trække<br />

dem fra hinanden, og til sidst vælger<br />

de så den mulighed (dvs. det træk),<br />

der har den højeste talværdi.<br />

Når skak skal laves om til tal, så<br />

melder der sig en masse spørgsmål,<br />

man som skakspiller aldrig tidligere<br />

har behøvet at finde svar på. Hvor<br />

meget er eksempelvis løberparret<br />

værd i en åben midtspils-stilling, 0,2<br />

eller 0,3 bonde eller mere? Hvor<br />

meget er det værd at sætte et tårn på<br />

en åben linje, og hvor meget bonus<br />

skal man have for et tårn på syvende<br />

række?<br />

De fleste skakspillere vil sikkert<br />

sige, at det kommer an på stillingen,<br />

men det er ikke godt nok for et<br />

computerprogram. Alt skal defineres<br />

helt præcist, og hvis man beder<br />

programmet om at lægge +0,4 til<br />

evalueringen for et tårn på 7.række,<br />

så vil den altid gøre præcis dét, indtil<br />

man i detaljer definerer de stillin-

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

Saved successfully!

Ooh no, something went wrong!