feladatmegoldási stratégiák visszalépéses keresés...

37
Feladatmegoldási stratégiák Visszalépéses keresés II.

Upload: others

Post on 28-Jul-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Feladatmegoldási stratégiák Visszalépéses keresés II.alg1.elte.hu/downloads/eloadas/Strategia2.pdf · 2019-04-15 · Feladatmegoldási stratégiák Visszalépéses keresés

Feladatmegoldási stratégiák

Visszalépéses keresés II.

Page 2: Feladatmegoldási stratégiák Visszalépéses keresés II.alg1.elte.hu/downloads/eloadas/Strategia2.pdf · 2019-04-15 · Feladatmegoldási stratégiák Visszalépéses keresés

Feladatmegoldási stratégiák

Visszalépéses keresés

Feladat – 1. változat

Egy vállalkozás N különböző állásra keres munkásokat.

Pontosan N jelentkező érkezett, ahol minden jelentkező

megmondta, hogy mely munkákhoz ért, illetve amihez ért.

A vállalkozás vezetője azt szeretné, ha az összes jelentkezőt fel

tudná venni és minden munkát elvégeztetni.

M(i) – az i. munkás ennyi munkához ért

E(i,j) – az i. munkás által elvégezhető j. munka

2019. 04. 15. 10:57Szlávi Péter, Zsakó László: Adatszerkezetek I. 2/37

Page 3: Feladatmegoldási stratégiák Visszalépéses keresés II.alg1.elte.hu/downloads/eloadas/Strategia2.pdf · 2019-04-15 · Feladatmegoldási stratégiák Visszalépéses keresés

Feladatmegoldási stratégiák

Visszalépéses keresés

N munka – N jelentkező:Keresés(N,Van,Y):

i:=1; Y:=(0,...,0)

Ciklus amíg i1 és i≤N {lehet még és nincs még kész}

Jóesetkeresés(i,Van,j)

Ha Van akkor Y(i):=j; i:=i+1 {előrelépés}

különben Y(i):=0; i:=i-1 {visszalépés}

Ciklus vége

Van:=(i>N)

Eljárás vége.

2019. 04. 15. 10:57Szlávi Péter, Zsakó László: Adatszerkezetek I. 3/37

Page 4: Feladatmegoldási stratégiák Visszalépéses keresés II.alg1.elte.hu/downloads/eloadas/Strategia2.pdf · 2019-04-15 · Feladatmegoldási stratégiák Visszalépéses keresés

Feladatmegoldási stratégiák

Visszalépéses keresés

N munka – N jelentkező:Jóesetkeresés(i,Van,j):

j:=Y(i)+1

Ciklus amíg j≤M(i) és rossz(i,j)

j:=j+1

Ciklus vége

Van:=(j≤M(i))

Eljárás vége.

2019. 04. 15. 10:57Szlávi Péter, Zsakó László: Adatszerkezetek I. 4/37

Page 5: Feladatmegoldási stratégiák Visszalépéses keresés II.alg1.elte.hu/downloads/eloadas/Strategia2.pdf · 2019-04-15 · Feladatmegoldási stratégiák Visszalépéses keresés

Feladatmegoldási stratégiák

Visszalépéses keresés

N munka – N jelentkező:rossz(i,j):

k:=1

Ciklus amíg k<i és E(k,Y(k))≠E(i,j)

k:=k+1

Ciklus vége

rossz:=(k<i)

Eljárás vége.

E(i,j) – az i. munkás által elvégezhető

j. munka

2019. 04. 15. 10:57Szlávi Péter, Zsakó László: Adatszerkezetek I. 5/37

Darab Állások: 1. 2. 3.

1. jelentkező: 2

1 4

2. jelentkező: 1

2

3. jelentkező: 2

1 2

4. jelentkező: 1

3

5. jelentkező: 3

1 3 5

Page 6: Feladatmegoldási stratégiák Visszalépéses keresés II.alg1.elte.hu/downloads/eloadas/Strategia2.pdf · 2019-04-15 · Feladatmegoldási stratégiák Visszalépéses keresés

Feladatmegoldási stratégiák

Visszalépéses keresés

Feladat – 2. változat

Egy vállalkozás N különböző állásra keres munkásokat.

Pontosan N jelentkező érkezett, ahol minden jelentkező

