Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Egy sakk feladat megoldása algoritmussal

Hasonló előadás


Az előadások a következő témára: "Egy sakk feladat megoldása algoritmussal"— Előadás másolata:

1 Egy sakk feladat megoldása algoritmussal

2 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ő.)

3 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!

4 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.

5 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:

6 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:

7 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:

8 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:

9 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:

10 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:

11 A harmadik oszlop 1. sorába letehetünk vezért, ezért lerakjuk oda:

12 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.

13 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.


Letölteni ppt "Egy sakk feladat megoldása algoritmussal"

Hasonló előadás


Google Hirdetések