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

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 akkor kezdet st[p] ← ha akkor meghív kiír_vagy_elment_mátrixba_vagy_vektorba_vektor.

Hasonló előadás


Az előadások a következő témára: "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 akkor kezdet st[p] ← ha akkor meghív kiír_vagy_elment_mátrixba_vagy_vektorba_vektor."— Előadás másolata:

1

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 akkor kezdet st[p] ← ha 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 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 akkor kezdet st[p] ← ha 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 különben p ←p-1; vége

4 A backtracking rekurzív változata Minden pval  -től -ig végezd el kezdet st[p]← pval ha akkor meghív kiír_vagy_elment_mátrixba_vagy_vektorba_vektor (p) különben önmagát_hívja_meg_a bktr (p+1) vége.

5 A backtracking rekurzív változata Minden pval  -től -ig végezd el kezdet st[p]← pval ha akkor meghív kiír_vagy_elment_mátrixba_vagy_vektorba_vektor (p) különben önmagát_hívja_meg_a bktr (p+1) vége.

6 Megválaszolandó kérdések  Honnan veszi a lehetséges részmegoldásokat, egy egy megoldás esetén? 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.  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. Verem szerkezet Legfelső szint Legalsó szint elemek elérési sorrendje

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 1 2 345 6 789 10 11 12 Mit helyettesítettünk egy egy csomóval? 831 12 3 4 5 6 7 8 12345678 sor indexoszlop index lépésszám Folytasd!

11 1.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 2.http://www.carol.ro/fisiere/file/Backtracking/13%20-%20Joc%20- %20Problema%20labirintului.swfhttp://www.carol.ro/fisiere/file/Backtracking/13%20-%20Joc%20- %20Problema%20labirintului.swf 3.http://www.carol.ro/fisiere/file/Backtracking/15%20- %20Problema%20labirintului%20-%20implementare.swfhttp://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} Minden pval  1 -től n -ig végezd el kezdet st[p]← pval ha megfelel(p) akkor ha p=n akkor meghív kiír_vektor(p, st) különben bktr (p+1) vége. Algoritmus megfelel(p) {függvény} megfelel:=igaz; Minden j  1 -től p-1 -ig végezd el kezdet ha st[p] = st[j] akkor megfelel:=hamis vége

13 A backtracking rekurzív változata a variációra Alprogram bktr(p) {eljárás} Minden pval  1 -től n -ig végezd el kezdet st[p]← pval ha megfelel(p) akkor ha p=k akkor meghív kiír_vektor(p, st) különben bktr (p+1) vége. Algoritmus megfelel(p) {függvény} megfelel:=igaz; Minden j  1 -től p-1 -ig végezd el kezdet ha st[p] = st[j] akkor megfelel:=hamis vége Változás: csak a p=n változott p=k -ra

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


Letölteni ppt "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 akkor kezdet st[p] ← ha akkor meghív kiír_vagy_elment_mátrixba_vagy_vektorba_vektor."

Hasonló előadás


Google Hirdetések