Zaawansowane algorytmy i struktury danych/Ćwiczenia 7: Różnice pomiędzy wersjami
Linia 49: | Linia 49: | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed">'''Rozwiązanie''' | <div class="mw-collapsible mw-made=collapsible mw-collapsed">'''Rozwiązanie''' | ||
<div class="mw-collapsible-content" style="display:none"> | <div class="mw-collapsible-content" style="display:none"> | ||
Dla każdego wierzchołka trzeba wykonać transformację przedstawioną na poniższym rysunku. | Dla każdego wierzchołka trzeba wykonać transformację przedstawioną na poniższym rysunku a) transformowany wierzchołek b) podgraf skonstruowany na podstawie tego wierzchołka, który łączy się z tymi samymi krawędziami. | ||
[[Grafika:zasd_planar-path-transformation.png|500px|center]] | |||
W transformacji tej zamieniamy wierzchołek o stopniu <math>d</math> na <math>\lfloor \frac{d}{2} \rfloor</math> skierowanych cykli zawierających <math>d</math> wierzchołków, po jednym dla każdej krawędzi. Następnie wierzchołki odpowiadające wchodzącej krawędzi łączymy skierowaną ścieżką, skierowanie tej ścieżki jest zgodne z kierunkiem tej krawędzi. Zauważ, że tak skonstruowanym grafie <math>G'</math> liczba wierzchołkowo rozłącznych ścieżek jest równa maksymalnemu przepływowi w oryginalnym grafie. Co więcej graf <math>G'</math> jest planarny. Pozostaje nam wykonać teraz na <math>G'</math> transformację z [[#zadanie 1|Zadania 1]]. Zauważmy, że także po jej wykonaniu graf pozostanie planarny. | W transformacji tej zamieniamy wierzchołek o stopniu <math>d</math> na <math>\lfloor \frac{d}{2} \rfloor</math> skierowanych cykli zawierających <math>d</math> wierzchołków, po jednym dla każdej krawędzi. Następnie wierzchołki odpowiadające wchodzącej krawędzi łączymy skierowaną ścieżką, skierowanie tej ścieżki jest zgodne z kierunkiem tej krawędzi. Zauważ, że tak skonstruowanym grafie <math>G'</math> liczba wierzchołkowo rozłącznych ścieżek jest równa maksymalnemu przepływowi w oryginalnym grafie. Co więcej graf <math>G'</math> jest planarny. Pozostaje nam wykonać teraz na <math>G'</math> transformację z [[#zadanie 1|Zadania 1]]. Zauważmy, że także po jej wykonaniu graf pozostanie planarny. |
Wersja z 15:10, 15 wrz 2006
Zadanie 1
Masz dany graf wraz z dwoma wybranymi wierzchołkami . Pokaż jak używając algorytmu Hopcrofta-Karpa wyznaczyć maksymalną liczbę wierzchołkowo rozłącznych ścieżek z do . Wierzchołki i będą oczywiście wspólne dla tych ścieżek.
Zadanie 2
Masz daną sieć przepływową wraz z dwoma wybranymi wierzchołkami , w której wszystkie przepustowości krawędzi wynoszą 1. Pokaż jak używając algorytmu Hopcrofta-Karpa wyznaczyć maksymalny przepływ z do w sieci .
Zadanie 3
Masz daną planarną sieć przepływową wraz z dwoma wybranymi wierzchołkami , w której wszystkie przepustowości krawędzi wynoszą . Pokaż jak rozwiązać problem wyznaczenia maksymalnego przepływu w sieci poprzez znalezienie maksymalnego skojarzenia w planarnym grafie dwudzielnym, tzn., pokaż konstrukcje tak ta przedstawiona w Zadaniu 1 i 2, ale zachowującą planarność grafu.
Zadanie 4
Masz dany graf dwudzielny. Pokaż jak używając algorytmu Hopcrofta-Karpa wyznaczyć minimalne pokrycie wierzchołkowe tego grafu.