tárolási módok, bejárásokusers.nik.uni-obuda.hu/sztf2/graf1.pdf · 2018-02-12 ·...

23
Szoftvertervezés és -fejlesztés II. előadás http://nik.uni-obuda.hu/sztf2 Szénási Sándor [email protected] Óbudai Egyetem,Neumann János Informatikai Kar Gráfok 1. Tárolási módok, bejárások

Upload: others

Post on 17-Jul-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Tárolási módok, bejárásokusers.nik.uni-obuda.hu/sztf2/Graf1.pdf · 2018-02-12 · szenasi.sandor@nik.uni-obuda.hu Szoftvertervezés és -fejlesztés II. •A gráfok eltárolására

Szoftvertervezés és -fejlesztés II. előadáshttp://nik.uni-obuda.hu/sztf2

Szénási Sá[email protected]

Óbudai Egyetem,Neumann János Informatikai Kar

Gráfok 1.

Tárolási módok, bejárások

Page 2: Tárolási módok, bejárásokusers.nik.uni-obuda.hu/sztf2/Graf1.pdf · 2018-02-12 · szenasi.sandor@nik.uni-obuda.hu Szoftvertervezés és -fejlesztés II. •A gráfok eltárolására

Tárolási módok

Szélességi bejárás

Mélységi bejárás

Gráfok 1.

Page 3: Tárolási módok, bejárásokusers.nik.uni-obuda.hu/sztf2/Graf1.pdf · 2018-02-12 · szenasi.sandor@nik.uni-obuda.hu Szoftvertervezés és -fejlesztés II. •A gráfok eltárolására

Szoftvertervezés és -fejlesztés [email protected]

• Irányított gráf: csúcsok véges halmaza, illetve egy ezen értelmezett bináris reláció (élek halmaza)

• Formálisan: G = (V, E)– G – gráf

– V – csúcsok halmaza, pl. { 1, 2, 3, 4, 5, 6, 7 }

– E – élek halmaza, pl. { (1, 4), (2, 1), (2, 3), … }

– |V| – csúcsok száma

– |E| – élek száma

• Súlyozott gráfok esetén az egyes élekhez egy kiegészítő súly értéket is rendelünk

3

Alapfogalmak

1 5

3

2 4

6

7

Page 4: Tárolási módok, bejárásokusers.nik.uni-obuda.hu/sztf2/Graf1.pdf · 2018-02-12 · szenasi.sandor@nik.uni-obuda.hu Szoftvertervezés és -fejlesztés II. •A gráfok eltárolására

Szoftvertervezés és -fejlesztés [email protected]

• A gráfok eltárolására számos klasszikus módszer létezik. Az általunk tárgyalt algoritmusok megvalósítása szempontjából a fizikai eltárolási mód nem lényeges, csak annyit várunk el, hogy az alkalmas legyen az alábbi műveletek végrehajtására

• Gráfokon értelmezhető alapvető műveletek– G.Csúcsok – visszaadja a gráf csúcsait

– G.Élek – visszaadja a gráf éleit

• Gráf csúcsain értelmezhető műveletek– x.VezetÉl(y) – megadja, hogy vezet-e él a paraméterként átadott y csúcsba?

– x.Szomszédok – visszaadja a csúcs szomszédjait (azokat a csúcsokat, amelyekbe vezet él a megadott csúcsból)

• Súlyozott gráf esetén értelmezhető– x.Súly(y) – súlyozott gráfok esetén visszaadja az x-ből y-ba vezető él súlyát

• Gráf csúcsok tartalmazhatnak további adatokat is, pl.– Tart – a csúcshoz kapcsolt tartalom

4

Alapvető műveletek

Page 5: Tárolási módok, bejárásokusers.nik.uni-obuda.hu/sztf2/Graf1.pdf · 2018-02-12 · szenasi.sandor@nik.uni-obuda.hu Szoftvertervezés és -fejlesztés II. •A gráfok eltárolására

Szoftvertervezés és -fejlesztés [email protected]

1

2

3

4

5

6

7

• Alapelv: a szomszédsági listás tárolás esetén egy L tömböt használunk, melynek– mérete megegyezik a csúcsok számával,

– az i. eleme egy láncolt lista, amely tárolja az i. csúcs szomszédjait (azokat a csúcsokat, amelyekbe vezet él az i. csúcsból)

• Műveletek megvalósítása (VezetÉl, stb.)

5

Szomszédsági lista

