Matematyka dyskretna - 5.Grafy.

Podobne dokumenty
Matematyka dyskretna - 6.Grafy

5c. Sieci i przepływy

6. Wstępne pojęcia teorii grafów

Graf. Definicja marca / 1

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

Matematyka dyskretna. Andrzej Łachwa, UJ, B/14

Matematyka dyskretna

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

Grafy. Graf ( graf ogólny) to para G( V, E), gdzie:

Digraf. 13 maja 2017

Suma dwóch grafów. Zespolenie dwóch grafów

Przykłady grafów. Graf prosty, to graf bez pętli i bez krawędzi wielokrotnych.

MATEMATYKA DYSKRETNA - MATERIAŁY DO WYKŁADU GRAFY

Matematyka dyskretna. Andrzej Łachwa, UJ, /15

6d. Grafy dwudzielne i kolorowania

Matematyczne Podstawy Informatyki

Teoria grafów podstawy. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

Matematyczne Podstawy Informatyki

Matematyczne Podstawy Informatyki

Algorytmiczna teoria grafów

6a. Grafy eulerowskie i hamiltonowskie

Reprezentacje grafów nieskierowanych Reprezentacje grafów skierowanych. Wykład 2. Reprezentacja komputerowa grafów

KURS MATEMATYKA DYSKRETNA

a) 7 b) 19 c) 21 d) 34

Czy istnieje zamknięta droga spaceru przechodząca przez wszystkie mosty w Królewcu dokładnie jeden raz?

Drzewa. Jeżeli graf G jest lasem, który ma n wierzchołków i k składowych, to G ma n k krawędzi. Własności drzew

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

Podstawowe własności grafów. Wykład 3. Własności grafów

Opracowanie prof. J. Domsta 1

Drzewa spinające MST dla grafów ważonych Maksymalne drzewo spinające Drzewo Steinera. Wykład 6. Drzewa cz. II

Matematyka dyskretna - 7.Drzewa

Teoria grafów dla małolatów. Andrzej Przemysław Urbański Instytut Informatyki Politechnika Poznańska

Grafy dla każdego. dr Krzysztof Bryś. Wydział Matematyki i Nauk Informacyjnych Politechnika Warszawska.

Matematyka dyskretna. Andrzej Łachwa, UJ, /15

Algorytmiczna teoria grafów

Kolorowanie wierzchołków Kolorowanie krawędzi Kolorowanie regionów i map. Wykład 8. Kolorowanie

Struktury danych i złożoność obliczeniowa Wykład 7. Prof. dr hab. inż. Jan Magott

Grafem nazywamy strukturę G = (V, E): V zbiór węzłów lub wierzchołków, Grafy dzielimy na grafy skierowane i nieskierowane:

Algorytmy grafowe. Wykład 1 Podstawy teorii grafów Reprezentacje grafów. Tomasz Tyksiński CDV

SPÓJNOŚĆ. ,...v k. }, E={v 1. v k. i v k. ,...,v k-1. }. Wierzchołki v 1. v 2. to końce ścieżki.

Matematyka dyskretna. Andrzej Łachwa, UJ, A/14

Teoria grafów II. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak

Algorytm Dijkstry znajdowania najkrótszej ścieżki w grafie

G. Wybrane elementy teorii grafów

E ' E G nazywamy krawędziowym zbiorem

7. Teoria drzew - spinanie i przeszukiwanie

Struktury danych i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott

Wykład 4. Droga i cykl Eulera i Hamiltona

Matematyka dyskretna. Andrzej Łachwa, UJ, /15

Droga i cykl Eulera Przykłady zastosowania drogi i cyku Eulera Droga i cykl Hamiltona. Wykład 4. Droga i cykl Eulera i Hamiltona

0. ELEMENTY LOGIKI. ALGEBRA BOOLE A

Zofia Kruczkiewicz, Algorytmu i struktury danych, Wykład 14, 1