megmondta, hogy mely munkákhoz ért, illetve amihez ért.

A vállalkozás vezetője azt szeretné, ha az összes jelentkezőt fel

tudná venni és minden munkát elvégeztetni.

F(i,j) – az i. munkás ért-e a j. munkához?

2019. 04. 15. 10:57Szlávi Péter, Zsakó László: Adatszerkezetek I. 6/37

Page 7: Feladatmegoldási stratégiák Visszalépéses keresés II.alg1.elte.hu/downloads/eloadas/Strategia2.pdf · 2019-04-15 · Feladatmegoldási stratégiák Visszalépéses keresés

Feladatmegoldási stratégiák

Visszalépéses keresés

N munka – N jelentkező:Keresés(N,Van,Y):

i:=1; Y:=(0,...,0)

Ciklus amíg i1 és i≤N {lehet még és nincs még kész}

Jóesetkeresés(i,Van,j)

Ha Van akkor Y(i):=j; i:=i+1 {előrelépés}

különben Y(i):=0; i:=i-1 {visszalépés}

Ciklus vége

Van:=(i>N)

Eljárás vége.

2019. 04. 15. 10:57Szlávi Péter, Zsakó László: Adatszerkezetek I. 7/37

Page 8: Feladatmegoldási stratégiák Visszalépéses keresés II.alg1.elte.hu/downloads/eloadas/Strategia2.pdf · 2019-04-15 · Feladatmegoldási stratégiák Visszalépéses keresés

Feladatmegoldási stratégiák

Visszalépéses keresés

N munka – N jelentkező:Jóesetkeresés(i,Van,j):

j:=Y(i)+1

Ciklus amíg j≤N és

(rossz(i,j) vagy nem F(i,j))

j:=j+1

Ciklus vége

Van:=(j≤N)

Eljárás vége.

2019. 04. 15. 10:57Szlávi Péter, Zsakó László: Adatszerkezetek I. 8/37

i h h i h

h i h h h

i i h h h

h h i h h

i h i h i

Page 9: Feladatmegoldási stratégiák Visszalépéses keresés II.alg1.elte.hu/downloads/eloadas/Strategia2.pdf · 2019-04-15 · Feladatmegoldási stratégiák Visszalépéses keresés

Feladatmegoldási stratégiák

Visszalépéses keresés

N munka – N jelentkező:rossz(i,j):

k:=1

Ciklus amíg k<i és Y(k)≠j

k:=k+1

Ciklus vége

rossz:=(k<i)

Eljárás vége.

2019. 04. 15. 10:57Szlávi Péter, Zsakó László: Adatszerkezetek I. 9/37

i h h i h

h i h h h

i i h h h

h h i h h

i h i h i

Page 10: Feladatmegoldási stratégiák Visszalépéses keresés II.alg1.elte.hu/downloads/eloadas/Strategia2.pdf · 2019-04-15 · Feladatmegoldási stratégiák Visszalépéses keresés

Feladatmegoldási stratégiák

Visszalépéses keresés

Feladat

Egy pályaválasztási intézet elhatározza, hogy a 8. osztályos

tanulók iskolaválasztásai alapján (minden jelentkezési lapon

maximum két iskolát lehet megjelölni) megpróbál olyan 'beis-

kolázást' megvalósítani, amelyben minden tanulót az általa

megjelölt valamelyik iskolába fel is vesznek. (Tudjuk az egyes

iskolákba felvehetők számát.) Adj meg egy lehetséges jó

beiskolázást!

2019. 04. 15. 10:57Szlávi Péter, Zsakó László: Adatszerkezetek I. 10/37

Page 11: Feladatmegoldási stratégiák Visszalépéses keresés II.alg1.elte.hu/downloads/eloadas/Strategia2.pdf · 2019-04-15 · Feladatmegoldási stratégiák Visszalépéses keresés

Feladatmegoldási stratégiák

Visszalépéses keresés

N tanuló beiskolázása M iskolába:Keresés(N,Van,Y):

i:=1; Y:=(0,...,0)

Ciklus amíg i1 és i≤N {lehet még és nincs még kész}

Jóesetkeresés(i,Van,j)

Ha Van akkor Y(i):=j; i:=i+1 {előrelépés}

különben Y(i):=0; i:=i-1 {visszalépés}

Ciklus vége

Van:=(i>N)

Eljárás vége.