1 5

3

2 4

6

7

4 5

1 3

6

2 3

1 5 7

6

L

5

4 5

Page 6: Tárolási módok, bejárásokusers.nik.uni-obuda.hu/sztf2/Graf1.pdf · 2018-02-12 · szenasi.sandor@nik.uni-obuda.hu Szoftvertervezés és -fejlesztés II. •A gráfok eltárolására

Szoftvertervezés és -fejlesztés [email protected]

• Amennyiben egy csúcsból nem indulnak ki élek, akkor az üres láncolt listákhoz hasonlóan ez a mező közvetlenül értéket tartalmaz

• A listában szereplő csúcsok sorrendje tetszőleges, esetenként valamilyen (csúcsazonosító vagy gyakoriság) szerinti rendezést érdemes lehet használni

• A lista tartalma lehet a csúcs neve/azonosítója, de akár referencia magára a csúcsra

• Súlyozott gráfok esetében a listát célszerű kiegészíteni egy további mezővel, ami a megadott csúcsból a megadott csúcsba vezető él súlyát tárolja

• Irányítatlan gráfok esetében az éleket mindkét csúcs listájában szerepeltetni kell (vagy a VanÉl metódust módosítani)

• Irányított gráfok esetében az adatszerkezet helyfoglalása|V|*mutató_méret + |E|*(csúcs_azonosító_méret + mutató_méret)

6

Szomszédsági lista kiegészítések

Page 7: Tárolási módok, bejárásokusers.nik.uni-obuda.hu/sztf2/Graf1.pdf · 2018-02-12 · szenasi.sandor@nik.uni-obuda.hu Szoftvertervezés és -fejlesztés II. •A gráfok eltárolására

Szoftvertervezés és -fejlesztés [email protected]

1

2

3

4

5

6

7

• Alapelv: a szomszédsági mátrix alapú tárolás esetén egy CS kétdimenziós tömböt használunk, amely– sorainak és oszlopainak száma megegyezik a csúcsok számával

– az i. sor j. oszlopában lévő érték azt mutatja, hogy vezet-e él az i. csúcsból a j. csúcsba (pl. 1 – igen, 0 – nem)

• Műveletek megvalósítása (VezetÉl, stb.)

7

Szomszédsági mátrix/csúcsmátrix

1 5

3

2 4

6

7

1 2 3 4 5 6 7

0 0 0 1 1 0 0

1 0 1 0 0 0 0

0 0 0 0 0 1 0

0 1 1 0 1 0 0

1 0 0 0 1 0 1

0 0 0 1 1 0 0

0 0 0 0 0 1 0

CS

Page 8: Tárolási módok, bejárásokusers.nik.uni-obuda.hu/sztf2/Graf1.pdf · 2018-02-12 · szenasi.sandor@nik.uni-obuda.hu Szoftvertervezés és -fejlesztés II. •A gráfok eltárolására

Szoftvertervezés és -fejlesztés [email protected]

• Irányítatlan gráfok esetében CS[i,j] értéke minden esetben megegyezik CS[j,i] értékével. Emiatt a mátrix szimmetrikus a főátlójára.

• Súlyozott mátrixok esetében a módszer kiegészíthető azzal, hogy nem csak 1-et vagy 0-t tárolunk, hanem magát a súly értékét (amennyiben elképzelhetők 0 súlyú élek, akkor módosítanunk kell a „nincs él” jelzés értékét)

• Látható, hogy a mátrix mérete csak a csúcsok számától függ, ennek megfelelően a várható helyfoglalás|V|*|V|*csúcs_azonosító_méret(irányítatlan gráf esetén elégséges a főátló, illetve az efeletti elemek tárolása, így a tárhely igény is csaknem a felére csökken)

8

Szomszédsági mátrix kiegészítések

Page 9: Tárolási módok, bejárásokusers.nik.uni-obuda.hu/sztf2/Graf1.pdf · 2018-02-12 · szenasi.sandor@nik.uni-obuda.hu Szoftvertervezés és -fejlesztés II. •A gráfok eltárolására

Szoftvertervezés és -fejlesztés [email protected]

• Tárhely szempontjából– Amennyiben az élek száma a csúcsok számához képest meglehetősen kevés

(ritka gráfok) → szomszédsági listás tárolás

– Amennyiben az élek száma a csúcsok számához képest meglehetősen sok (a konkrét érték függ a mutatók méretétől is) → csúcsmátrixos tárolás

