Egy sakk feladat megoldása algoritmussal
Nyolc vezér probléma Helyezzünk el egy 8x8-as sakktáblán 8 vezért úgy, hogy azok ne üssék egymást! (Tehát helyezzük el a vezéreket úgy, hogy se egy sorban, se egy oszlopban, se átlósan ne legyen egy vonalban kettő.)
A feladatunk tehát a következő: helyezzünk el egy 8x8-as sakktáblán 8 vezért úgy, hogy azok ne üssék egymást (tehát helyezzük el a vezéreket úgy, hogy se egy sorban, se egy oszlopban, se átlósan ne legyen egy vonalban kettő)! Általánosítva a feladatot: helyezzünk el egy NxN-es sakktáblán N vezért úgy, hogy azok ne üssék egymást!
Az biztos, hogy minden oszlopban csak egy vezért helyezhetünk el, mivel egyébként a két vezér ütné egymást. Ezért megpróbáljuk mindegyik oszlopoban egymás után elhelyezni a vezéreket: Az első vezért letesszük az első oszlop első sorába. Majd a második oszlopba megpróbáljuk elhelyezni a vezért az első sortól haladva a negyedik sorig úgy, hogy az ne üsse az első oszlopban levő vezért. Ha sikerült, megyünk tovább a harmadik oszlopba; ha nem sikerült, akkor visszamegyünk az első oszlophoz és ott a vezért eggyel lejjebb tesszük. Így haladunk tovább, amíg nem sikerül a negyedik oszlopba is lerakni a vezért.
A feladat lépésenként Az első oszlopban letesszük az első helyre (1. sorba) a vezért, feltételezve, hogy ez a jó hely:
A második oszlop 1. és 2. sorába nem tehetünk vezért, mivel akkor ütné a már fent levőt (ábrán pirossal jelölve). A 3. sorba le lehet rakni a vezért, ezért letesszük oda, feltételezve hogy ez is a jó helyre került:
A harmadik oszlopban sem az 1. , 2. , 3. , sem a 4 A harmadik oszlopban sem az 1., 2., 3., sem a 4. helyre nem tehetünk vezért, mivel mindegyik helyen ütné valamelyik már eddig fent levő vezért:
Most a harmadik oszlopban az 1 Most a harmadik oszlopban az 1. sorba nem tehetünk vezért (mivel ütné az első oszlopban levőt), de a 2. sorba már tehetünk, ezért kitesszük oda:
A negyedik oszlopban nem tudunk az 1. , 2. , 3. , de a 4 A negyedik oszlopban nem tudunk az 1., 2., 3., de a 4. helyre sem tenni vezért, mivel ütné valamelyik már fent levőt: Ezért visszalépünk a harmadik oszlopba és megpróbáljuk ott máshová (a sorra következő helyekre, tehát a 3., 4. sorba) tenni a vezért. Azonban itt sem tehetjük a vezért sem a 3., sem a 4. sorba, mivel akkor ütné az első két oszlopban levőket: Ezért visszamegyünk a második oszlopba. Mivel itt már kipróbáltuk mind a négy helyet, ezért semmi mást nem tehetünk, mint hogy visszamegyünk egészen az első oszlopba és ott tesszük a vezért eggyel lejjebb:
Most a második oszlop 1., 2., 3. sorába nem rakhatjuk le a vezért, mivel akkor ütné az első oszlopban levőt. A 4. sorba azonban lerakhatjuk:
A harmadik oszlop 1. sorába letehetünk vezért, ezért lerakjuk oda:
A negyedik oszlop 1. , 2. sorába nem tehetünk vezért, de a 3 A negyedik oszlop 1., 2. sorába nem tehetünk vezért, de a 3. sorba lerakhatjuk: Mivel sikerült a negyedik oszlopban is leraknunk a vezért, ezért megtaláltuk a feladat egyik megoldását, így befejeződhet az algoritmus.
Ha az összes megoldást meg szeretnénk találni, akkor a megtalált megoldás után csak megjegyeznénk (esetleg kiírnánk) azt és mennénk tovább a keresésben. Tehát a fenti példában a negyedik oszlop 4. sorával folytatnánk a keresést, majd ismét visszalépnénk a harmadik oszlopoz. Hasonlóan folytatnánk mindaddig, amíg ki nem próbáltuk az összes lehetőséget.