Grafy. Jeżeli, to elementy p i q nazywamy końcami krawędzi e. f a b c d e γ f {1} {1,2} {2,3} {2,3} {1,3}

MATEMATYKA DYSKRETNA - KOLOKWIUM 2

Wykłady z Matematyki Dyskretnej

Elementy teorii grafów Elementy teorii grafów

Matematyka dyskretna - 8. Egzaminy próbne. Uwaga! Niektórych z tych zadań nie obejmuje program dla studiów zaocznych - proszę się tym nie niepokoić -

SKOJARZENIA i ZBIORY WEWN. STABILNE WIERZCH. Skojarzeniem w grafie G nazywamy dowolny podzbiór krawędzi parami niezależnych.

Wprowadzenie Podstawy Fundamentalne twierdzenie Kolorowanie. Grafy planarne. Przemysław Gordinowicz. Instytut Matematyki, Politechnika Łódzka

TEORIA GRAFÓW I SIECI

Algorytmy Równoległe i Rozproszone Część V - Model PRAM II

TEORIA GRAFÓW I SIECI

TEORIA GRAFÓW I SIECI

Algorytmika Problemów Trudnych

MODELE SIECIOWE 1. Drzewo rozpinające 2. Najkrótsza droga 3. Zagadnienie maksymalnego przepływu źródłem ujściem

KURS MATEMATYKA DYSKRETNA

Zad. 1 Zad. 2 Zad. 3 Zad. 4 Zad. 5 SUMA

Złożoność obliczeniowa klasycznych problemów grafowych

Ogólne wiadomości o grafach

Kolorowanie wierzchołków

Grafy (3): drzewa. Wykłady z matematyki dyskretnej dla informatyków i teleinformatyków. UTP Bydgoszcz

Ilustracja S1 S2. S3 ściana zewnętrzna

Sortowanie topologiczne skierowanych grafów acyklicznych

Algorytmy wyznaczania centralności w sieci Szymon Szylko

Kombinowanie o nieskończoności. 2. Wyspy, mosty, mapy i kredki materiały do ćwiczeń

Algorytmiczna teoria grafów Przepływy w sieciach.

Porównanie algorytmów wyszukiwania najkrótszych ścieżek międz. grafu. Daniel Golubiewski. 22 listopada Instytut Informatyki

Segmentacja obrazów cyfrowych z zastosowaniem teorii grafów - wstęp. autor: Łukasz Chlebda

Algorytmy i Struktury Danych.

Marek Miszczyński KBO UŁ. Wybrane elementy teorii grafów 1

Matematyka dyskretna. Andrzej Łachwa, UJ, /15

Algebrą nazywamy strukturę A = (A, {F i : i I }), gdzie A jest zbiorem zwanym uniwersum algebry, zaś F i : A F i

Programowanie sieciowe. Tadeusz Trzaskalik

(4) x (y z) = (x y) (x z), x (y z) = (x y) (x z), (3) x (x y) = x, x (x y) = x, (2) x 0 = x, x 1 = x

TEORIA GRAFÓW I SIECI

Znajdowanie skojarzeń na maszynie równoległej

Podstawowe pojęcia dotyczące drzew Podstawowe pojęcia dotyczące grafów Przykłady drzew i grafów

Lista 4. Kamil Matuszewski 22 marca 2016

Algorytmy z powracaniem

Teoria grafów dla małolatów

1) Grafy eulerowskie własnoci algorytmy. 2) Problem chiskiego listonosza

Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku

Spis treści Podstawowe definicje Wielomian charakterystyczny grafu Grafy silnie regularne

Minimalne drzewa rozpinające

Wykłady z Matematyki Dyskretnej

Zagadnienie najkrótszej drogi w sieci

Sieć (graf skierowany)

E: Rekonstrukcja ewolucji. Algorytmy filogenetyczne

Podejście zachłanne, a programowanie dynamiczne

