SZÉLESSÉGI BEJÁRÁS Gréczy Ákos – JKR7ZR
MESE Van egy középkori kisváros, ahol az utcai lámpákat egy korosodó lámpagyújtogató ember gyújtja fel. Egyik este a lámpagyújtogató fáradtnak és gyengének érzi magát, hát szól a barátainak, hogy segítsenek neki az esti munkájában. (Nagyon sok barátja van az illetőnek.) A csapat kimegy este a főtérre, és a következő stratégia szerint gyújtogatja a lámpákat. A főtéren meggyújtják a lámpákat, majd annyi felé oszlik a csapat, ahány főtérről kivezető út van. Mindegyik csapat elindul egy kivezető úton, és út közben felgyújtja a lámpákat. Amikor a csapat egy útelágazáshoz ér, szétoszlik kisebb csapatokra, és mindegyik kisebb csapat tovább indul az elágazás egyik még sötét utcáján. Amikor egy csapat már nem tud tovább menni (város széle, zsákutca, minden lámpa ég a környező utcákban), akkor a csapattagok hazamennek aludni. Ez az elve a szélességi bejárásnak.
A SZÉLESSÉGI BEJÁRÁS ALAPJAI Célja: Az eljárás célja egy véges gráf összes csúcsának bejárása a kezdőcsúcstól való távolságuk szerinti növekvő sorrendben. Felhasznált adatszerkezet: sor Műveletigény: Él listást ábrázolás: T(n) = Θ(n) + Ο(e) = Ο(n + e) (ahol az él listák együttes hossza e) Csúcsmátrixos ábrázolás: T(n) = O(n + n * n) = O(n2 ) A bejárt csúcsok sorrendje „szint folytonos”, azaz először az 1, majd a 2 távolságra lévő csúcsokat írja ki, majd így tovább… Azonos távolság esetén a sorrendet definiálni kell, de nem kötelező (pl. a példában betűrend szerint).
A SZÉLESSÉGI BEJÁRÁS ÁBRÁZOLÁSA A csúcsokat három színnel szemléltetjük: o FEHÉR: mikor a csúcsot még nem értük el (alapértelmezetten minden csúcs ilyen, kivéve a kezdőcsúcsot) o SZÜRKE: azok a csúcsok, melyeket elérünk az „új kezdőértéktől” egy csúcsot elérünk o FEKETE: amikor egy csúcsot beteszünk egy sorba, és a szomszédjait elértük
A SZÉLESSÉGI BEJÁRÁS MENETE Kijelölünk egy kezdőcsúcsot Megkeressük a csúcs szomszédait (melyek 1 távolságra vannak és mutat beléjük él a csúcsból), ezeket betesszük a sorba, az eredeti csúcsot pedig kiírjuk. Ezt folytatjuk a sorban a legelső csúccsal, mint „induló csúccsal”. Egy csúcsot csak egyszer tesszük be a sorba, akkor is, ha több rá mutató él is tartozik hozzá. Mikor elfogynak a fehér csúcsok, azaz nincs több a sorba betehető csúcs, a szürke csúcsok kiíródnak, és a bejárás kész.
A SZÉLESSÉGI BEJÁRÁS SZEMLÉLTETÉSE Műveletek: -Sorba:G -Kimenetre:semmi Sor:G Kimenet:
A szélességi bejárás szemléltetése Műveletek: -Sorba:R A C -Kimenetre: G -Következő: R Sor: Kimenet: Sor: R A C Kimenet: G
A szélességi bejárás szemléltetése Műveletek: -Sorba: Z C D -Kimenetre: R Sor:A C Z C D Kimenet: G R
A szélességi bejárás szemléltetése Műveletek: -Sorba:E -Kimenetre: A Sor:C Z C D E Kimenet:G R A
A szélességi bejárás szemléltetése Műveletek: -Sorba: F -Kimenetre:D Sor: Z C D E F Kimenet: G R A C
A szélességi bejárás szemléltetése Műveletek: -Sorba: H -Kimenetre: Z Sor:C D E F H Kimenet: G R A C Z
A szélességi bejárás szemléltetése Műveletek: -Sorba: C -Kimenetre: I Sor:G H I J K Kimenet: G R A C Z C
A szélességi bejárás szemléltetése Műveletek: -Sorba: J -Kimenetre: D Sor: E F H I J Kimenet: G R A C Z C D
A szélességi bejárás szemléltetése Műveletek: -Sorba: semmi -Kimenetre: E Sor: F H I J Kimenet: G R A C Z C D E
A szélességi bejárás szemléltetése Műveletek: - Mivel minden elfogyott, minden megy a kimenetre Sor: semmi Kimenet: G R A C Z C D E F H I J K
A szélességi bejárás szemléltetése Műveletek: - Kiürült a sor, a bejárásnak vége! Sor: semmi Kimenet: G R A C Z C D E F H I J K