1 / 14

A backtracking módszer .

A backtracking módszer. XI. oszt ály. A backtracking nem rekurzív változata, azaz az iteratív alakja. p←1; st [p] ← 0; amíg p>0 végezd el kezdet ha < ha még létezik a p szinten ki nem próbált halmazelem > a kkor kezdet

zilya
Download Presentation

A backtracking módszer .

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. A backtracking módszer. XI. osztály

  2. A backtracking nem rekurzív változata, azaz az iteratív alakja p←1; st[p] ← 0; amíg p>0 végezd el kezdet ha<ha még létezik a p szinten ki nem próbált halmazelem> akkor kezdet st[p] ←<egy újabb érték a lehetséges megoldások halmazából> ha <megfelel(p) függvény igazat térít vissza>akkor ha<végső megoldáshoz értünk> akkor meghív kiír_vagy_elment_mátrixba_vagy_vektorba_vektor (p) különben kezdet p ←p+1; st[p] ←0; vége vége különben p ←p-1; vége

  3. A backtracking nem rekurzív változata, azaz az iteratív alakja p←1; st[p] ← 0; amíg p>0 végezd el kezdet ha<ha még létezik a p szinten ki nem próbált halmazelem> akkor kezdet st[p] ←<egy újabb érték a lehetséges megoldások halmazából> ha <megfelel(p) függvény igazat térít vissza>akkor ha<végső megoldáshoz értünk> akkor meghív kiír_vagy_elment_mátrixba_vagy_vektorba_vektor (p) különben kezdet p ←p+1; st[p] ←0; vége vége különben p ←p-1; vége

  4. A backtracking rekurzív változata Mindenpval  <v1> -től<vn> -igvégezd el kezdet st[p]← pval ha<megfelel(p) függvény igazat térít vissza>akkor ha<végső megoldáshoz értünk> akkor meghív kiír_vagy_elment_mátrixba_vagy_vektorba_vektor (p) különben önmagát_hívja_meg_abktr(p+1) vége.

  5. A backtracking rekurzív változata Mindenpval  <v1> -től<vn> -igvégezd el kezdet st[p]← pval ha<megfelel(p) függvény igazat térít vissza>akkor ha<végső megoldáshoz értünk> akkor meghív kiír_vagy_elment_mátrixba_vagy_vektorba_vektor (p) különben önmagát_hívja_meg_abktr(p+1) vége.

  6. Megválaszolandó kérdések • Honnan veszi a lehetséges részmegoldásokat, egy egy megoldás esetén? • Mikor jutunk egy megoldáshoz? • Mikor jó egy részmegoldás? • Hány megoldásra számíthatunk? Lehete meghatározni ezt előre? Hogyan? • Kell –e a megoldások halmazából optimálisat kiválasztani, vagy T tulajdonságuakat, vagy más utólagos műveletet végezni ezekkel, mely ezen megoldások összehasonlítását ígényli?

  7. Vektorral dolgozunk, melynek vagy az elemeit, vagy az elemeinek az indexeit mentjük egy - egy verem szintre. Legfelső szint elemek elérési sorrendje Verem szerkezet Legalsó szint • De megtörténhet az is, hogy egy – egy veremszintre más - más vektor eleme kerül (vagy vektorban alvektor eleme), nem ugyan az a vektoré. Lásd a Descartes szorzatot is. • Ha mátrixból nyerjük, akkor a mátrix sora lesz a verem szintjeés az oszlopa a szintre kerülő elem értéke vagy egy másik mátrixot használunk a verem helyett, ahhoz, hogy bejelöljük azokat az elemeket, amiket egy megoldásba lehetséges jó részmegoldásként érintettünk már. Lásd a Labirintus feladatot.

  8. Vegyel egy A4-es kockás lapot, rajzolj egy labirintust, úgy, hogy az utakat ábrázoló kockákat besatírozod halványan ceruzával. Majd rajzold le mégegyszer ugyanazt a labirintust és helyezd el a kiinduló pontba Bodrit, majd keresd meg, hány kivezető utat találhat, minden talált utat satírozd be különböző színnel.

  9. Vegyel egy A4-es kockás lapot, rajzolj egy labirintust, úgy, hogy az utakat ábrázoló kockákat besatírozod halványan ceruzával. Majd rajzold le mégegyszer ugyanazt a labirintust és helyezd el a kiinduló pontba Bodrit, majd keresd meg, hány kivezető utat találhat, minden talált utat satírozd be különböző színnel. Hány utat találsz, tudod –e mindig előre? Bodri eljut mindig a csonthoz? Van –e kapcsolat a, közös a talált utak között? Hogyan találta meg az utat? Ird le a lépéseit Bodrinak. A különböző lépést külön sorszámmal tüntesd fel. http://prog.ide.sk/pas2.php?s=40

  10. Mit helyettesítettünk egy egy csomóval? 12 11 10 Folytasd! 7 8 9 6 3 4 5 2 8 3 1 1

  11. http://www.carol.ro/fisiere/file/Backtracking/12%20-%20Problema%20comis-voiajorului%20-%20implementare.swfhttp://www.carol.ro/fisiere/file/Backtracking/12%20-%20Problema%20comis-voiajorului%20-%20implementare.swf http://www.carol.ro/fisiere/file/Backtracking/13%20-%20Joc%20-%20Problema%20labirintului.swf http://www.carol.ro/fisiere/file/Backtracking/15%20-%20Problema%20labirintului%20-%20implementare.swf

  12. A backtracking rekurzív változata a permutációra Alprogram bktr(p) {eljárás} Mindenpval  1-tőln -igvégezd el kezdet st[p]← pval hamegfelel(p) akkor hap=nakkor meghív kiír_vektor(p, st) különben bktr(p+1) vége. Algoritmusmegfelel(p) {függvény} megfelel:=igaz; Minden j 1-tőlp-1 -igvégezd el kezdet hast[p] = st[j] akkormegfelel:=hamis vége

  13. A backtracking rekurzív változata a variációra Alprogram bktr(p) {eljárás} Mindenpval  1-tőln -igvégezd el kezdet st[p]← pval hamegfelel(p) akkor hap=kakkor meghív kiír_vektor(p, st) különben bktr(p+1) vége. Algoritmusmegfelel(p) {függvény} megfelel:=igaz; Minden j 1-tőlp-1 -igvégezd el kezdet hast[p] = st[j] akkormegfelel:=hamis vége Változás: csak a p=nváltozottp=k -ra

  14. A backtracking rekurzív változata a variációra Alprogram bktr(p) {eljárás} Mindenpval  1-tőln -igvégezd el kezdet st[p]← pval hamegfelel(p) akkor hap=kakkor meghív kiír_vektor(p, st) különben bktr(p+1) vége. Algoritmusmegfelel(p) {függvény} megfelel:=igaz; Minden j 1-tőlp-1 -igvégezd el kezdet ha(st[p] <= st[j])akkormegfelel:=hamis vége Változás: 1. csak a p=nváltozottp=k -ra 2. (st[p] = st[j])feltétel változott (st[p] <= st[j]) -re

More Related