Transkrypt:

Matematyka dyskretna - 5.Grafy. W tym rozdziale zajmiemy się grafami. Są to wykresy zawierające rozmaite informacje, przedstawiające połączenia pomiędzy różnymi swoimi elementami. Algorytmy na nich oparte mają mnóstwo zastosowań: reprezentują hierarchię (np. w zawodach sportowych), opisują rozwój populacji jakichś stworzonek w laboratorium, umożliwiają analizę sieci dróg (np. znajdowanie optymalnej drogi z jednego punktu do drugiego jak w urządzeniach GPS lub grach komputerowych), czy też sieci społecznych (np. przepływ informacji w firmie lub jakiejś innej grupie ludzi). I. Wstępne definicje Graf, jaki jest, każdy widzi. Mapa drogowa. Schemat blokowy (np. przepisu kulinarnego). Sieć kontaktów. Drzewo genealogiczne. Ale potrzebujemy jakiejś bardziej konkretnej definicji. Definicja 1 (Graf). Grafem lub grafem ogólnym nazywamy parę G = (V, E), gdzie: 1) V (czasem zapisywany V (G)) jest zbiorem wierzchołków ( węzłów, punktów) 2) E (czasem zapisywany E(G)) jest rodziną krawędzi (które mogą się powtarzać), czyli jedno- i dwu-elementowych podzbiorów V. Będziemy się zajmować głównie grafami skończonymi tj. o skończonej liczbie wierzchołków i krawędzi, dlatego, jeśli nie jest napisane inaczej, zakładamy, że graf w danej definicji lub twierdzeniu jest skończony. Krawędź łączącą wierzchołki u i v w skrócie zapisujemy jako uv. Jeśli taka krawędź istnieje, mówimy, że u i v są sąsiadami, a krawędź uv nazywamy incydentną z u i v. Krawędź uv nazywamy pętlą jeśli u = v. Definicja 2 (Graf prosty). Grafem prostym nazywamy parę G = (V, E), gdzie: 1) V jest zbiorem wierzchołków ( węzłów, punktów) 2) E jest zbiorem różnych krawędzi o różnych końcach. W grafie, w odróżnieniu od grafu prostego, mogą istnieć krawędzie wielokrotne i pętle. Graf H składający się tylko z wierzchołków i łączących je krawędzi należących do grafu G nazywamy podgrafem G. Warto jeszcze określić, kiedy grafy (z matematycznego punktu widzenia) są takie same: Definicja 3 (Grafy izomorficzne). Dwa grafy G i H nazywamy izomorficznymi jeśli istnieje bijekcja (czyli odwzorowanie jeden do jednego ) ψ między zbiorami V (G) i V (H) zachowująca sąsiedztwo wierzchołków, tzn. uv E(G) ψ(u)ψ(v) E(H). Fakt istnienia izomorfizmu grafów zapisujemy G H. Izomorficzność grafów oznacza, że różnią się one tylko nazwami wierzchołków i krawędzi, a ich struktura jest taka sama. W praktyce nie będziemy rozróżniać grafów izomorficznych (chyba, że do praktycznych zastosowań). Definicja 4 (Stopień wierzchołka). Stopniem wierzchołka v nazywamy liczbę deg v, oznaczającą liczbę krawędzi incydentnych z v (uwaga: w obliczaniu stopnia wierzchołka pętle liczymy jako dwie krawędzie incydentne). Twierdzenie 1. Jeśli G = (V, E) jest grafem ogólnym, to: deg v = 2 E. Zatem liczba wierzchołków stopnia nieparzystego jest parzysta. 1 v V

