Zaawansowane algorytmy i struktury danych/Ćwiczenia 7: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Sank (dyskusja | edycje)
Sank (dyskusja | edycje)
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.


{{ramka|1=[[Grafika:zasd_planar-path-transformation.png|500px|center]]|2=
[[Grafika:zasd_planar-path-transformation.png|500px|center]]
Transformacja grafu a) transformowany wierzchołek b) podgraf skonstruowany na podstawie tego wierzchołka, który łączy się z tymi samymi krawędziami.
}}


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 G=(V,E) wraz z dwoma wybranymi wierzchołkami s,tV. Pokaż jak używając algorytmu Hopcrofta-Karpa wyznaczyć maksymalną liczbę wierzchołkowo rozłącznych ścieżek z s do t. Wierzchołki s i t będą oczywiście wspólne dla tych ścieżek.

Rozwiązanie

Zadanie 2

Masz daną sieć przepływową G=(V,E) wraz z dwoma wybranymi wierzchołkami s,tV, w której wszystkie przepustowości krawędzi wynoszą 1. Pokaż jak używając algorytmu Hopcrofta-Karpa wyznaczyć maksymalny przepływ z s do t w sieci G.

Rozwiązanie


Zadanie 3

Masz daną planarną sieć przepływową G=(V,E) wraz z dwoma wybranymi wierzchołkami s,tV, w której wszystkie przepustowości krawędzi wynoszą 1. Pokaż jak rozwiązać problem wyznaczenia maksymalnego przepływu w sieci G 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

Zadanie 4

Masz dany graf G=(V1V2,E) dwudzielny. Pokaż jak używając algorytmu Hopcrofta-Karpa wyznaczyć minimalne pokrycie wierzchołkowe tego grafu.

Rozwiązanie