1 / 15

Program ozási módszerek Backtracking (Visszalépéses keresés) Általános bemutató

Program ozási módszerek Backtracking (Visszalépéses keresés) Általános bemutató. L énárt Szabolcs Páll Boglárka. Alkalmazási terület.

istas
Download Presentation

Program ozási módszerek Backtracking (Visszalépéses keresés) Általános bemutató

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programozási módszerekBacktracking(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 M1M2 ... Mn Descartes-szorzatnak azon elemei alkotják, amelyek eleget tesznek bizonyos belső feltételeknek. • M1M2 ... Mn 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] 6 23 5 18 46 33 egy lehetséges megoldás • A belső feltételek pedig: a számok mind különböznek egymástól

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

  5. Megoldás:további megoldások megtalálása: 1 2 3 4 5 6 1 2 3 4 67 Ha elfogytak az elemek visszalépünkés változtatunk egyet az előzőleg betett elemen ( M4 halmazból választunk új elemet) Megint a megoldástér utolsó halmazának (itt M6) elemeit próbáljuk ki sorra A megoldástér utolsó halmazának (itt M6) elemeit próbáljuk ki sorra 1 2 3 568 ... 1 2 3 548 49 1 2 3 4 68 ... 1 2 3 4 649 1 2 3 4 5 7 1 2 3 4 5 8 1 2 3 4 5 9 1 2 3 4 5 10 ... 1 2 3 4 5 49 ... Ha elfogytak az elemek visszalépünk és változtatunk egyet az előzőleg betett elemen ( M5 halmazból választunk új elemet) 1 2 3 464748 1 2 3 4647 49 1 2 3 4648 49 1 2 3 474849 ... 1 2 3 4 4647 1 2 3 4 4648 1 2 3 4 4649 1 2 3 4 4748 1 2 3 4 4749 1 2 3 4 4849 Ha elfogytak az elemek visszalépünk és változtatunk egyet az előzőleg betett elemen ( M5 halmazból választunk új elemet) Eljutunk az utolsó megoldáshoz: 44 45 46 47 48 49

  6. 2. Példa • Példa: Keressük meg az összes olyan pontosan háromjegyű szigorúan pozitívtermé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: x x [1 .. 9] [1 .. 9] [1 .. 9] kiválasztjuk az első számot az M1 halmazból kiválasztjuk a második számot az M2 halmazból kiválasztjuk a harmadik számot az M3 halmazból nem tesz eleget a belső feltételnek !!! 1 1 1 kiválasztjuk az új harmadik számot az M3 halmazból 2 eljutunk az első megoldásig 1 1 2

  8. Megoldás:további megoldások megtalálása: 1 1 2 1 21 Ha elfogytak az elemek visszalépünkés változtatunk egyet az előzőleg betett elemen ( M1 halmazból választunk új elemet) Megint a megoldástér utolsó halmazának (itt M3) elemeit próbáljuk ki sorra A megoldástér utolsó halmazának (itt M3) elemeit próbáljuk ki sorra 1 22 1 23 ... 1 29 2 1 1 ... 9 4 1 1 1 4 1 1 6 1 1 8 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 ( M2 halmazból választunk új elemet) 1 4 1 1 42 ... 1 49 Eljutunk az utolsó megoldáshoz: 9 4 1

  9. A módszer bemutatása • A visszalépéses keresés nem generálja a Descartes-szorzat minden x = (x1, x2, ..., xn) M1M2 ... Mn 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: • xi számára csak akkor „javasolunk értéket”, ha x1, x2, ..., xi–1 már kaptak értéket az aktuálisan generált eredményben. • Az xi-re vonatkozó „javaslat”-ot akkor fogadjuk el, amikor x1, x2, ..., xi–1 értékei az xi é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, xiszámára új értéket választunk az Mihalmazból.

  11. A módszer bemutatása • Ha az Mihalmaz minden elemét kipróbáltuk, visszalépünk az i–1-edik elemhez, amely számára új értéket „javasolunk” az Mi–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 xi+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 mj eleme Miértékre végezd el: xi := mj 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: x1, x2, ..., xn{eredmeny kiirasa} vége(ha) vége(ha) vége(minden) Vége(algoritmus)

  13. Algoritmus (rekurzív megközelítés) Algoritmus Megfelel(i): Megfelel:= igaz Haa belső feltételek x1, x2, ..., xi esetében nem teljesülnekakkor Megfelel :=hamis vége(ha) Vége(algoritmus)

More Related