Algorytmy i Struktury Danych, 11. ćwiczenia
2010-12-14
1 Plan zajęć
• zadanie o konstruowaniu drzepca za pomocą rotacji,
• 2-3 drzewa,
• cykle Eulera,
• silne spójne składowe,
2–3 drzewa
Definicja:
• każdy węzeł zawiera 1 lub 2 klucze,
• kazdy węzeł wewnętrzny ma 2 lub 3 synów (odpowiedno gdy zawiera 1 lub 2 klucze),
• wszystkie liście są na tym samym poziomie,
• drzewo zachowuje rozszerzony porządek BST, tzn. dla 1 klucza — do- kładnie tak jak w BST, dla 2 kluczy k1, k2 i synów c1, c2, c3, klucze w poddrzewie c1 są mniejsze lub równe niż k1, klucze w poddrzewie c3 są większe bądź równe niż k2, i wreszcie klucze w poddrzewie c2 mają war- tości pomiędzy k1a k2.
Bardzo dobre notatki można znaleźć pod adresem: http://cs.wellesley.edu/~cs230/fall02/2-3-trees.pdf
Cykl Eulera
Cykl Eulera w grafie skierowanym G istnieje wtedy i tylko wtedy gdy:
• dla każdego wierzchołka v ∈ V (G) mamy indeg(v) = outdeg(v).
• nieskierowana wersja grafu G (tzn. taka w której ignorujemy zwrot kra- wędzi), jest spójna,
• C = ∅
• tak długo jak G nie jest pusty, oblicz dowolny cykl i dołącz go do C,
1
Silne spójne składowe
Wierzchołki x, y należą do tej samej silnej spójnej składowej, jeśli istnieją ścieżki z x do y oraz z y do x.
SCC(G)
• uruchom algorytm DFS, oblicz czasy f [v] dla każdego wierzchołka,
• wyznacz graf GT (transpozycja grafu G)
• przeglądaj alg. DFS, wierzchołki GT w kolejności malejących czasów f [v],
• zwróć każde drzewo DFS jako osobną silną spójną składową.
Lemat 1 Silne spójne składowe są identyczne w grafach G i GT.
Lemat 2 Niech C i C0 będą różnymi silnie spójnymi składowymi grafu skiero- wanego G = (V, E) i niech u, v ∈ C, natomiast u0, v0 ∈ C0. Załóżmy, że istnieje ścieżka u → u0 w G. Wówczas w G nie może istnieć ścieżka z v0→ v.
Def. d(U ) = minu∈Ud[u], f (U ) = maxu∈Uf [u].
Lemat 3 Niech C i C0będą różnymi silnie spójnymi składowymi w skierowanym grafie G = (V, E). Załóżmy, że istnieje krawędź (u, v) ∈ E, taka, że u ∈ C i v ∈ C0. Wówczas f (C) > f (C0).
Lemat 4 Niech C i C0będą różnymi silnie spójnymi składowymi w skierowanym grafie G = (V, E). Załóżmy, że istnieje krawedź (u, v) ∈ ET, taka, że u ∈ C i v ∈ C0. Wówczas f (C) < f (C0).
Twierdzenie 1 Algorytm SCC poprawieni oblicza silnie spójne składowe w skie- rowanym grafie G.
2