• Nie Znaleziono Wyników

Algorytmy i Struktury Danych, 12. ćwiczenia

N/A
N/A
Protected

Academic year: 2021

Share "Algorytmy i Struktury Danych, 12. ćwiczenia"

Copied!
4
0
0

Pełen tekst

(1)

Algorytmy i Struktury Danych, 12. ćwiczenia

2017-12-22

Spis treści

1 Algorytm Floyda-Warshalla 1

2 Cykl Eulera 1

3 Silne spójne składowe 2

4 Rozpoznawanie grafów dwudzielnych 2

5 6 kolorowanie grafów planarnych 3

6 Rozpoznawanie grafów zewnętrznie planarnych 3

7 3 kolorowanie grafów zewnętrznie planarnych 4

1 Algorytm Floyda-Warshalla

Algorytm oblicza najkrótsze ścieżki pomiędzy każdą parą wierzchołków. Algo- rytm działa poprawnie, jeśli w grafie nie istnieje cykl u ujemnej wadze.

1: for i, j ∈ V do

2: dist[i, j] = d[i, j]

3: end for

4: for i ∈ V do

5: for v1∈ V do

6: for v2∈ V do

7: dist[v1, v2] = min(d[v1, v2], d[v1, i] + d[i, v2])

8: end for

9: end for

10: end for

2 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,

1

(2)

• C = ∅

• tak długo jak G nie jest pusty, oblicz dowolny cykl i dołącz go do C,

3 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.

4 Rozpoznawanie grafów dwudzielnych

Algorithm 1: Bipartite(v, color) C[v] = color

for x ∈ adj(v) do

if C[x] = nil then Bipartite(x, 1 − color)

else if C[x] = color then błąd graf nie jest dwudzielny

2

(3)

5 6 kolorowanie grafów planarnych

n − m + f = 2

(n — liczba wierzchołków, m — liczba krawędzi, f — liczba ściań) m ≤ 3v − 6

1 2

Xdeg(vi) ≤ 3n − 6

Xdeg(vi) ≤ 6n − 12

czyli w grafie planarnym istnieje wierzchołek o stopniu co najwyżej 5.

Algorytm 6-kolorowania: tak długo jak graf nie jest pusty, znajdź wierzcho- łek v o stopniu ≤ 5. Usuń go z grafu, pokoloruj rekurencyjnie resztę, nadaj nowy kolor v (zawsze jest co najmniej jeden wolny).

6 Rozpoznawanie grafów zewnętrznie planarnych

Graf jest zewnętrznie planarny jeśli:

• jest planarny,

• można go tak narysować, żeby wszystkie jego wierzchołki leżały na jednej ścianie.

Opis algorytmu można znaleźć w:

• Manfred Wiegers: Recognizing Outerplanar Graphs in Linear Time. WG 1986: pp. 165-176.

Lemat 5 Jeśli graf G jest zewnętrznie planarny to zawiera wierzchołek v, taki, że deg(v) ≤ 2.

3

(4)

Algorithm 2: Outerplanar(V, E) if |V | ≤ 3 then

zaznacz wszystkie krawędzie jako zewnętrzne, return true;

else if ∃vdeg(v) = 1 then Niech w sąsiad wierzchołka v

Zaznacz krawędź (v, w) jako zewnętrzną. return Outerplanar(V − {v}, E − {(v, w)})

else if ∃vdeg(v) = 2 then

Niech w1, w2 sąsiedzi wierzchołka v

if not Outerplanar(V − {v}, E − {(v, w1), (v, w2)} + {(w1, w2)}) then return false;

if (w1, w2) krawędź wewnętrzna then return false;

Zaznacz krawędzie (v, w1), (v, w2) jako zewnętrzne Zaznacz krawędzie (w1, w2) jako wewnętrzną return true;

else

return false;

7 3 kolorowanie grafów zewnętrznie planarnych

Algorytm 3-kolorowania: tak długo jak graf nie jest pusty, znajdź wierzchołek v o stopniu ≤ 2. Usuń go z grafu, pokoloruj rekurencyjnie resztę, nadaj nowy kolor v (zawsze jest co najmniej jeden wolny).

4

Cytaty

Powiązane dokumenty

Zaprojektuj optymalny algorytm pod względem pesymistycznej liczby porów- nań, który znajduje dwa środkowe elementy w zbiorze czterech elementów.. Chcemy ją uporządkować tak,

Udowodnij, że jeśli algorytm sortujący tablicę A[1..n] porównuje i zamienia wy- łącznie elementy odległe co najwyżej o 2015 (tzn. jeśli porównuje A[i] z A[j], to.. |i-j|

[r]

Jeśli graf nie jest regularny, to należy dodać nowe krawędzie i ewentualnie wierz- chołki tak by przerobić go na regularny.. Algorithm

Algorytmy i Struktury

Wstarczy tak długo jak drzewo zawiera węzeł z lewym synem, wykonujemy na nim (i lewym synie) prawą

• v należy do poddrzewa p.right, jednak zauważmy, że liczba kroków tego typu nie może przekroczyć O(log n). 3

[r]