28.09.2013 Views

SUDOKU - Pythagoras

SUDOKU - Pythagoras

SUDOKU - Pythagoras

SHOW MORE
SHOW LESS

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-

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

Saved successfully!

Ooh no, something went wrong!