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.
Rozwiązanie
Na podstawie grafu konstruujemy graf dwudzielny w następujący sposób:
Parser nie mógł rozpoznać (nieznana funkcja „\begin{array}”): {\displaystyle \begin{array}{r@{}c@{}l} V^k_{out} &:=& \{v_{out} : v \in V\, \ v\neq s\} \cup \{s_{out}^{i} : 1\le i \le k\},\\ V^k_{in} &:=& \{v_{in} : v \in V\, \ v\neq t\} \cup \{t_{in}^{i} : 1\le i \le k\},\\ E^k_{out,in} &:=& \{v_{out} u_{in} : (v,u) \in V, \ v \neq s,\ u\neq t\} \cup\\ &\cup& \{v_{out}v_{in} : v \in V\}\cup\\ &\cup& \{s_{out}^i u_{in} : (s,u) \in V, \ 1\le i \le k\}\cup\\ &\cup& \{v_{out} t_{in}^i : (v,t) \in V, \ 1\le i \le k\}.\\ \end{array} }
Konstrukcja ta jest przedstawiona na poniższym rysunku a) przykładowy graf b) graf skonstruowany na podstawie grafu .
Zauważ, że jeżeli w grafie istnieje doskonałe skojarzenie to w grafie istnieje rozłącznych wierzchołkowo ścieżek z do . Jest tak ponieważ każde doskonałe skojarzenie w koduje zbiór wierzchołkowo rozłącznych ścieżek z do . Krawędzie wybrane do doskonałego skojarzenia kodują krawędzie wchodzące do i wychodzące z wierzchołka . Krawędź wchodząca z jest kodowana przez krawędź kojarzącą wierzchołek , a krawędź wychodząca kodowana jest przez krawędź kojarzącą . Odczytując skojarzenie w ten sposób dostajemy zbiór ścieżek zaczynających się w i kończących w oraz ewentualnie pewien zbiór cykli. W drugą stronę łatwo zauważyć, że z każdego zbioru rozłącznych ścieżek możemy skonstruować doskonałe skojarzenie w grafie .
W celu wyznaczenia liczby wierzchołkowo rozłącznych ścieżek w możemy przy pomocy binarnego wyszukiwania znaleźć największe dla którego zawiera doskonałe skojarzenie. Liczbę można też wyznaczyć nie używając wyszukiwania binarnego. Rozważmy graf , oraz załóżmy, że w jest w nim wierzchołkowo rozłącznych ścieżek. Używając kodowania opisanego powyżej możemy skonstruować w skojarzenie o liczności . Weźmy teraz maksymalne skojarzenie w i przyjrzyjmy się zbiorowi ścieżek jaki ono koduje w . Zauważmy, że jeżeli ścieżka wychodząca z wierzchołka urywa się nagle, to można ja usunąć nie zmieniając liczności skojarzenie , te same wierzchołki można skojarzyć krawędziami postaci , które odpowiadają jednoelementowym cyklom.
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 .
Rozwiązanie
Graf krawędziowy dla grafu to graf , w którym wierzchołkami są krawędzie grafu . Natomiast zbiór krawędzi w grafie , to zbiór par krawędzi sąsiednich w . Dodajmy do grafu dwie nowe krawędzie: krawędź wchodzącą do i krawędź
wychodzącą z . Skonstruujemy teraz z graf . Łatwo zauważyć teraz, że maksymalna liczba wierzchołkowo rozłącznych ścieżek w odpowiada maksymalnemu przepływowi 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.
Rozwiązanie
Dla każdego wierzchołka trzeba wykonać transformację przedstawioną na poniższym rysunku.
W transformacji tej zamieniamy wierzchołek o stopniu na skierowanych cykli zawierających 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 liczba wierzchołkowo rozłącznych ścieżek jest równa maksymalnemu przepływowi w oryginalnym grafie. Co więcej graf jest planarny. Pozostaje nam wykonać teraz na transformację z Zadania 1. Zauważmy, że także po jej wykonaniu graf pozostanie planarny.
Zadanie 4
Masz dany graf dwudzielny. Pokaż jak używając algorytmu Hopcrofta-Karpa wyznaczyć minimalne pokrycie wierzchołkowe tego grafu.
Rozwiązanie
Znajdźmy maksymalne skojarzenie w grafie przy pomocy algorytmu Hopcrofta-Karpa. Liczność skojarzenia na pewno jest nie większa niż liczność minimalnego pokrycia wierzchołkowego, ponieważ co najmniej jeden koniec każdej krawędzi skojarzenia musi być wzięty do minimalnego pokrycia wierzchołkowego. Pokażemy teraz, że zachodzi równość, tzn. liczność maksymalnego skojarzenia w grafie dwudzielnym jest równa liczności minimalnego pokrycia wierzchołkowego tego grafu. Dowód ten będzie konstrukcyjny, więc automatycznie dostaniemy algorytm wyznaczający minimalne pokrycie wierzchołkowe.
Skierujmy krawędzie skojarzenia od do , a wszystkie pozostałe krawędzie od do . Niech i to będą zbiory wierzchołków wolnych odpowiednio w i . Niech oznacza zbiór wierzchołków osiągalnych z w tym grafie z . Zauważmy, że , ponieważ w innym wypadku ścieżka z do stanowiłaby ścieżkę powiększającą względem maksymalnego skojarzenia . Niech . Łatwo zauważyć, że liczność jest równa liczności zbioru oraz, że jest pokryciem wierzchołkowym.