Backtracking is goed te illustreren met het 8-koninginnen probleem. De opgave luidt als volgt:

Oplossing met 5 koninginnen

Om uit te leggen hoe backtracking werkt bekijken we eerst twee voor de hand liggende alternatieven.

Brute kracht:

We genereren alle mogelijke standen met 8 koninginnen en bepalen van elke stand of dit een oplossing is. Daar zitten ook veel 'domme' standen bij met b.v. alle koninginnen op een kluitje:

De computer krijgt hier aardig wat werk aan...
Er zijn (64 over 8) standen = 64!/((64-8)!*8!) = 4.426.165.368 standen. Per stand moet er een aantal (maximaal 8*7/2= 28) koninginnenparen worden beoordeeld of deze elkaar niet aankijken. Dit gaat zeker een aardig tijdje duren.


Optimalisatie (maar nog steeds Brute Kracht):

De vorige methode kan beter, we weten immers dat er op elke kolom maar 1 koningin kan staan. We zetten nu een koningin op elke kolom en genereren alle mogelijke combinaties van standen waar 1 koningin in elke kolom staat, b.v.:

Nu zijn er 88 standen = 16.777.216 standen om te evalueren. Dit is aanzienlijk beter dan de vorige, ca. 250x zo snel! Maar nog steeds een aardig klusje voor de computer.


Hoe werkt het met backtracking?

Demo: klik op run! om de puzzel aan het werk te zien

Afmeting:

Het grote verschil is dat we elke koningin bij het neerzetten al gaan beoordelen. We gaan het stap voor stap doen. Om het verhaal niet te lang te maken nemen we een 4 x 4 bordje waar 4 koninginnen op geplaatst moeten worden. We beginnen met een leeg bord.
We beginnen bij de eerste kolom, we plaatsen een koningin op de eerste rij.

Daarna gaan we naar de volgende kolom om een koningin te plaatsen.

Op de eerste rij? Nee, op die rij staat al wat.
Op de tweede rij? Nee, op die diagonaal staat al wat.

Op de derde rij? Ja, dat mag wel.

Dan gaan we weer een kolom verder voor de volgende koningin.

Maar wat we ook proberen ... op geen enkele rij van de derde kolom mag een koninging staan.

We gaan weer terug naar kolom 2 en zetten de dame een stapje verder naar rij 4.

Dat mag.

Dan gaan we weer verder naar kolom 3. Op de eerste rij kan niet

Op de tweede rij mag wel.

Voor het eerst bereiken we de vierde en laatste kolom!

Helaas kunnen we de dame daar in geen enkele rij kwijt.

Dat is balen! Helaas terug naar kolom 3...

Helaas kunnen we de dame in niet meer in de volgende rijen kwijt.

Terug naar kolom 2...

Daar stond de dame al achteraan...

Dus nu zelfs helemaal terug naar kolom 1 en de dame een rij verder proberen...

Wie weet werkt dit beter?

Verder naar kolom 2, de dame kan alleen op de laatste rij.

Okee, gaan we proberen

Door naar kolom 3, de dame kan direct op de eerste rij.

Da's mooi!

Nu naar kolom 4 ... en daar komt de eerste oplossing!

In slechts 26 zetten.

Hierna is het nog niet af, we wilden eigenlijk ALLE oplossingen weten, maar voor de uitleg van het algoritme laten we het hierbij. Er zal blijken dat er een tweede oplossing is, n.l. het spiegelbeeld van deze.
Uiteindelijk (na 16 zetten) zal het programma alle rijen van kolom 1 behandeld hebben, vervolgens wil het algoritme (als het consequent is) terug naar kolom 0 en moet dan kunnen concluderen dat het klaar is.
Nog even ter vergelijking:

Het moge duidelijk zijn wat het snelste werkt.

Algoritme van het 'N' koninginnenprobleem (met de 'while' benadering)