• Műveletek szempontjából– Gyakran van szükség a Szomszédok műveletre

• szomszédsági listánál azonnal választ kapunk• csúcsmátrixnál |V| darab lépésre van szükség→ szomszédsági listás tárolás

– Gyakran van szükség a VanÉl műveletre• szomszédsági listánál egy láncolt lista keresést kell futtatni• csúcsmátrixnál azonnali választ kapunk→ csúcsmátrixos tárolás

• A megfelelő tárolási mód tehát csak a feladat, illetve a pontos implementáció ismeretében határozható meg (megj.: nagyobb mátrixok esetében a csúcsmátrix a tárhely igénye miatt gyakran nem jelent valós opciót)

9

Döntési szempontok

Page 10: Tárolási módok, bejárásokusers.nik.uni-obuda.hu/sztf2/Graf1.pdf · 2018-02-12 · szenasi.sandor@nik.uni-obuda.hu Szoftvertervezés és -fejlesztés II. •A gráfok eltárolására

Tárolási módok

Szélességi bejárás

Mélységi bejárás

Gráfok 1.

Page 11: Tárolási módok, bejárásokusers.nik.uni-obuda.hu/sztf2/Graf1.pdf · 2018-02-12 · szenasi.sandor@nik.uni-obuda.hu Szoftvertervezés és -fejlesztés II. •A gráfok eltárolására

Szoftvertervezés és -fejlesztés [email protected]

• Gráfok esetében a bejárás hasonlóan értelmezhető mind az eddig megismert adatszerkezetek esetén (a gráf minden csúcsának egyszeri feldolgozása)

• Az algoritmusok azonban bonyolultabbak az eddig megismerteknél, ugyanis gondolni kell az alábbiakra– gráfokban előfordulhatnak körök/ciklusok, és ügyelni kell arra, hogy a

bejárásunk ne kerüljön végtelen ciklusba

– az eddigi adatszerkezeteinkkel ellentétben a gráfok nem feltétlenül összefüggőek, ilyenkor tisztázni kell, hogy mi a pontos cél (egy komponens bejárása, vagy az összes csúcs elérése)

• Egy irányítatlan gráfot összefüggőnek nevezünk, ha bármely két csúcsa összeköthető úttal

• Irányított gráfokat akkor nevezzük erősen összefüggőnek, ha tetszőleges két csúcs esetén mindegyik elérhető a másikból

• A fentieknek megfelelően beszélhetünk összefüggő, illetve erősen összefüggő komponensekről

11

Gráf bejárások

Page 12: Tárolási módok, bejárásokusers.nik.uni-obuda.hu/sztf2/Graf1.pdf · 2018-02-12 · szenasi.sandor@nik.uni-obuda.hu Szoftvertervezés és -fejlesztés II. •A gráfok eltárolására

Szoftvertervezés és -fejlesztés [email protected]

• Szélességi bejárás (szélességi keresés): egy adott kezdőpontból kiindulva feldolgozza a gráf összes innen elérhető csúcsát

• Minden lépésben a legkorábbanelért, de még teljesen át nemvizsgált csúcs szomszédjai feléhaladunk tovább

• Használt adatszerkezetek– S – egy sor, ami a már elért,

de még a feldolgozásra várócsúcsokat tárolja

– F – egy halmaz, ami a már elértcsúcsokat tárolja

• Az algoritmus addig fut, amígelfogynak a feldolgozhatócsúcsok

• Fontos kiemelni, hogy ez nem mindig fogja feldolgozni a gráf minden csúcsát

12

Szélességi bejárás

eljárás SzélességiBejárás(start)

S ⇐ start

F {start}

ciklus amíg (S ≠ )

k ⇐ S

Feldolgoz(k.tart)

ciklus x k.Szomszédok

ha x F akkor

S ⇐ x

F ← F ∪ {x}

elágazás vége

ciklus vége

ciklus vége

eljárás vége

Page 13: Tárolási módok, bejárásokusers.nik.uni-obuda.hu/sztf2/Graf1.pdf · 2018-02-12 · szenasi.sandor@nik.uni-obuda.hu Szoftvertervezés és -fejlesztés II. •A gráfok eltárolására

Szoftvertervezés és -fejlesztés [email protected]

• Már elért, de még fel nem dolgozott csúcsok– Azok a csúcsok, amelyeket már elért az algoritmus, de még nem lettek

feldolgozva (tehát nem vizsgáltuk meg a belőlök elérhető szomszédokat)

