Készítette: Lakos Péter
Adott egy irányított vagy irányítatlan, véges gráf. Írjuk ki a csúcsokat egy kezdőcsúcstól való távolságuk növekvő sorrendjében. Feladat:
1) Először elérjük a kezdőcsúcsot 2) Majd elérjük a kezdőcsúcstól 1 távolságra lévő csúcsokat (a kezdőcsúcs szomszédait) 3) Ezután elérjük a startcsúcstól 2 távolságra lévő csúcsokat (a kezdőcsúcs szomszédainak a szomszédait), és így tovább 4) Ha egy csúcsot már bejártunk, akkor a későbbi odajutásoktól el kell tekinteni Az algoritmus elve:
Az algoritmus (ADT szint):
B -1, -1 A 1, 0 E -1, -1 G -1, -1 D -1, -1 F -1, -1 C -1, -1 H -1, -1 Az algoritmus működése (ADS szint): Amikor egy csúcsot még nem értünk el, legyen fehér színű. Induláskor a kezdőcsúcs kivételével minden csúcs ilyen.
B -1, -1 A 1, 0 E -1, -1 G -1, -1 D -1, -1 F -1, -1 C -1, -1 H -1, -1 Az algoritmus működése (ADS szint): Amikor egy csúcsot elérünk és bedobjuk a sorba, színezzük szürkére. A kezdőcsúcs induláskor ilyen.
B -1, -1 A 1, 0 E -1, -1 G -1, -1 D -1, -1 F -1, -1 C -1, -1 H -1, -1 Az algoritmus működése (ADS szint): A csúcsokra, a címkén kívül, felírunk két pozitív egész számot.
B -1, -1 A 1, 0 E -1, -1 G -1, -1 D -1, -1 F -1, -1 C -1, -1 H -1, -1 Az algoritmus működése (ADS szint): Az első szám megadja, hogy az illető csúcsot hányadikként írnánk ki A második szám pedig a kezdőcsúcstól való távolságot tartalmazza
B -1, -1 A 1, 0 E -1, -1 G -1, -1 D -1, -1 F -1, -1 C -1, -1 H -1, -1 Az algoritmus működése (ADS szint): A kezdőcsúcs legyen az „A” címkéjű Az említett számok a kezdőcsúcs kivételével kezdetben -1, -1 értékűek
B -1, -1 A 1, 0 E -1, -1 G -1, -1 D -1, -1 F -1, -1 C -1, -1 H -1, -1 Az algoritmus működése (ADS szint): Kezdetben minden csúcs fehér, kivéve az „A” csúcsot, amelyik szürke. A sorban is kezdetben csak az „A” csúcs van. Sor: A Output:
B -1, -1 A 1, 0 E -1, -1 G -1, -1 D -1, -1 F -1, -1 C -1, -1 H -1, -1 Az algoritmus működése (ADS szint): Az első lépésben kivesszük a sorból az „A” csúcsot, majd kiterjesztjük, azaz elérjük az „A” csúcs még fehér szomszédait (B,D,G), amelyeket szürkére színezünk, és bedobunk a sorba. Sor: A Output: Sor: B 2, 1 G 4, 1 D 3, 1 Sor: B, D, G
A 1, 0 E -1, -1 F -1, -1 C -1, -1 H -1, -1 Az algoritmus működése (ADS szint): Az „A” csúcsot kiterjesztettük, tehát készen vagyunk vele, így feketére színezzük. Output: B 2, 1 G 4, 1 D 3, 1 Sor: B, D, G A 1, 0 Output: A
E -1, -1 F -1, -1 C -1, -1 H -1, -1 Az algoritmus működése (ADS szint): Figyeljük meg, hogy a sor a szürke csúcsokból áll, az elérési szám (első szám) szerint rendezve, azaz mindig azt a szürke csúcsot terjesztjük ki, amelyiknek az elérési száma a legkisebb, mivel ez a csúcs került be legkorábban a sorba. B 2, 1 G 4, 1 D 3, 1 Sor: B, D, G A 1, 0 Output: A
E -1, -1 F -1, -1 C -1, -1 H -1, -1 Az algoritmus működése (ADS szint): Most terjesszük ki a sorban következő (B) csúcsot az előbbiek szerint. B 2, 1 G 4, 1 D 3, 1 Sor: B, D, G A 1, 0 Output: A E 5, 2 F 6, 2 Sor: B, D, G, E, F Sor: D, G, E, F B 2, 1 Output: A, B
E -1, -1 F -1, -1 C -1, -1 H -1, -1 Az algoritmus működése (ADS szint): Most a „D” csúcs következik a sorban. G 4, 1 D 3, 1 A 1, 0 E 5, 2 F 6, 2 Sor: D, G, E, F B 2, 1 Output: A, B D 3, 1 Sor: G, E, F Output: A, B, D
E -1, -1 F -1, -1 C -1, -1 H -1, -1 Az algoritmus működése (ADS szint): Figyeljük meg, hogy ebben lépésben nem került be újabb csúcs a sorba, mivel a „D” csúcsot terjesztjük ki, de a „D” minden szomszédját már elértük, azaz nincs fehér színű szomszédja. G 4, 1 A 1, 0 E 5, 2 F 6, 2 B 2, 1 D 3, 1 Sor: G, E, F Output: A, B, D
E -1, -1 F -1, -1 C -1, -1 H -1, -1 Az algoritmus működése (ADS szint): A „G” jön. G 4, 1 A 1, 0 E 5, 2 F 6, 2 B 2, 1 D 3, 1 Sor: G, E, F Output: A, B, D G 4, 1 Sor: E, F Output: A, B, D, G
E -1, -1 F -1, -1 C -1, -1 H -1, -1 Az algoritmus működése (ADS szint): Az „E” következik. A 1, 0 E 5, 2 F 6, 2 B 2, 1 D 3, 1 G 4, 1 Sor: E, F Output: A, B, D, G E 5, 2 Sor: F Output: A, B, D, G, E
F -1, -1 C -1, -1 H -1, -1 Az algoritmus működése (ADS szint): Most jöjjön az „F”. A 1, 0 F 6, 2 B 2, 1 D 3, 1 G 4, 1 Output: A, B, D, G, E E 5, 2 Sor: F C 7, 3 Sor: F, C F 6, 2 Sor: C Output: A, B, D, G, E, F
H -1, -1 Az algoritmus működése (ADS szint): A „C” következik. A 1, 0 B 2, 1 D 3, 1 G 4, 1 E 5, 2 C 7, 3 F 6, 2 Sor: C Output: A, B, D, G, E, F H 8, 4 Sor: C, HSor: H Output: A, B, D, G, E, F, C C 7, 3
Az algoritmus működése (ADS szint): Végül a „H”. A 1, 0 B 2, 1 D 3, 1 G 4, 1 E 5, 2 F 6, 2 Sor: H Output: A, B, D, G, E, F, C H 8, 4 C 7, 3 H 8, 4 Sor: Output: A, B, D, G, E, F, C, H
Megjegyzés: A szomszéd csúcsok elérése nem egyértelmű A példában a szomszéd csúcsok feldolgozási sorrendje a csúcsok címkéje szerint (ABC sorrendben) növekvően alakult
Megjegyzés: További információk, példa: oldal