2019. 04. 15. 10:57Szlávi Péter, Zsakó László: Adatszerkezetek I. 11/37

Page 12: Feladatmegoldási stratégiák Visszalépéses keresés II.alg1.elte.hu/downloads/eloadas/Strategia2.pdf · 2019-04-15 · Feladatmegoldási stratégiák Visszalépéses keresés

Feladatmegoldási stratégiák

Visszalépéses keresés

N tanuló beiskolázása M iskolába:Jóesetkeresés(i,Van,j):

j:=Y(i)+1

Ha Igény(i,2)=0 akkor K:=1 különben K:=2

Ciklus amíg j≤K és rossz(i,j)

j:=j+1

Ciklus vége

Van:=(j≤K)

Eljárás vége.

2019. 04. 15. 10:57Szlávi Péter, Zsakó László: Adatszerkezetek I. 12/37

Page 13: Feladatmegoldási stratégiák Visszalépéses keresés II.alg1.elte.hu/downloads/eloadas/Strategia2.pdf · 2019-04-15 · Feladatmegoldási stratégiák Visszalépéses keresés

Feladatmegoldási stratégiák

Visszalépéses keresés

N tanuló beiskolázása M iskolába:rossz(i,j):

db:=1

Ciklus k=1-től i-1-ig

Ha Igény(k,Y(k))=Igény(i,j) akkor db:=db+1

Ciklus vége