2 Uściski dłoni we wszechświecie. Żeby móc analizować trasy jednokierunkowe (np. niektóre drogi w miastach) będziemy rozważać tzw. grafy skierowane: Definicja 5 (Graf skierowany). Grafem skierowanym lub digrafem nazywamy parę G = (V, E), gdzie: 1) V jest zbiorem wierzchołków ( węzłów, punktów) 2) E jest rodziną krawędzi skierowanych (które mogą się powtarzać), czyli elementów V V. Krawędzie skierowane na rysunkach grafów przedstawiamy jako strzałki, a krawędzie takiego grafu zapisujemy jako pary uporządkowane np. (u, v). Definicja 6 (Graf z wagami). Grafem z wagami nazywamy graf (skierowany lub nie), w którym każdej krawędzi e przypisana jest nieujemna liczba W (e). Wagą grafu nazywamy sumę wag jego krawędzi. y Drogi z czasami przejazdu, kroki procedury z kosztem wykonania, łącza z przepustowościami. II. Drogi, cykle i spójność Definicja 7. Droga w grafie G to skończony ciąg krawędzi postaci: wv 1, v 1 v 2,..., v k u. Oznaczamy go wv 1... v k u. Wierzchołek w nazywamy początkiem, a u - końcem drogi. W wypadku grafu skierowanego, droga jest zdefiniowana tak samo, ale kolejne krawędzie drogi muszą mieć kierunek zgodny z kierunkiem krawędzi w grafie. Definicja 8. Długość drogi to liczba jej krawędzi. Definicja 9. Droga zamknięta to droga dla której w = u, czyli wierzchołek początkowy jest też wierzchołkiem końcowym. Definicja 10. Droga prosta, to droga, której wszystkie krawędzie są różne. Definicja 11. Cykl to droga zamknięta, w której jedynym powtarzającym się wierzchołkiem jest jej początek (i jednocześnie koniec). Definicja 12. Graf acykliczny to graf, który nie zawiera cykli. Definicja 13. Graf spójny to graf, w którym między dowolnymi dwoma wierzchołkami istnieje droga. Jeśli graf nie jest spójny, to jest niespójny. Liczba krawędzi w grafie spójnym: graf spójny musi mieć przynajmniej V 1 krawędzi. Każdy graf można podzielić na maksymalne (w sensie zawierania) spójne podgrafy, zwane składowymi spójnymi. Definicja 14. Most to taka krawędź grafu, po której usunięciu liczba składowych spójnych zwiększa się o 1. Definicja 15. Las to graf prosty, acykliczny. Definicja 16. Drzewo to graf prosty, spójny, acykliczny (czyli spójny las). Wierzchołki drzewa nazywamy węzłami. Podgraf spójny drzewa nazywamy poddrzewem. III. y różnych grafów Definicja 17. Graf pusty ( antyklika, graf niezależny) to graf bez krawędzi. Antyklikę o n wierzchołkach oznacza się przez A n. Definicja 18. Graf pełny ( klika) to graf prosty, w którym każde dwa wierzchołki są połączone dokładnie jedną krawędzią. Klikę o n wierzchołkach oznacza się przez K n.

