Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaÁdám Biró Megváltozta több, mint 10 éve
1
Szélességi bejárás A szélességi bejárással egy irányított vagy irányítás nélküli véges gráfot járhatunk be a kezdőcsúcstól való távolságuk növekvő sorrendjében. Először lássuk az algoritmus elvi hátterét, a következő diákon pedig grafikusan egy példán keresztül az algoritmus működését! Először elérjük a kezdőcsúcsot. Majd elérjük a kezdőcsúcstól 1 távolságra lévő csúcsokat (a kezdőcsúcs szomszédait) Ezután elérjük a kezdőponttól 2 távolságra lévő csúcsokat (a kezdőcsúcs szomszédainak a szomszédait), és így tovább. Ha egy csúcsot már bejártunk, akkor a későbbi odajutásoktól el kell tekinteni A következő diára lépéshez kattints az egérrel
2
Az algoritmus elve* Az elérési sorrend biztosítása Az elérési sorrendnél azt kell figyelembe venni, hogy amíg az összes kezdőcsúcstól k távolságra lévő csúcsot ki nem írtuk, addig nem szabad k- nál kisebb vagy nagyobb távolságú csúcsokat kiírni, sőt mire egy k távolságú csúcsot kiírunk, már az összes k-nál kisebb távolságú csúcsot ki kellett írnunk. Egy k+1 távolságú csúcs biztosan egy k távolságú csúcs szomszédja (az egyik legrövidebb úton a megelőző csúcs biztosan k távolságra van a kezdőcsúcstól).A k+1 távolságú csúcsokat a k távolságú csúcsok szomszédai között kell keresni (nem biztos, hogy az összes szomszéd k+1 távolságú, lehet, hogy egy rövidebb úton már elértük.). Használjunk sor adattípust és biztosítsuk azt az invariáns tulajdonságot, hogy a sorba csak k vagy k+1 távolságú csúcsok lehetnek az elérésük sorrendjében, amely egyben az s-től való távolságuk szerinti (növekedő) sorrendnek is megfelel. Ameddig ki nem ürül a sor, vegyünk ki az első elemet, írjuk ki és terjesszük ki, azaz a még "meg nem látogatott" szomszédait érjük el és rakjuk be a sorba. (*forrás: jegyzet) A következő diára lépéshez kattints az egérrel
3
Előkészületek Először lássuk a gráfot, amelyen reprezentáljuk a szélességi bejárást, majd a lap alján a jelölésekhez tartozó jelmagyarázatot. 1 (-1, -1) 2 (-1, -1)3 (-1, -1)4 (-1, -1) 5 (-1, -1) 6 (-1, -1) 7 (-1, -1)8 (-1, -1)9 (-1, -1) A zárójelben található számpár jelentése: az első szám megadja, hogy az adott csúcsot hányadikként jártuk be, a második pedig a kezdőcsúcstól való távolságot jelenti (kezdetben mindkettő -1). A szimuláció elkezdéséhez kattints az egérrel
4
Grafikus megjelenítés Az algoritmus indításakor a következő állásban vagyunk: 1 (-1, -1) 2 (-1, -1)3 (-1, -1)4 (-1, -1) 5 (-1, -1) 6 (-1, -1) 7 (-1, -1)8 (-1, -1)9 (-1, -1) Ha egy csúcsot nem értünk még el, legyen fehér színű Ha egy csúcsot elérünk és bedobjuk a sorba, legyen szürke. Ha egy csúcsot elértünk és kiterjesztettük (elértük a szomszédait), legyen sárga. A következő lépéshez kattints az egérrel
5
Grafikus megjelenítés Kezdetben minden csúcs fehér, kivéve az 1-es csúcsot, amely szürke: 1 (1, 0) 2 (-1, -1)3 (-1, -1)4 (-1, -1) 5 (-1, -1) 6 (-1, -1) 7 (-1, -1)8 (-1, -1)9 (-1, -1) A következő lépéshez kattints az egérrel A sorban is csak az 1-es csúcs szerepel. Az első lépésben kivesszük az 1-es csúcsot a sorból, majd kiterjesztjük, tehát elérjük a még fehér szomszédait (2, 3, 4).
6
Grafikus megjelenítés Az egyes csúcs kiterjesztése: 1 (1, 0) 2 (2, 1)3 (3, 1)4 (4, 1) 5 (-1, -1) 6 (-1, -1) 7 (-1, -1)8 (-1, -1)9 (-1, -1) A következő lépéshez kattints az egérrel Ezen csúcsokat szürkére színezzük és bedobjuk őket a sorba. Az egyes csúcsot kiterjesztettük, tehát készen vagyunk vele, sárgára színezhetjük. A sorba a szürke csúcsok szerepelnek, az elérési szám szerint rendezve!
7
Grafikus megjelenítés A kettes csúcs kiterjesztése: 1 (1, 0) 2 (2, 1)3 (3, 1)4 (4, 1) 5 (5, 2) 6 (6, 2) 7 (-1, -1)8 (-1, -1)9 (-1, -1) A következő lépéshez kattints az egérrel A kettes csúcsot terjesztjük ki eztán. Ezzel is készen vagyunk, tehát sárgára színezhetjük. A két szomszédját (5, 6) szürkére színeztük. A sorba a szürke csúcsok szerepelnek, az elérési szám szerint rendezve!
8
Grafikus megjelenítés A hármas csúcs kiterjesztésekor egy észrevétel: 1 (1, 0) 2 (2, 1)3 (3, 1)4 (4, 1) 5 (5, 2) 6 (6, 2) 7 (-1, -1)8 (-1, -1)9 (-1, -1) A következő lépéshez kattints az egérrel A hármas csúcs kiterjesztésekor nem kerül újabb csúcs a sorba, mivel a 3-as csúcs minden szomszédját elértük már. Tehát színezzük a 3-as csúcsot sárgára.
9
Grafikus megjelenítés A négyes csúcs kiterjesztése a 9-es csúcs szürkére színezése 1 (1, 0) 2 (2, 1)3 (3, 1)4 (4, 1) 5 (5, 2) 6 (6, 2) 7 (-1, -1)8 (-1, -1)9 (7, 2) A következő lépéshez kattints az egérrel A négyes csúcsot terjesztjük ki, hiszen ez a sorban a következő elem. Színezzük őt is sárgára, a szomszéd csúcsot (9) pedig szürkére. Figyeljük meg a 9-es csúcsot: ő a 7. bejárt csúcs és kettő hosszú úttal elérhető a kezdőcsúcsból.
10
Grafikus megjelenítés 5-ös és 6-os csúcs kiterjesztése 1 (1, 0) 2 (2, 1)3 (3, 1)4 (4, 1) 5 (5, 2) 6 (6, 2) 7 (8, 3)8 (9, 3)9 (7, 2) A következő lépéshez kattints az egérrel Az 5-ös és 6-os csúcs kiterjesztése hasonlóképpen történik. Színezzük őket sárgára, a szomszédaikat pedig szürkére ezen lépés után nem marad több fehér színű csúcs. Figyeljük meg a 7-es és 8-as csúcs elérési száma miként változik
11
Grafikus megjelenítés Az algoritmus vége, majd a végeredmény kiírása: 1 (1, 0) 2 (2, 1)3 (3, 1)4 (4, 1) 5 (5, 2) 6 (6, 2) 7 (8, 3)8 (9, 3)9 (7, 2) A végeredmény kiírásához kattints az egérrel Mivel már nincsen fehér csúcs, így most már csupán a sorból kivesszük a csúcsokat és sárgára színezzük őket. Ezzel az algoritmus futása véget ért. A záró dián látható a végeredmény.
12
Végeredmény 1 (1, 0) 2 (2, 1)3 (3, 1)4 (4, 1) 5 (5, 2) 6 (6, 2) 7 (8, 3)8 (9, 3)9 (7, 2) A bemutatóból való kilépéshez kattints az egérrel. A algoritmus által megkaptuk a kezdő csúcsból a többi csúcsba való legrövidebb utat. A csúcsok, és a berajzolt élek alkotta részgráfot jobban megnézve látható, hogy egy kezdőcsúcs gyökerű fát alkot, amely mentén minden csúcs a legrövidebb úton érhető el. Készítette: Hardi Péter
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.