– Ezek azok a csúcsok, amelyek benne vannak az S sorban

• Már elért és feldolgozott csúcsok– Azok a csúcsok tartoznak ide, amelyeket már elért az algoritmus, és az összes

belőlük kivezető él is fel lett már dolgozva (vagy éppen a feldolgozásuk történik)

– Ezek azok a csúcsok, amelyek már benne vannak az F halmazban, de már nincsenek benne az S-ben

• Még el nem ért csúcsok– Az algoritmus futása során még nem találkoztunk velük

– Nincsenek benne egyik adatszerkezetben sem

13

Csúcsok állapota a bejárás során

Page 14: Tárolási módok, bejárásokusers.nik.uni-obuda.hu/sztf2/Graf1.pdf · 2018-02-12 · szenasi.sandor@nik.uni-obuda.hu Szoftvertervezés és -fejlesztés II. •A gráfok eltárolására

Szoftvertervezés és -fejlesztés [email protected]

• Egy d tömb/hasító táblázat segítségével minden csúcshozhozzárendelünk egy számértéket. Ez a kiinduló csúcstólvaló legrövidebb út hosszátmutatja (ez alatt itt alegkevesebb élből álló utatértjük)

• A kiinduló pont esetében eza távolság értelemszerűen 0

• Minden további újonnan felfedezett csúcs esetén annaktávolsága egyel több, mintannak a csúcsnak a távolsága,ahonnan először értük el

• A bejárás során el nem ért csúcsok esetén a d nem kap értéket

14

Legrövidebb utak hosszát megadó kiegészítés

eljárás SzélességiBejárás(start)

S ⇐ start

F {start}

d[start] 0

ciklus amíg (S ≠ )

k ⇐ S

ciklus x k.Szomszédok

ha x F akkor

S ⇐ x

F ← F ∪ {x}

d[x] d[k] + 1

elágazás vége

ciklus vége

ciklus vége

eljárás vége

Page 15: Tárolási módok, bejárásokusers.nik.uni-obuda.hu/sztf2/Graf1.pdf · 2018-02-12 · szenasi.sandor@nik.uni-obuda.hu Szoftvertervezés és -fejlesztés II. •A gráfok eltárolására

Szoftvertervezés és -fejlesztés [email protected]

• Egy π tömb/hasító táblázat segítségével minden csúcshoz hozzárendelünk egy másikcsúcsot (vagy értéket). Ez aztmutatja, hogy adott csúcsotmelyik csúcsból értük el

• A kiinduló pont esetében aπ [start] = , hiszen nincsmegelőző csúcs

• Minden további új csúcsesetén annak első elérésekorelhelyezzük a π adott csúcshoztartozó elemébe azt a csúcsot,ahonnan ide jutottunk

• A π értékek alapján megadható az adott csúcsokba a start-ból vezető legrövidebb út (ha van)

• A π értékei alapján felépíthető egy feszítőfa (szélességi fa)15

Egy feszítőfát megadó kiegészítés

eljárás SzélességiBejárás(start)

S ⇐ start

F {start}

π[start]

ciklus amíg (S ≠ )

k ⇐ S

ciklus x k.Szomszédok

ha x F akkor

S ⇐ x

F ← F ∪ {x}

π[x] k

elágazás vége

ciklus vége

ciklus vége

eljárás vége

Page 16: Tárolási módok, bejárásokusers.nik.uni-obuda.hu/sztf2/Graf1.pdf · 2018-02-12 · szenasi.sandor@nik.uni-obuda.hu Szoftvertervezés és -fejlesztés II. •A gráfok eltárolására

Szoftvertervezés és -fejlesztés [email protected]

• Komponensek keresése– A szélességi keresés lefutása után az F halmaz tartalmazza a kiinduló (start)

csúcsból elérhető összes csúcs halmazát

– Gyenge összefüggőség vizsgálata: az előbb megismert algoritmussal

– Erős összefüggőség vizsgálata: irányított gráf esetén a fordított gráfon (ennek csúcsai ugyanazok, élei viszont pont ellenkező irányúak) elvégezzük ugyanezt a bejárást, és ha ez is megtalál minden csúcsot, akkor a komponens erősen összefüggő

• Útkeresés– Amennyiben a gráf egyes csúcsai a lehetséges útelágazásokat reprezentálják,

az élek pedig az egyes csomópontok között meglévő utakat