3 Liczba krawędzi w klice. Grafy platońskie. IV. Grafy eulerowskie i hamiltonowskie Mosty w Królewcu. Robot sprzątający korytarze w budynku. Listonosz w mieście. Definicja 19. Cyklem Eulera nazywamy zamkniętą drogę przechodzącą przez każdą krawędź grafu dokładnie raz. Definicja 20. Drogą Eulera nazywamy drogę prostą zawierającą wszystkie krawędzie grafu. Definicja 21. Grafem eulerowskim nazywamy graf posiadający cykl Eulera. y Alternatywny problem skoczka szachowego. Charakterystyka grafów Eulerowskich Twierdzenie 2 (Euler). Graf G = (V, E) jest eulerowski wtedy i tylko wtedy, gdy jest spójny i stopień każdego wierzchołka jest parzysty. Graf G ma drogę Eulera wtedy i tylko wtedy, gdy ma dokładnie dwa lub zero wierzchołków stopnia nieparzystego. Wniosek o mostach w Królewcu i alternatywnym problemie skoczka szachowego. Drzewa. Potrzeba systematycznego podejścia. Algorytm 1. FLEURY(G): Dane: Graf G = (V (G), E(G)), spełniający założenia twierdzenia Eulera. Zmienne: ES - ciąg krawędzi. I. Wybierz dowolny wierzchołek v nieparzystego stopnia, jeśli istnieje. W przeciwnym wypadku wybierz dowolny wierzchołek v. Niech ES =. II. Jeśli z wierzchołka v nie wychodzi ani jedna krawędź -> STOP. III. Jeśli pozostała dokładnie jedna krawędź wychodząca z v, np. vw, wtedy usuń vw z E(G) oraz v z V (G) i przejdź do kroku V. IV. Jeśli została więcej niż jedna krawędź wychodząca z wierzchołka v, wybierz krawędź vw, która nie jest mostem. Następnie usuń vw z E(G). V. Dołącz vw na końcu ciągu ES, zastąp v wierzchołkiem w i przejdź do kroku II. Rezultat: ES to droga lub cykl Eulera. Grafy hamiltonowskie. Robot sprzątający pokoje w budynku. Problem komiwojażera. Definicja 22. Cykl Hamiltona to cykl przechodzący przez wszystkie wierzchołki grafu. Definicja 23. Graf hamiltonowski to graf posiadający cykl Hamiltona. Nie znana jest żadna metoda, pozwalająca szybko (tzn. w czasie wielomianowym) stwierdzić czy dany graf jest hamiltonowski. Mamy do dyspozycji tylko warunki wystarczające na określenie tego. Twierdzenie 3 (Ore). Jeśli w grafie prostym G = (V, E) o co najmniej 3 wierzchołkach każde dwa niesąsiednie wierzchołki v i w spełniają deg v + deg w V, to graf G jest hamiltonowski.

4 V. Grafy skierowane i najkrótsze drogi Typowym zagadnieniem związanym z grafami skierowanymi (zwłaszcza z wagami) jest znalezienie najkrótszej drogi z jednego wierzchołka do drugiego. y GPS, gry komputerowe, procesy produkcyjne. Najpierw rozważmy prosty przypadek wyznaczania najkrótszej drogi z wybranego wierzchołka do każdego innego w grafie bez wag. Zazwyczaj rozwiązuje się to zagadnienie przy pomocy tak zwanego algorytmu przeszukiwania wszerz. Dla wygody, w dowolny sposób ponumerujmy wierzchołki grafu V (G) = {1,..., n}. Poszukujemy najkrótszej drogi z wierzchołka 1 do każdego innego wierzchołka j. Algorytm 2. WSZERZ(G): Dane: Graf skierowany G = (V (G), E(G)), ze zbiorem wierzchołków V (G) = {1,..., n}. Zmienne: L, S i V - zbiory wierzchołków, D - funkcja, i, j - liczby pomocnicze. I. L := {1}, V := {2,... n}. D(1) = 0, S :=. II. Dopóki L = E(G) wykonuj: II.1 Dla j V L wykonuj: jeśli istnieje i L takie, że ij E(G), dołącz j do S i zdefiniuj D(j) = D(i) + 1. II.2 L := L S, S :=. Rezultat: D(j) to minimalna długość drogi z 1 do j. Uwaga Jeśli chcemy znaleźć długość drogi tylko do jednego punktu j, wystarczy dołożyć warunek stopu po znalezieniu liczby D(j). Uwaga Jeśli chcemy, by algorytm zwracał nie tylko długość drogi, ale samą drogę, potrzebujemy tzw. wskaźników - ich dodawanie zobaczymy za chwilę, na przykładzie innego algorytmu. Rozważmy teraz trudniejszy przypadek: graf prosty skierowany z wagami G (obecność pętli i krawędzi wielokrotnych nie utrudnia zagadnienia, ale to założenie pomaga skupić się na istocie algorytmu). W jest funkcją wag krawędzi. Jak w algorytmie WSZERZ, numerujemy dowolnie wierzchołki. Rozwiązaniem tego problemu jest algorytm Dijkstry. Algorytm 3. DIJKSTRA(G): Dane: Graf prosty skierowany ze zbiorem wierzchołków V (G) = {1,..., n} i funkcją W wag krawędzi o wartościach nieujemnych (jeśli krawędź (v, w) nie istnieje to podstawiamy W (v, w) = ). Zmienne: L i V - zbiory wierzchołków, D - funkcja. I. L :=, V := {2,... n}. II. Dla i V wykonuj: D(i) := W (1, i) III. Dopóki V L =, wykonuj: III.1 wybierz k V L takie, że D(k) przyjmuje najmniejszą możliwą wartość. III.2 dołącz k do zbioru L. III.3 dla każdego j V L wykonuj: jeśli D(j) > D(k) + W (k, j) to zastąp D(j) sumą D(k) + W (k, j). Rezultat: D(j) to minimalna waga drogi z 1 do j. Jako wynik, otrzymujemy minimalną wagę drogi z wierzchołka 1 do każdego innego. Algorytm nie wypisuje jednak samej drogi. By ją otrzymać, potrzebujemy drobnej poprawki: tzw. algorytmu Dijkstry ze wskaźnikami. Algorytm 4. DIJKSTRAWSKAZNIK(G): Dane: Graf prosty skierowany ze zbiorem wierzchołków V (G) = {1,..., n} i funkcją W wag krawędzi o wartościach nieujemnych (jeśli krawędź (v, w) nie istnieje to podstawiamy W (v, w) = ). Zmienne: L i V - zbiory wierzchołków, D, P - funkcje. I. L :=, V := {2,... n}. II. Dla i V wykonuj: II.1 D(i) := W (1, i). II.2 Jeśli W (1, i) = to P (i) := 0, w innym wypadku P (i) := 1.