rossz:=(db>Kapacitás(Igény(i,j))

Eljárás vége.

2019. 04. 15. 10:57Szlávi Péter, Zsakó László: Adatszerkezetek I. 13/37

Page 14: Feladatmegoldási stratégiák Visszalépéses keresés II.alg1.elte.hu/downloads/eloadas/Strategia2.pdf · 2019-04-15 · Feladatmegoldási stratégiák Visszalépéses keresés

Feladatmegoldási stratégiák

Visszalépéses keresés

További visszalépéses keresés feladatok:

Labirintusban útkeresés

Permutációk, kombinációk előállítása

Térképszínezés

Pénzfelbontás adott címletekre

2019. 04. 15. 10:57Szlávi Péter, Zsakó László: Adatszerkezetek I. 14/37

Page 15: Feladatmegoldási stratégiák Visszalépéses keresés II.alg1.elte.hu/downloads/eloadas/Strategia2.pdf · 2019-04-15 · Feladatmegoldási stratégiák Visszalépéses keresés

Feladatmegoldási stratégiák

Visszalépéses keresés

Visszalépéses keresés feladatok: (végtelen eset)

Úthossz-korlát: Fává egyenesítünk, végtelen fát állítunk elő.

Nem engedjük, hogy az aktuális út hossza meghaladja az

úthossz-korlátot.

Ha túl rövidre választjuk az úthossz-korlátot (túl

alacsonyan vágjuk el a gráfot) akkor nem találunk

megoldást.

Ha a start csúcsban áll elő a visszalépési feltétel, akkor:

1. nincs megoldás

2. túl rövidre választottuk az

úthossz-korlátot2019. 04. 15. 10:57Szlávi Péter, Zsakó László: Adatszerkezetek I. 15/37

Page 16: Feladatmegoldási stratégiák Visszalépéses keresés II.alg1.elte.hu/downloads/eloadas/Strategia2.pdf · 2019-04-15 · Feladatmegoldási stratégiák Visszalépéses keresés

Feladatmegoldási stratégiák

Visszalépéses keresés

Visszalépéses keresés feladatok:

Kör kiküszöbölése

lesz egy újabb visszalépési feltétel: az aktuális csúcs

szerepelt-e már az aktuális úton

ha igen: rögtön visszalépés (így nem zárjuk be a kört).

2019. 04. 15. 10:57Szlávi Péter, Zsakó László: Adatszerkezetek I. 16/37

Page 17: Feladatmegoldási stratégiák Visszalépéses keresés II.alg1.elte.hu/downloads/eloadas/Strategia2.pdf · 2019-04-15 · Feladatmegoldási stratégiák Visszalépéses keresés

Feladatmegoldási stratégiák

Visszalépéses keresés

A visszalépéses stratégia

véges fákban mindig terminál (véges fákban teljes);

végtelen gráfban úthossz-korláttal terminál (kör kizárása: az

aktuális út csúcsait nem engedjük ismételni;

egy zsákutcát többször is bejár, ha több út vezet hozzá.

2019. 04. 15. 10:57Szlávi Péter, Zsakó László: Adatszerkezetek I. 17/37

Page 18: Feladatmegoldási stratégiák Visszalépéses keresés II.alg1.elte.hu/downloads/eloadas/Strategia2.pdf · 2019-04-15 · Feladatmegoldási stratégiák Visszalépéses keresés

Feladatmegoldási stratégiák

Visszalépéses kiválogatás

Visszalépéses kiválogatás rekurzív algoritmus:Visszalépéses kiválogatás(N,Db,Y):

Db:=0; X:=(0,…,0); Backtrack(1,N,X,Db,Y)

Eljárás vége.

2019. 04. 15. 10:57Szlávi Péter, Zsakó László: Adatszerkezetek I. 18/37

Page 19: Feladatmegoldási stratégiák Visszalépéses keresés II.alg1.elte.hu/downloads/eloadas/Strategia2.pdf · 2019-04-15 · Feladatmegoldási stratégiák Visszalépéses keresés

Feladatmegoldási stratégiák

Visszalépéses kiválogatás

Backtrack(i,N,X,Db,Y):

Ha i=N+1 akkor Db:=Db+1; Y(Db):=X

különben Ciklus j=1-től N-ig

Ha nem tilos(i,j) és nem Rossz(i,j)

akkor X(i):=j

Backtrack(i+1,N,X,Db,Y)

Ciklus vége

Elágazás vége

Eljárás vége.

2019. 04. 15. 10:57Szlávi Péter, Zsakó László: Adatszerkezetek I. 19/37

Page 20: Feladatmegoldási stratégiák Visszalépéses keresés II.alg1.elte.hu/downloads/eloadas/Strategia2.pdf · 2019-04-15 · Feladatmegoldási stratégiák Visszalépéses keresés

Feladatmegoldási stratégiák

Visszalépéses maximumkeresés

Visszalépéses maximumkeresés rekurzív algoritmus:Visszalépéses maximumkeresés(N,Van,Y):

X:=(0,…,0); Y:=X; Backtrack(1,N,X,Y)

Van:=Y≠(0,…,0)

Eljárás vége.

2019. 04. 15. 10:57Szlávi Péter, Zsakó László: Adatszerkezetek I. 20/37

Page 21: Feladatmegoldási stratégiák Visszalépéses keresés II.alg1.elte.hu/downloads/eloadas/Strategia2.pdf · 2019-04-15 · Feladatmegoldási stratégiák Visszalépéses keresés

Visszalépéses maximumkeresés rekurzív algoritmus:Backtrack(i,N,X,Y):

Ha i=N+1 akkor ha nagyobb?(X,Y) akkor Y:=X

különben Ciklus j=1-től N-ig

Ha nem tilos(i,j) és nem Rossz(i,j)

akkor X(i):=j

Backtrack(i+1,N,X,Y)

Ciklus vége

Elágazás vége

Eljárás vége.

2019. 04. 15. 10:57

Feladatmegoldási stratégiák

Visszalépéses maximumkeresés

Szlávi Péter, Zsakó László: Adatszerkezetek I. 21/37

Page 22: Feladatmegoldási stratégiák Visszalépéses keresés II.alg1.elte.hu/downloads/eloadas/Strategia2.pdf · 2019-04-15 · Feladatmegoldási stratégiák Visszalépéses keresés

Példa: (1. változat)

Egy vállalkozás N különböző állásra keres munkásokat.

Pontosan N jelentkező érkezett, ahol minden jelentkező

megmondta, hogy mely munkákhoz ért, illetve amihez ért, arra

mennyi fizetést kérne.

Minden munkát el kell végeztetni

valakivel, mindenkinek munkát

kell adni, de a legolcsóbban!

2019. 04. 15. 10:57

Feladatmegoldási stratégiák

Visszalépéses maximumkeresés

Állások: 1. 2. 3. 4. 5.

1. jelentkező: 100 0 0 100 0

2. jelentkező: 0 200 0 0 0

3. jelentkező: 200 100 0 0 0

4. jelentkező: 0 0 200 0 400

5. jelentkező: 500 0 400 0 200

Szlávi Péter, Zsakó László: Adatszerkezetek I. 22/37

Page 23: Feladatmegoldási stratégiák Visszalépéses keresés II.alg1.elte.hu/downloads/eloadas/Strategia2.pdf · 2019-04-15 · Feladatmegoldási stratégiák Visszalépéses keresés

Ha egy megoldás elkészül, akkor a költségét így számíthatjuk ki:

költség(X):

S:=0

Ciklus i=1-től N-ig

S:=S+F(i,X(i))

Ciklus vége

Függvény vége.

Kezdetben olyan – fiktív – megoldásból kell kiindulni, aminél

minden valódi megoldás jobb.

2019. 04. 15. 10:57

Feladatmegoldási stratégiák

Visszalépéses maximumkeresés

Szlávi Péter, Zsakó László: Adatszerkezetek I. 23/37

Page 24: Feladatmegoldási stratégiák Visszalépéses keresés II.alg1.elte.hu/downloads/eloadas/Strategia2.pdf · 2019-04-15 · Feladatmegoldási stratégiák Visszalépéses keresés

Legjobb állás(N,i):

Ha i>N akkor

Ha költség(X)<költség(Y) akkor Y:=X

különben

Ciklus j=1-től N-ig

Ha nem volt(i,j) és F(i,j)>0

akkor X(i):=j; Legjobb állás(N,i+1)

Ciklus vége

Elágazás vége

Eljárás vége.

Ebben a megoldásban feleslegesen

sokszor hívjuk a Költség függvényt.

2019. 04. 15. 10:57

Feladatmegoldási stratégiák

Visszalépéses maximumkeresés

Szlávi Péter, Zsakó László: Adatszerkezetek I. 24/37

Page 25: Feladatmegoldási stratégiák Visszalépéses keresés II.alg1.elte.hu/downloads/eloadas/Strategia2.pdf · 2019-04-15 · Feladatmegoldási stratégiák Visszalépéses keresés

Legjobb állás(N,i):

Ha i>N akkor költ:=költség(X)

Ha költ<legjobb

akkor Y:=X; legjobb:=költ

különben

Ciklus j=1-től N-ig

Ha nem volt(i,j) és F(i,j)>0

akkor X(i):=j; Legjobb állás(N,i+1)

Ciklus vége

Elágazás vége

Eljárás vége.

Itt feleslegesen nem hívjuk a Költség

függvényt, jó legjobb kezdőérték kell.

2019. 04. 15. 10:57

Feladatmegoldási stratégiák

Visszalépéses maximumkeresés

Szlávi Péter, Zsakó László: Adatszerkezetek I. 25/37

Page 26: Feladatmegoldási stratégiák Visszalépéses keresés II.alg1.elte.hu/downloads/eloadas/Strategia2.pdf · 2019-04-15 · Feladatmegoldási stratégiák Visszalépéses keresés

Már csak egy apróságra gondolhatunk: ha van egy megoldásunk

és a most készülő megoldásról látszik, hogy már biztosan

rosszabb lesz – többe fog kerülni –, akkor azt már nem érdemes

tovább vinni.

Legyen az eljárás paramétere az eddigi költség, s az eljárást csak

akkor folytassuk, ha még nem érjük el a korábban kiszámolt

maximális költséget. Emiatt nem a megoldások elkészültekor kell

számolni költséget, hanem menet közben, folyamatosan.

2019. 04. 15. 10:57

Feladatmegoldási stratégiák

Visszalépéses maximumkeresés

Szlávi Péter, Zsakó László: Adatszerkezetek I. 26/37

Page 27: Feladatmegoldási stratégiák Visszalépéses keresés II.alg1.elte.hu/downloads/eloadas/Strategia2.pdf · 2019-04-15 · Feladatmegoldási stratégiák Visszalépéses keresés

Legjobb állás(N,i,költ):

Ha i>N akkor

Ha költ<legjobb akkor Y:=X; legjobb:=költ

különben Ciklus j=1-től N-ig

Ha nem volt(i,j) és F(i,j)>0

és költ+F(i,j)<legjobb

akkor X(i):=j

Legjobb állás(N,i+1,költ+F(i,j))

Ciklus vége

Elágazás vége

Eljárás vége.

2019. 04. 15. 10:57

Feladatmegoldási stratégiák

Visszalépéses maximumkeresés

Szlávi Péter, Zsakó László: Adatszerkezetek I. 27/37

Page 28: Feladatmegoldási stratégiák Visszalépéses keresés II.alg1.elte.hu/downloads/eloadas/Strategia2.pdf · 2019-04-15 · Feladatmegoldási stratégiák Visszalépéses keresés

Példa: (2. változat)

Egy vállalkozás N különböző állásra keres munkásokat.

Pontosan M jelentkező érkezett (M<N), ahol minden

jelentkező megmondta, hogy mely munkákhoz ért, illetve

amihez ért, arra mennyi fizetést kérne.

Mindenkinek munkát kell adni

(csak egyet mindenkinek), de a

legolcsóbban!

2019. 04. 15. 10:57

Feladatmegoldási stratégiák

Visszalépéses maximumkeresés

Állások: 1. 2. 3. 4. 5.

1. jelentkező: 100 0 0 100 0

2. jelentkező: 0 200 0 0 0

3. jelentkező: 200 100 0 0 0

4. jelentkező: 0 0 200 0 400

Szlávi Péter, Zsakó László: Adatszerkezetek I. 28/37

Page 29: Feladatmegoldási stratégiák Visszalépéses keresés II.alg1.elte.hu/downloads/eloadas/Strategia2.pdf · 2019-04-15 · Feladatmegoldási stratégiák Visszalépéses keresés

Legjobb állás(N,M,i,költ):

Ha i>M akkor

Ha költ<legjobb akkor Y:=X; legjobb:=költ

különben Ciklus j=1-től N-ig

Ha nem volt(i,j) és F(i,j)>0

és költ+F(i,j)<legjobb

akkor X(i):=j

Legjobb állás(N,M,i+1,költ+F(i,j))

Ciklus vége

Elágazás vége

Eljárás vége.

2019. 04. 15. 10:57

Feladatmegoldási stratégiák

Visszalépéses maximumkeresés

Szlávi Péter, Zsakó László: Adatszerkezetek I. 29/37

Page 30: Feladatmegoldási stratégiák Visszalépéses keresés II.alg1.elte.hu/downloads/eloadas/Strategia2.pdf · 2019-04-15 · Feladatmegoldási stratégiák Visszalépéses keresés

Példa: (3. változat)

Egy vállalkozás N különböző állásra keres munkásokat.

Pontosan M jelentkező érkezett (M>N), ahol minden

jelentkező megmondta, hogy mely munkákhoz ért, illetve

amihez ért, arra mennyi fizetést kérne.

Mindenkinek munkát el kell

végezni, egy-egy embernek, de a

legolcsóbban!

2019. 04. 15. 10:57

Feladatmegoldási stratégiák

Visszalépéses maximumkeresés

Állások: 1. 2. 3. 4.

1. jelentkező: 100 0 0 100

2. jelentkező: 0 200 0 0

3. jelentkező: 200 100 0 0

4. jelentkező: 0 0 200 0

5. jelentkező: 500 0 400 0

Szlávi Péter, Zsakó László: Adatszerkezetek I. 30/37

Page 31: Feladatmegoldási stratégiák Visszalépéses keresés II.alg1.elte.hu/downloads/eloadas/Strategia2.pdf · 2019-04-15 · Feladatmegoldási stratégiák Visszalépéses keresés

Legjobb állás(N,M,i,költ):

Ha i>N akkor

Ha költ<legjobb akkor Y:=X; legjobb:=költ

különben Ciklus j=1-től M-ig

Ha nem volt(j,i) és F(j,i)>0

és költ+F(j,i)<legjobb

akkor X(i):=j

Legjobb állás(N,M,i+1,költ+F(j,i))

Ciklus vége

Elágazás vége

Eljárás vége.

2019. 04. 15. 10:57

Feladatmegoldási stratégiák

Visszalépéses maximumkeresés

Szlávi Péter, Zsakó László: Adatszerkezetek I. 31/37

Page 32: Feladatmegoldási stratégiák Visszalépéses keresés II.alg1.elte.hu/downloads/eloadas/Strategia2.pdf · 2019-04-15 · Feladatmegoldási stratégiák Visszalépéses keresés

Feladatmegoldási stratégiák

Elágazás és korlátozás

A backtrack alkalmas-e optimális megoldás keresésére? Van

költség, és a legkisebb költségű megoldást szeretnénk előállítani.

• Van egy induló költségkorlát (felső becslés).

• Ennél a költségkorlátnál nem költségesebb megoldást

keresünk.

2019. 04. 15. 10:57Szlávi Péter, Zsakó László: Adatszerkezetek I. 32/37

Page 33: Feladatmegoldási stratégiák Visszalépéses keresés II.alg1.elte.hu/downloads/eloadas/Strategia2.pdf · 2019-04-15 · Feladatmegoldási stratégiák Visszalépéses keresés

Feladatmegoldási stratégiák

Elágazás és korlátozás

Az aktuális pontot tetszőlegesen választhatjuk az aktív pontok

közül. A lényeg, hogy a választott aktuális pontból elérhető

összes pontot generáljuk, és ha lehetséges megoldás, akkor

betesszük az aktív pontok halmazába.

Tehát az algoritmus egy, az aktív pontokat tartalmazó adagolót

használ az aktív pontok tárolására.

A visszalépéses stratégia esetén elég volt egyetlen pontot, az

aktuális pontot tárolni, mert a következő aktív pont mindig

ennek fia, testvére, vagy apja.

2019. 04. 15. 10:57Szlávi Péter, Zsakó László: Adatszerkezetek I. 33/37

Page 34: Feladatmegoldási stratégiák Visszalépéses keresés II.alg1.elte.hu/downloads/eloadas/Strategia2.pdf · 2019-04-15 · Feladatmegoldási stratégiák Visszalépéses keresés

Feladatmegoldási stratégiák

Elágazás és korlátozásAdott a C(X) valós értékű célfüggvény, és olyan X megoldást

keresünk, amelyre a célfüggvény C(X) értéke minimális.

A megoldáskezdeményekre meg tudunk adni olyan AK(X) alsó

korlát függvényt, amelyekre teljesül az alábbi egyenlőtlenség.

Az Y megoldás bármely X részmegoldására: AK(X)≤C(Y)

Ekkor az adagoló lehet az AK szerinti minimumos prioritási

sor, tehát az aktív pontok közül mindig a legkisebb alsó korlátú

pontot választjuk aktuálisnak.

2019. 04. 15. 10:57Szlávi Péter, Zsakó László: Adatszerkezetek I. 34/37

Page 35: Feladatmegoldási stratégiák Visszalépéses keresés II.alg1.elte.hu/downloads/eloadas/Strategia2.pdf · 2019-04-15 · Feladatmegoldási stratégiák Visszalépéses keresés

Feladatmegoldási stratégiák

Elágazás és korlátozás

Korlátozás(F):

Mért:=+; Betesz(A,F)

Ciklus amíg nem üres?(A)

Kivesz(A,F)

Ciklus p=F-ből kapható megoldáslépések

Ha Megoldás(p) akkor

Ha C(p)<Mért akkor Mért:=C(p); Min:=p

különben ha AK(p)<Mért akkor Betesz(A,p)

Ciklus vége

Ciklus vége

Eljárás vége.

2019. 04. 15. 10:57Szlávi Péter, Zsakó László: Adatszerkezetek I. 35/37

Page 36: Feladatmegoldási stratégiák Visszalépéses keresés II.alg1.elte.hu/downloads/eloadas/Strategia2.pdf · 2019-04-15 · Feladatmegoldási stratégiák Visszalépéses keresés

Feladatmegoldási stratégiák

Elágazás és korlátozás

Ha a megoldáskezdeményekre meg tudunk adni felső korlátot

is, akkor az adagoló lehet a felső korlát szerinti minimumos

prioritási sor.

Felső korlát olyan FK(X) függvény, amelyre teljesül, hogy

minden Y megoldás minden X részmegoldására:

C(Y) ≤FK(X).

Azaz egy részmegoldásnál járva tudjuk, hogy az ebből kiinduló

megoldásoknak mi a felső korlátja.

Mindig a legkisebb felső korlátú ágat válasszuk!

2019. 04. 15. 10:57Szlávi Péter, Zsakó László: Adatszerkezetek I. 36/37

Page 37: Feladatmegoldási stratégiák Visszalépéses keresés II.alg1.elte.hu/downloads/eloadas/Strategia2.pdf · 2019-04-15 · Feladatmegoldási stratégiák Visszalépéses keresés

Feladatmegoldási stratégiák

Visszalépéses keresés II.