Algorytmy i Struktury Danych, 13. ćwiczenia
2018-01-12
Spis treści
1 Rozwiązania zadań z kolokwium 2018-01-11 1
2 Naliczniejsze skojarzenia w drzewach 1
3 Pokrycie wierzcholkowe 2
4 Kolorowanie krawędziowe grafów dwudzielnych 2
1 Rozwiązania zadań z kolokwium 2018-01-11 2 Naliczniejsze skojarzenia w drzewach
Możemy obliczyć następujące tablice:
• OP T [v] – najlepsze rozwiązanie dla poddrzewa o korzeniu w v,
• OP T1[v] – najlepsze rozwiązanie dla poddrzewa o korzeniu w v, ale zakła- damy, że v i pewien z jego synów jest połączony krawędzią ze skojarzenia,
• OP T2[v] – najlepsze rozwiązanie dla podrzewa o korzeniu w v, ale zakła- damy, że v i żaden z jego synów nie jest połączony krawędzią ze skojarze- nia.
Algorithm 1: MaxMatching(v) for x ∈ child(v) do MaxMatching(x) sumOpt = 0
for x ∈ child(v) do sumOpt = sumOpt + OP T [x]
OP T2[v] = sumOpt; OP T1[v] = −∞
for x ∈ child(v) do
OP T1[v] = max(OP T1[v], sumOpt − OP T [x] + OP T2[x] + 1) OP T [v] = max(OP T1[v], OP T2[v])
1
3 Pokrycie wierzcholkowe
Pokrycie wierzchołkowe — minimalny pozbiór wierzchołków C ⊆ V , taki, że dla każdej krawędzi (x, y) ∈ E, x ∈ C lub y ∈ C.
Twierdzenie 1. (Konig, Egervary, 1931) Jeśli G graf dwudzielny, C minimalne pokrycie wierzchołkowe G, M maksymalne skojarzenie G, to |C| = |M |.
Dowód: (przez przepływy) Dodajemy do grafu s i t (s połączone z wierz- chołkami X, t połączone z wierzchołkami Y ), wszystkie krawędzie z/do s, t, mają przepustowość 1, oryginalne krawędzie grafowe mają przepustowość ∞.
|f | = |M |, a jako minimalne pokrycie bierzemy zbiór wierzchołków sąsiadujący z krawędziami cięcia.
Dowód: Niech M maksymalne skojarzenie, w takim razie |C| ≥ |M |. Należy jeszcze udowodnić, że |M | ≥ |C|.
Niech C minimalne pokrycie wierzchołkowe, można pokazać, że C ∩X można doskonale skojarzyć z Y −C (C ∩X i Y −C muszą spełniać twierdzenie Hall, ina- czej można pokazać, mniejsze minimalne pokrycie), oraz C ∩Y można doskonale skojarzyć z X − C, co w sumie daje skojarzenie o mocy |C|.
Twierdzenie 2. (Hall, 1935) Niech G graf dwudzielny (o zbiorach wierzchołków X i Y ). Pełne skojarzenie wierzchołków X istnieje wtw, |S| ≤ |N (S)| dla dowolnego S ⊆ X.
Jeśli graf ma skojarzenie doskonałe, to warunek jest spełniony.
Niech dla każdego S ⊆ X, |S| ≤ |N (S)|, oraz istnieje x0 ∈ X, który nie jest skojarzony. Niech Z bedzie zbiorem wierzchołków osiągalnych z x0 przez ścieżki alternujące. Ponieważ M jest najliczniejszym skojarzeniem, nie wśród nich ścieżek rozszerzających. Niech S = Z ∩ A, T = Z ∩ B. Każdy wierzchołek w T jest skojarzony z pewnym wierzchołkiem z S −{x0}, oraz każdy wierzchołek z S − {x0} jest skojarzony z pewnym wierzchołkiem z T . Więc |T | = |S| − 1, ale T = N (S), stąd |N (S)| = |S| − 1 — sprzeczność.
4 Kolorowanie krawędziowe grafów dwudzielnych
Lemat 1. Dla grafu dwudzielnego G = (X ∪ Y, E), niech 4(G) oznacza mak- symalny stopień wierzchołków. Do pokolorowania krawędziowego grafu G jest konieczne i wystarczające 4(G) kolorów.
Jeśli graf nie jest regularny, to należy dodać nowe krawędzie i ewentualnie wierz- chołki tak by przerobić go na regularny.
2
Algorithm 2: Edge-Coloring(G,[a,. . . ,b])
1: if 4(G) = 1 then
2: for all e ∈ E(G) do
3: color[e] ← a
4: end for
5: else if 4(G) jest parzysta then
6: (G1, G2) ← Euler-Split(G)
7: Edge-Coloring(G1, [a, . . . , b(a + b)/2c])
8: Edge-Coloring(G2, [b(a + b)/2c + 1, . . . , b])
9: else
10: M ← Matching(G)
11: for all e ∈ E(M ) do
12: color[e] ← a
13: end for
14: Edge-Coloring(G − M, [a + 1, . . . , b]);
15: end if
3