(VISSZALÉPÉSES KERESÉS) Hozd létre n=3 összes permutációját.
Lehetséges megoldások: (1, 2, 3) vagy (2, 1, 3) vagy (3, 1, 2), stb
Helytelen megoldások: (1, 1, 3) vagy (2, 1, 2), stb.
Észrevesszük, hogy helytelen az a megoldás, amiben egy elem
ismétlődik...
Akkor miért hozzuk létre az
összes megoldást, ha nagyrésze helytelen??? A backtracking olyan algoritmus, melyet akkor használunk, amikor egy példának sok megoldása van. A backtracking csakis a helyes megoldásokat hozza létre. A megoldást egy tömbbe teszi, melynek elemei egy véges halmaz elemeiből kerülnek ki. 1.hely 2.hely 3.hely 1.hely 2.hely 3.hely 1 1 2 2 2 1 3 1 2 2 3 3 3 1 3 1 1 2 2 3 3 2 1 1 2 1 2 2 3 3 3 vége
A backtracking algoritmus 1.k=1 (első helyen állunk, első pozíciót töltjük) 2.van-e még fel nem használt érték a jelenlegi pozíción? -ha van: -betesszük az első fel nem használt elemet, -ellenőrizzük, hogy az újonnan betett elem a többi, előző helyeken levő elemekkel együtt helyes megoldáshoz vezethet-e: -ha igen, akkor : -ha feltöltöttük x utolsó pozícióját, akkor kiiratjuk a megoldást (x tömböt), majd ismételjük a lépéseket a 2. lépéstől kezdve,
-ha nem töltöttük fel x tömb utolsó pozícióját, akkor x
következő pozíciójára lépünk (k=k+1), és ismételjük a lépéseket a 2. lépéstől,
-ha nem, akkor ismételjük a lépéseket az 2. lépéstől,
-nincs – x-ben hátralépünk (k=k-1). Ellenőrizzük, hogy a k egyenlő-e 0-val, nulladik
helyen állunk? -ha igen, az algoritmus megáll, -ha nem ismételjük a lépéseket a 2.-től Megj. 1.Valahányszor előre lépünk (k=k+1), a feltöltést az új helyen az első értékkel kezdjük
2.Valahányszor hátra lépünk (k=k-1), a feltöltést az új helyen a következő, fel
A következő, matematikából ismert fogalmakat használjuk: -permutáció, -variáció, -kombináció, -Descartes szorzat, -halmazok, alhalmazok. De amíg a matematikában a megoldások számára, az informatikában a megoldásokra koncentrálunk.
Permutáció: olyan eljárás, amellyel különféle elemekből, számokból úgy
alkotunk csoportokat, hogy bennük minden egyes elem vagy szám előfordul, de más és más sorrendben.
Variáció: n elemből k darab elemet használunk, minden elem csakis egyszer,
más és más sorrendben fordul elő. Pl. {1,2,3,4} 3-ad osztályú variációi: (1,2,3), (1,2,4), (1,3,2), (1,3,4), (3,1,2) stb.
Kombináció: n elemből k darab elemet használunk, minden elem csakis
egyszer, szigorúan növekvő sorrendben fordul elő. Pl. {1,2,3,4} 3-ad osztályú kombinációi: (1,2,3), (1,2,4), (1,3,4), stb. Az (1,2,3) és (2,1,3) vagy (3,2,1) ugyanaz a megoldás
A n elem k-ad osztályú variációinak száma nagyobb, mint a kombinációé.
Példa: A 100 m-es gyorsúszás döntőjében 8-an indulnak. Hányféleképpen lehet az érmeket kiosztani, ha tudjuk, hogy az első három helyezett kap érmet? 8 elemből 3-at használunk. De (2,5,1) nem ugyanaz, mint a (1,2,5)-es megoldás – variáció
Példa: Hányféleképpen lehet 8 tanuló közül 3-t kiválasztani olyan esetekben,
amikor a sorrend közömbös? 8 elemből 3-at használunk. De (2,5,1) ugyanaz, mint a (1,2,5)-es megoldás – kombináció Vége