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

Programozási módszerek Backtracking (Visszalépéses keresés) Általános bemutató Lénárt Szabolcs Páll Boglárka.

Hasonló előadás


Az előadások a következő témára: "Programozási módszerek Backtracking (Visszalépéses keresés) Általános bemutató Lénárt Szabolcs Páll Boglárka."— Előadás másolata:

1 Programozási módszerek Backtracking (Visszalépéses keresés) Általános bemutató Lénárt Szabolcs Páll Boglárka

2 Alkalmazási terület azon feladatok megoldásakor alkalmazható, amelyeknek eredményét az M 1  M 2 ...  M n Descartes-szorzatnak azon elemei alkotják, amelyek eleget tesznek bizonyos belső feltételeknek. M 1  M 2 ...  M n Descartes-szorzatot a megoldások terének nevezzük.

3 1. Példa Példa: Irassuk ki az összes 6 / 49 lottón kisorsolható lehetséges eseteket! Ebben az esetben a megoldás tere: [1.. 49] x [1.. 49] x [1.. 49] x [1.. 49] x [1.. 49] x [1.. 49] egy lehetséges megoldás A belső feltételek pedig: a számok mind különböznek egymástól

4 Megoldás: [1.. 49] kiválasztjuk az első számot az M1 halmazból 1 [1.. 49] kiválasztjuk a második számot az M2 halmazból 1 x nem tesz eleget a belső feltételnek !!! kiválasztjuk az új második számot az M2 halmazból 2 [1.. 49] kiválasztjuk a harmadik számot az M3 halmazból 1 x nem tesz eleget a belső feltételnek !!! kiválasztjuk az új harmadik számot az M3 halmazból 3... eljutunk az első megoldásig x [1.. 49] x [1.. 49] x [1.. 49]

5 Megoldás: további megoldások megtalálása: A megoldástér utolsó halmazának (itt M6) elemeit próbáljuk ki sorra Ha elfogytak az elemek visszalépünk és változtatunk egyet az előzőleg betett elemen ( M5 halmazból választunk új elemet) Megint a megoldástér utolsó halmazának (itt M6) elemeit próbáljuk ki sorra Ha elfogytak az elemek visszalépünk és változtatunk egyet az előzőleg betett elemen ( M5 halmazból választunk új elemet) Ha elfogytak az elemek visszalépünk és változtatunk egyet az előzőleg betett elemen ( M4 halmazból választunk új elemet) Eljutunk az utolsó megoldáshoz:

6 2. Példa Példa: Keressük meg az összes olyan pontosan háromjegyű szigorúan pozitív természetes számot, amelyek számjegyeinek összege kisebb 15-nél, illetve a számjegyek szorzata nullától különböző páros szám. Ebben az esetben a megoldás tere: {1,2,3…,9} x {1,2,3…,9} x {1,2,3…,9} A belső feltételek pedig: Számjegyei összege kisebb legyen 15-nél és a számjegyek szorzata pedig páros szám legyen.

7 Megoldás: [1.. 9] kiválasztjuk az első számot az M1 halmazból 1 [1.. 9] kiválasztjuk a második számot az M2 halmazból 1 x [1.. 9] kiválasztjuk a harmadik számot az M3 halmazból 1 x kiválasztjuk az új harmadik számot az M3 halmazból 2 eljutunk az első megoldásig nem tesz eleget a belső feltételnek !!!

8 Megoldás: további megoldások megtalálása: A megoldástér utolsó halmazának (itt M3) elemeit próbáljuk ki sorra Ha elfogytak az elemek visszalépünk és változtatunk egyet az előzőleg betett elemen ( M2 halmazból választunk új elemet) Megint a megoldástér utolsó halmazának (itt M3) elemeit próbáljuk ki sorra Ha elfogytak az elemek visszalépünk és változtatunk egyet az előzőleg betett elemen ( M2 halmazból választunk új elemet) Ha elfogytak az elemek visszalépünk és változtatunk egyet az előzőleg betett elemen ( M1 halmazból választunk új elemet) Eljutunk az utolsó megoldáshoz:

9 A módszer bemutatása A visszalépéses keresés nem generálja a Descartes- szorzat minden x = (x 1, x 2,..., x n )  M 1  M 2 ...  M n elemét, hanem csak azokat, amelyek esetében remélhető, hogy megfelelnek a belső feltételeknek. Igy csökkenthetjük a próbálkozások számát. Az eredményt általában egy tömbbe tároljuk. A 1.példánk esetében a megoldást egy hatelemes tömbbe fogjuk tárolni. var szam:array[1..6] of 1..49;

10 A módszer bemutatása Az algoritmusban a tömb elemei egyenként kapnak értékeket: x i számára csak akkor „javasolunk értéket”, ha x 1, x 2,..., x i–1 már kaptak értéket az aktuálisan generált eredményben. Az x i -re vonatkozó „javaslat”-ot akkor fogadjuk el, amikor x 1, x 2,..., x i–1 értékei az x i értékével együtt megvalósítják a belső feltételeket. Ha az i-edik lépésben a belső feltételek nem teljesülnek, x i számára új értéket választunk az M i halmazból.

11 A módszer bemutatása Ha az M i halmaz minden elemét kipróbáltuk, visszalépünk az i–1-edik elemhez, amely számára új értéket „javasolunk” az M i–1 halmazból Ha az i-edik lépésben a belső feltételek teljesülnek, az algoritmus folytatódik ha teljesülnek a folytatási feltételek és akkor az x i+1 -nek adunk értéket (példa: nem generáltuk mind a három számjegyet), különben a végeredményhez jutunk.

12 Algoritmus (rekurzív megközelítés) Algoritmus Rekurzív_Backtracking(i): Minden m j eleme M i értékre végezd el: x i := m j Ha Megfelel(i) akkor {ha megfelel a belső feltételeknek} Ha i < n akkor {ha meg van folytatas} Rekurzív_Backtracking(i+1) {tovabblepek a kovetkezo elemhez} különben {ha a vegere ertem} Ki: x 1, x 2,..., x n {eredmeny kiirasa} vége(ha) vége(minden) Vége(algoritmus)

13 Algoritmus (rekurzív megközelítés) Algoritmus Megfelel(i): Megfelel := igaz Ha a belső feltételek x 1, x 2,..., x i esetében nem teljesülnek akkor Megfelel := hamis vége(ha) Vége(algoritmus)

14

15


Letölteni ppt "Programozási módszerek Backtracking (Visszalépéses keresés) Általános bemutató Lénárt Szabolcs Páll Boglárka."

Hasonló előadás


Google Hirdetések