– Akkor a szélességi keresés megadja az összes elérhető csomópontot

– Egy kiegészítő leállási feltétellel megadható, hogy egy megadott cél csúcs elérése után álljon le a program futása

– A feltétel lehet valamilyen F feltételnek megfelelő csúcs formájú is

– A π értékei alapján egyszerűen megadható, hogy a cél csúcsba melyik úton lehet a legrövidebben eljutni

16

Szélességi keresés gyakorlati alkalmazása

Page 17: Tárolási módok, bejárásokusers.nik.uni-obuda.hu/sztf2/Graf1.pdf · 2018-02-12 · szenasi.sandor@nik.uni-obuda.hu Szoftvertervezés és -fejlesztés II. •A gráfok eltárolására

Tárolási módok

Szélességi bejárás

Mélységi bejárás

Gráfok 1.

Page 18: Tárolási módok, bejárásokusers.nik.uni-obuda.hu/sztf2/Graf1.pdf · 2018-02-12 · szenasi.sandor@nik.uni-obuda.hu Szoftvertervezés és -fejlesztés II. •A gráfok eltárolására

Szoftvertervezés és -fejlesztés [email protected]

• Mélységi bejárás (mélységi keresés): egy adott kezdőpontból kiindulva feldolgozza a gráf összes innen elérhető csúcsát

• A szélességi keresésselellentétben itt mindig azutoljára elért, új kivezetőélekkel rendelkező csúcsokatderítjük fel. Ha nincs ilyen,akkor pedig visszalépünk egymár előzőleg vizsgáltra

• Használt adatszerkezetek– F – egy halmaz, ami a már

elért csúcsokat tárolja

• A feldolgozás egy vermenalapul, ezt a rekurzió miatt közvetve használjuk

• Fontos kiemelni, hogy ez nem mindig fogja feldolgozni a gráf minden csúcsát

18

Mélységi bejárás

eljárás MélységiBejárásRek(k, címsz. F)

F F ∪ {k}

Feldolgoz(k.tart)

ciklus x k.Szomszédok

ha x F akkor

MélységiBejárásRek(x, F)

elágazás vége

ciklus vége

eljárás vége

eljárás MélységiBejárás(start)

F

MélységiBejárásRek(start, F)

eljárás vége

Page 19: Tárolási módok, bejárásokusers.nik.uni-obuda.hu/sztf2/Graf1.pdf · 2018-02-12 · szenasi.sandor@nik.uni-obuda.hu Szoftvertervezés és -fejlesztés II. •A gráfok eltárolására

Szoftvertervezés és -fejlesztés [email protected]

• Gyakran szükség van arra, hogy az egyes csúcsokat melyik másik csúcsból értük el

• Az itt látható kiegészítés eztaz adatot gyűjti a π tárolóba

• A kiinduló pont esetében aπ [start] = , hiszen nincsmegelőző csúcs

• Ez alapján megadható egyút a kiinduló start csúcsbóla gráf összes többi csúcsába

• A szélességi bejáráshozhasonlóan a π-ben találhatóadatok alapján egyfeszítőfát állíthatunk elő

19

Megelőző elemet is tároló változat

eljárás MélységiBejárásRek(k,

címsz. F, címsz. π)

F F ∪ {k}

Feldolgoz(k.tart)

ciklus x k.Szomszédok

ha x F akkor

π[x] k

MélységiBejárásRek(x, F, π)

elágazás vége

ciklus vége

eljárás vége

eljárás MélységiBejárás(start)

F

π[start]

MélységiBejárásRek(start, F, π)

eljárás vége

Page 20: Tárolási módok, bejárásokusers.nik.uni-obuda.hu/sztf2/Graf1.pdf · 2018-02-12 · szenasi.sandor@nik.uni-obuda.hu Szoftvertervezés és -fejlesztés II. •A gráfok eltárolására

Szoftvertervezés és -fejlesztés [email protected]

• A gyakorlatban hasznos lehet, ha folyamatában vizsgáljuk a mélységi keresés lépéseit. Ehhezcélszerű lehet eltárolni azegyes csúcsokba való be- éskilépési időket

• Ennek megfelelően– t – idő (lépésszám)

– be – belépési időket tárolja

– ki – kilépési időket tárolja

• A t változó értéke kezdetben0, utána pedig az egyeshívások során folyamatosannövekszik

• Az eljárás elején és végénlátható a be és ki nevűszerkezetek tárolják az egyes csúcsok elérési és elhagyási idejét