III. Dopóki V L =, wykonuj: III.1 wybierz k V L takie, że D(k) przyjmuje najmniejszą możliwą wartość. III.2 dołącz k do zbioru L. III.3 dla każdego j V L wykonuj: jeśli D(j) > D(k) + W (k, j) to zastąp D(j) sumą D(k) + W (k, j) i zastąp P (j) liczbą k. Rezultat: D(j) to minimalna waga drogi z 1 do j, P (k) to wskaźnik, który pokazuje poprzedni etap drogi z 1 do j. Jeśli dla jakiegoś j P (j) = 0, to oznacza, że droga z 1 do j nie istnieje. W innym wypadku, w ciągu j, P (j), P (P (j)),... występują wierzchołki drogi minimalnej od 1 do j w odwrotnej kolejności. Uwaga: Obydwa algorytmy Dijkstry można stosować również do grafów nieskierowanych z wagami. Wystarczy taki graf zmienić w skierowany zastępując każdą jego krawędź dwiema krawędziami łączącymi te same wierzchołki, a skierowanymi w przeciwne strony (wagi pozostają te same). Uwaga: By zapamiętać drogę w algorytmie wyszukiwania wszerz, wystarczy dodać wskaźniki (czyli funkcję P ) w ten sam sposób, co w algorytmie Dijkstry. VI. Sieci i przepływy Definicja 24. Sieć jest to graf skierowany z nieujemnymi wagami (funkcja wag jest w tym wypadku zwana przepustowością sieci) oraz dwoma wyróżnionymi wierzchołkami, które są odpowiednio nazywane źródłem i ujściem sieci. y Sieć wodociągowa, sieć komputerowa, sieć kolejowa. Dla sieci podstawowe jest pytanie: przy danej przepustowości łączy, ile można przesłać (wody, danych, towarów) od źródła do ujścia w jednostce czasu. Definicja 25. Przepływ sieci (V,E) z przepustowością c to funkcja f : E [0, ) spełniająca warunki: 1) 0 f(v, w) c(v, w) dla każdej krawędzi (v, w) (tj. przepływ wzdłuż krawędzi nie przekracza jej przepustowości). 2) x V,(x,v) E f(x, v) = x V,(v,x) E f(v, x) dla każdego wierzchołka v poza źródłem s i ujściem t. Równość ta oznacza, że sumaryczna wartość tego, co wpływa do wierzchołka jest równa sumarycznej wartości tego, co zeń wypływa. 3) x V (f(s, x) f(x, s)) = x V (f(x, t) f(t, x)) tzn. sumaryczna wartość tego, co wypływa ze źródła musi być równa sumarycznej wartości tego, co wpływa do ujścia. Wartość ta będzie określana wartością przepływu f. Właśnie maksymalna możliwa wartość przepływu będzie poszukiwaną przez nas wielkością. Przyda się do tego jeszcze para definicji: Definicja 26. Siecią residualną dla sieci G = (V, E) z przepustowością c i przepływem f, nazywamy sieć G f = (V, E f ), gdzie E f jest zdefiniowane następująco: E f = {(u, v) V V : c f (u, v) > 0}, gdzie c f (u, v) oznacza tzw. przepustowość residualną dla krawędzi (u, v). Ta natomiast jest dana wzorem: c f (u, v) = c(u, v) f(u, v), Krawędzie należące do E f, nazywa się krawędziami residualnymi. Bardziej intuicyjnie, przepustowość residualna dla pewnej krawędzi (u, v), oznacza, o ile można zwiększyć przepływ przez nią, tak jednak, aby nie przekroczył on jej przepustowości. Do sieci residualnej natomiast należą te krawędzie, przez które przepływ można zwiększyć. 5

