SUDOKU - Pythagoras
SUDOKU - Pythagoras
SUDOKU - Pythagoras
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
12<br />
Backtracking<br />
Bij backtracking bouwt de computer een bestand<br />
op van gedeeltelijk ingevulde sudoku’s<br />
dat hij net zo lang uitbreidt tot hij de oplossing<br />
heeft. Dat bestand zorgt ervoor dat hij<br />
niet dezelfde mogelijkheid weer opnieuw<br />
gaat proberen. Dat bestand is geordend als<br />
een boom. Hieronder wordt de methode geillustreerd<br />
aan de hand van het simpele geval<br />
van een 2 x 2 sudoku, waarin één cijfer is<br />
ingevuld. De enige regel is dat in elke kolom<br />
en rij precies één 1 en één 2 komt te staan.<br />
In elke ‘knoop’ van de boom staat een deels<br />
ingevulde sudoku. Naar beneden toe in de<br />
boom is er steeds één vakje extra ingevuld.<br />
De computer is steeds bezig in één van de<br />
knopen van de boom. Een aanroep van het<br />
programma heet een iteratie (herhaling).<br />
Het is niet gek als je het volgen van het<br />
onderstaande voorbeeld lastig vindt, het<br />
is tenslotte een computermethode. Bij dit<br />
voorbeeld zijn in totaal vijf knopen en vier<br />
De backtracking-methode in het geval van een 2 x 2 sudoku<br />
PYTHAGORAS FEBRUARI 2006<br />
takken, met slechts één knoop waar twee<br />
takken aan ontspruiten.<br />
Voor echte sudoku’s wordt het veel ingewikkelder.<br />
Bij de sudoku op pagina 11 krijg<br />
je al 6885 knopen. Aan 2129 van die knopen<br />
zitten geen (naar beneden wijzende) takken<br />
vast, aan 2798 één, aan 1788 twee en aan<br />
170 drie. Er zijn blijkbaar zoveel cijfers gegeven<br />
dat de mogelijkheden vier tot en met<br />
negen (het maximum) niet voorkomen.<br />
Voor- en nadelen van backtracking<br />
De vertaling van ‘to backtrack’ is ‘op z’n<br />
schreden terugkeren’ of ‘terugkrabbelen’.<br />
Dat is precies wat de backtracking-methode<br />
doet: teruggaan als het verder niet gaat. In<br />
het voorbeeld hieronder is dat het geval bij<br />
het derde plaatje.<br />
De backtracking-procedure is niet alleen<br />
iteratief, maar ook recursief. Dat wil zeggen<br />
dat hij zichzelf aanroept. Duizelingwekkend,<br />
een procedure die zichzelf aanroept die zich-