20

Belépési és elhagyási időt is tároló változat

eljárás MélységiBejárásRek(k, címsz. F,

címsz. t, címsz. be, címsz. ki)

be[k] t++

F F ∪ {k}

Feldolgoz(k.tart)

ciklus x k.Szomszédok

ha x F akkor

MélységiBejárásRek(x,F,t,be,ki)

elágazás vége

ciklus vége

ki[k] t++

eljárás vége

eljárás MélységiBejárás(start)

F ;

MélységiBejárásRek(start,F,0,be,ki)

eljárás vége

Page 21: Tárolási módok, bejárásokusers.nik.uni-obuda.hu/sztf2/Graf1.pdf · 2018-02-12 · szenasi.sandor@nik.uni-obuda.hu Szoftvertervezés és -fejlesztés II. •A gráfok eltárolására

Szoftvertervezés és -fejlesztés [email protected]

• Egy irányított gráf topológiai rendezése a csúcsoknak egy olyan sorba rendezése, amelyre igaz, hogy ha létezik (u,v) él a gráfban, akkor u megelőzi a sorban v-t

• Ha a gráf tartalmaz irányított kört, akkor nincs ilyen sorbarendezés

• Példa: öltözködéskor melyik ruhadarabot kell felvenni egy másik előtt:

Néhány lehetséges topológiai rendezés:– alsónadrág, nadrág, ing, öv, zokni, cipő, nyakkendő, zakó

– ing, nyakkendő, zakó, zokni, alsónadrág, nadrág, cipő, öv

21

Topológiai rendezés

alsónadrág nadrág öv

zokni

ing

cipő nyakkendő

zakó

Page 22: Tárolási módok, bejárásokusers.nik.uni-obuda.hu/sztf2/Graf1.pdf · 2018-02-12 · szenasi.sandor@nik.uni-obuda.hu Szoftvertervezés és -fejlesztés II. •A gráfok eltárolására

Szoftvertervezés és -fejlesztés [email protected]

• Jól tudjuk használni a mélységikeresés azon változatát, amelytárolta az egyes csúcsokelérési és elhagyási idejét

• Egy topológiai rendezéselőállítható úgy, hogy az egyescsúcsokat az elhagyás fordítottsorrendjében soroljuk fel

• Technikailag ez egyszerűbbenis megoldható, pl. mindenelhagyáskor a csúcsot szúrjukegy láncolt lista elejére

• Mivel a gráf nem biztos, hogyerősen összefüggő, így minden csúcsból el kell indítani arekurzív bejárást

22

Topológiai rendezés előállítása

eljárás MélységiBejárásRek(k,

címsz. F, címsz. fej)

F F ∪ {k}

ciklus x k.Szomszédok

ha x F akkor

MélységiBejárásRek(x, F, fej)

elágazás vége

ciklus vége

ListaElejéreBeszúrás(fej, k)

eljárás vége

függvény TopológiaiRendezés(G)

F

ListaInicializálás(fej)

ciklus st G.Csúcsok

ha st F akkor

MélységiBejárásRek(st, F, fej)

elágazás vége

ciklus vége

vissza fej

függvény vége

Page 23: Tárolási módok, bejárásokusers.nik.uni-obuda.hu/sztf2/Graf1.pdf · 2018-02-12 · szenasi.sandor@nik.uni-obuda.hu Szoftvertervezés és -fejlesztés II. •A gráfok eltárolására

Szoftvertervezés és -fejlesztés [email protected]

• Visszalépéses keresés– A visszalépéses keresés tulajdonképpen a mélységi keresés alapelvét használja

működése során

– A lehetséges megoldások által kifeszített fában lépeget előre amíg tud, amíg• vagy talál meg megoldást,• vagy ha egy helyen elakad, akkor visszalép és új irányba próbálkozik

• Fa bejárások– A pre-, in-, post-order bejárások tulajdonképpen mind egy-egy mélységi

keresést mutatnak be

• Útkeresések– Hasonlóan a szélességi kereséshez, bár nagy/nem korlátos gráfok esetén

problémásabb a használata

• Topológiai rendezés– Gyártási folyamat optimalizálása

• Erősen összefüggő komponensek keresése– Gráf bejárása minden pontból – kilépési idők megjegyzése

– Gráf transzponált bejárása (előző kilépési idők szerinti fordított sorrendben)

23

Mélységi keresés gyakorlati alkalmazása