6 Definicja 27. Ścieżką powiększającą dla sieci G nazywamy dowolną drogę z s do t w sieci residualnej dla G. Przepustowość residualną dowolnej ścieżki powiększającej p, dla sieci G, określamy wzorem: c f (p) = min {c f (u, v) : (u, v) p}. Innymi słowy, przepustowość residualna jest to wartość, o jaką maksymalnie można zwiększyć przepływ przez wszystkie krawędzie należące do ścieżki p. Algorytmy wyznaczania maksymalnego przepływu opierają się na tzw. metodzie Forda- Fulkersona, czyli na stopniowym zwiększaniu przepływu wzdłuż każdej drogi prostej od źródła do ujścia. Sednem każdej takiej operacji jest warunek: jeśli istnieje ścieżka powiększająca, zwiększ maksymalnie przepływ wzdłuż tej ścieżki. Jako przykład, pokażemy jeden (nie najszybszy, ale najprostszy) ze sposobów wyznaczania maksymalnego przepływu: algorytm Edmondsa-Karpa. Jego ideą jest znajdowanie w każdym kroku najkrótszej (pod względem liczby krawędzi) ścieżki powiększającej. Algorytm 5. EDMONDS-KARP(G): Dane: Sieć (V, E) z wyróżnionym źródłem s V i ujściem t V, z przepustowością c. Zmienne: funkcja przepływu f : V V R, r : V V R, p - droga prosta w sieci, r - funkcja przepustowości residualnej, a-liczba. I. Dla każdej pary (u, v), f(u, v) := 0, r(u, v) := c(u, v), gdy (u, v) E oraz r(u, v) = 0 w przeciwnym wypadku. {w każdym momencie będzie r(u, v) = c(u, v) f(u, v), gdy (u, v) E} II. Dopóki istnieje jakakolwiek ścieżka powiększająca wykonaj: II.1 Wskaż najkrótszą ze względu na liczbę krawędzi ścieżkę powiększającą (np. z algorytmu przeszukiwania wszerz albo z algorytmu Dijkstry dla równych wag). Oznaczmy tę najkrótszą ścieżkę powiększającą przez p. II.2 a := min{r(u, v) : (u, v) należy do p}. II.3 Dla każdej krawędzi (u, v) należącej do p wykonaj: f(u, v) := f(u, v) + a, f(v, u) := f(v, u) a, r(u, v) := r(u, v) a, r(v, u) = r(u, v) + a. Rezultat: Funkcja zadana przez f na zbiorze E jest funkcją przepływu o maksymalnej wartości dla sieci (V, E). Uwaga W trakcie wykonywania tego algorytmu, mogą się pojawić przepływy ujemne tj. sieci residualne zawierające krawędzie, których w oryginalnej sieci nie było i dodawanie wartości przepływu wzdłuż tych krawędzi. To nic nie przeszkadza - wynik działania algorytmu i tak będzie dobry. Uwaga Algorytm ten można przerobić tak, by rozwiązywał też sytuację z wieloma źródłami i ujściami. Wystarczy do sieci dołożyć jedno superźródło i jedno superujście oraz krawędzie o nieskończonej przepustowości łączące je odpowiednio z wszystkimi źródłami i wszystkimi ujściami, a po przejściu algorytmu Edwardsa-Karpa usunąć te dodatki. VII. Grafy dwudzielne i skojarzenia Definicja 28. Graf dwudzielny to graf G = (V, E), w którym zbiór wierzchołków V da się podzielić na dwa rozłączne podzbiory V 1 oraz V 2 tak, by żadne dwa wierzchołki w obrębie tego samego podzbioru V i nie były sąsiadami. Dla podkreślenia takiego podziału, graf dwudzielny będziemy oznaczać przez (V 1 V 2, E). Twierdzenie 4. Graf jest dwudzielny wtedy i tylko wtedy, gdy każdy jego cykl ma parzystą długość. Problem biura matrymonialnego. Organy i dawcy.

