Gráf szélességi bejárása
A szélességi bejárás elmélete 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 A bejárt csúcsok sorrendje „szintfolytonos” (először az 1, majd a 2 távolságra lévő csúcsokat dolgozzuk fel, stb…) Egy, már bejárt csúcs későbbi elérése eltekintendő Azonos távolság esetén a sorrend nincs meghatározva Megjegyzés: egyszerű, hurokél mentes gráf vizsgálata
ADS szintű megvalósítás Szemléltetés: sor adattípus alkalmazásával A sorban csak k vagy k+1 távolságú csúcsok lehetnek az elérésük sorrendjében, amely egyben a k-tól való távolságuk növekedő sorrendje Ameddig ki nem ürül a sor, vegyük ki az első elemet, írjuk ki és a még sorra nem került szomszédjait rakjuk be a sorba.
Csúcsok lehetséges státuszai: fehér: még el nem ért csúcs szürke: elért, de még nem kiírt csúcs fekete: már kiírt és „elhagyott” csúcs, melynek szomszédaihoz haladunk tovább (kezdeti állapot: minden csúcs fehér, kivétel a „gyökérnek” megadott kezdőcsúcs szürke) Állapotok
Lépések Az 1-es csúcs kivétele az első sorból Az 1-es csúcs fehér szomszédainak elérése, szürkítés 1-es csúcso t feketére
Végső állapot
Megvalósítás ábrázolás szinten, éllistával szín[1..n] –csúcsok színét tároló tömb d[1..n] – csúcsok távolsága a kezdőponttól P[1..n] – csúcsokhoz vezető úton a megelőző csúcs Kezdeti állapot: kezdőcsúcstól végtelen távolságra van minden csúcs
Műveletigény: T(n) = Θ(n) + Ο(e) = Ο(n + e) ( e: az él listák együttes hossza) Megjegyzés: nincs kikötve, hogy a gráf összefüggő
Egy belvárosi társasház 3. emeletén üresen álló hatalmas lakásba költözött egy nagy egyetemista társaság. Szeretnének lakásavató bulit tartani, de nem ismerik a szomszédokat, így elhatározzák, hogy felmérik a terepet és a későbbi felháborodást elkerülve, udvariasan értesítik, a lakásukhoz közeli lakókat. Mivel nincs túl sok idejük, és nem akarnak mindenhova becsengetni felosztják a szomszédságot és különböző irányba indulnak el. Először a közvetlen mellettük, alattuk és felettük lakókhoz. Mindenkitől kipuhatolják, hogy mennyire érzékelhető, ha a lakásukban zajonganak, és ennek fényében azokhoz a lakásokhoz mennek tovább, melyek a mellettük lakók közvetlen szomszédai (vagyis a tőlük számított második lakásban lakókhoz), és így tovább egészen addig, amíg úgy gondolják, hogy már elég lakót értesítettek a közelgő eseményről. Példa