Definicja 29. Skojarzenie w grafie dwudzielnym G = (V 1 V 2, E) to podzbiór krawędzi M E(G), w którym żadne dwie v 1 v 2, u 1 u 2 M nie wychodzą z tego samego wierzchołka (czyli zbiór rozłącznych par elementów połączonych krawędziami). Mówimy, że v V i jest skojarzony, jeśli istnieje w V 3 i taki, że krawędź vw należy do skojarzenia. Definicja 30. Pełne skojarzenie w grafie dwudzielnym G = (V 1 V 2, E) to skojarzenie, w którym każdy wierzchołek z V 1 jest skojarzony. Kiedy takie skojarzenie da się skonstruować? By odpowiedzieć na to pytanie, trzeba wpierw skonstruować funkcję: Φ, która zbiorowi A V 1 przyporządkowuje zbiór tych wierzchołków V 2, które są sąsiednie z przynajmniej jednym wierzchołkiem w A. Twierdzenie 5 (Hall). Niech G = (V 1 V 2, E) będzie grafem dwudzielnym. Wówczas pełne skojarzenie w G istnieje wtedy i tylko wtedy, gdy A Φ(A) dla każdego podzbioru A zbioru V 1. Grafy dwudzielne badał Lloyd Shapley, który w 2012 roku otrzymał nagrodę Nobla z ekonomii między innymi za modelowanie i rozwiązanie problemu optymalizacyjnego zwanego problemem stabilnego małżeństwa. Jest to problem, w którym każdy kawaler i panna na wydaniu posiadają swój ranking płci przeciwnej i trzeba ich tak połączyć w pary małżeńskie, żeby nie doszło do pokusy zdrady, czyli sytuacji, gdy pewna para (niemałżeńska) woli siebie nawzajem od swoich partnerów w małżeństwie. Okazuje się, że bez względu na ranking indywidualnych preferencji, zawsze istnieje szczęśliwe rozwiązanie tego problemu. Wspólnie z Davidem Gale em, Shapley stworzył wydajny algorytm rozwiązujący ten problem. 7