Algorytmiczna teoria grafów Przepływy w sieciach.

Podobne dokumenty
Programowanie sieciowe. Tadeusz Trzaskalik

5c. Sieci i przepływy

Sieć (graf skierowany)

Sieć (graf skierowany)

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

Grafem skierowanym. Typowe zastosowania grafów skierowanych obejmują wiele dziedzin:

Sortowanie topologiczne skierowanych grafów acyklicznych

TEORIA GRAFÓW I SIECI

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}

Zagadnienia optymalizacji na grafach

Wstp. Warto przepływu to

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

TEORIA GRAFÓW I SIECI

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

Matematyka dyskretna - 5.Grafy.

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

A. Kasperski, M. Kulej, BO -Wyk lad 5, Optymalizacja sieciowa 1

Planowanie przedsięwzięć

Ogólne wiadomości o grafach

Matematyka Dyskretna II Wykład 1

Wykład 8. Drzewo rozpinające (minimum spanning tree)

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.

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

Metoda Tablic Semantycznych

Zagadnienie najkrótszej drogi w sieci

Procesy stochastyczne

1. Algorytmy przeszukiwania. Przeszukiwanie wszerz i w głąb.

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

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

DWA ZDANIA O TEORII GRAFÓW. przepływ informacji tylko w kierunku

5. Najkrótsze ścieżki

Filogeneza: problem konstrukcji grafu (drzewa) zależności pomiędzy gatunkami.

Algorytmy stochastyczne laboratorium 03

PROGRAMOWANIE SIECIOWE. METODA ŚCIEŻKI KRYTYCZNEJ

G. Wybrane elementy teorii grafów

Grafy i Zastosowania. 9: Digrafy (grafy skierowane) c Marcin Sydow

Drzewa Gomory-Hu Wprowadzenie. Drzewa Gomory-Hu. Jakub Š cki. 14 pa¹dziernika 2009

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

Teoria automatów i języków formalnych. Określenie relacji

Kolorowanie wierzchołków grafu

ANALIZA SIECIOWA PROJEKTÓW REALIZACJI

Digraf. 13 maja 2017

Znajdowanie skojarzeń na maszynie równoległej

IX. Rachunek różniczkowy funkcji wielu zmiennych. 1. Funkcja dwóch i trzech zmiennych - pojęcia podstawowe. - funkcja dwóch zmiennych,

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

Rozdział 8 PROGRAMOWANIE SIECIOWE

Zarządzanie projektami

Algorytmiczna teoria grafów

Spacery losowe generowanie realizacji procesu losowego

Elementy modelowania matematycznego

Modele sieciowe. Badania operacyjne Wykład 6. prof. Joanna Józefowska

Harmonogramowanie czynności (1)

Plan wykładu. Przykład. Przykład 3/19/2011. Przykład zagadnienia transportowego. Optymalizacja w procesach biznesowych Wykład 2 DECYZJA?

1 Wprowadzenie do algorytmiki

Algorytmy i Struktury Danych.



Szeregowanie zadań. Wykład nr 2. dr Hanna Furmańczyk. 12 października 2014

Metoda tabel semantycznych. Dedukcja drogi Watsonie, dedukcja... Definicja logicznej konsekwencji. Logika obliczeniowa.

TEORIA GRAFÓW I SIECI

Matematyczne Podstawy Informatyki

Teoria Informacji - wykład. Kodowanie wiadomości

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

Algorytmika Problemów Trudnych

Porządek symetryczny: right(x)

Przykłady problemów optymalizacyjnych

Optymalizacja. Przeszukiwanie lokalne

1 Automaty niedeterministyczne

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

Harmonogramowanie przedsięwzięć

Znajdowanie wyjścia z labiryntu

Matematyka dyskretna - wykład - część Podstawowe algorytmy kombinatoryczne

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

Wstęp do sieci neuronowych, wykład 11 Łańcuchy Markova

Wykład z modelowania matematycznego. Zagadnienie transportowe.

Rozwiązywanie problemów metodą przeszukiwania

Instytut Informatyki Uniwersytet Wrocławski. Dane w sieciach. (i inne historie) Marcin Bieńkowski

Analiza Algorytmów 2018/2019 (zadania na laboratorium)

MATEMATYKA DYSKRETNA - MATERIAŁY DO WYKŁADU GRAFY

Tworzenie gier na urządzenia mobilne

Sztuczna Inteligencja Projekt

Wykorzystanie algorytmów mrówkowych w dynamicznym problem

Wybrane podstawowe rodzaje algorytmów

Algorytmy metaheurystyczne Wykład 6. Piotr Syga

1 Metody rozwiązywania równań nieliniowych. Postawienie problemu

Metody iteracyjne rozwiązywania układów równań liniowych (5.3) Normy wektorów i macierzy (5.3.1) Niech. x i. i =1

Matematyka dyskretna - 6.Grafy

Konspekt. 15 października Wykład III (16 października 2014 r.): optymalizacja kombinatoryczna na grafach (metody sieciowe)

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

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

Elementy teorii informacji i kodowania

Szukanie najkrótszych dróg z jednym ródłem

Równoległy algorytm wyznaczania bloków dla cyklicznego problemu przepływowego z przezbrojeniami

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

Programowanie dynamiczne i algorytmy zachłanne

TEORIA GRAFÓW I SIECI

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

9. Schematy aproksymacyjne

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

Planowanie drogi robota, algorytm A*

Transkrypt:

Algorytmiczna teoria grafów

Sieć przepływowa Siecią przepływową S = (V, E, c) nazywamy graf zorientowany G = (V,E), w którym każdy łuk (u, v) E ma określoną przepustowość c(u, v) 0. Wyróżniamy dwa wierzchołki: źródło s oraz ujście t, s t.

Sieć przepływowa Siecią przepływową S = (V, E, c) nazywamy graf zorientowany G = (V,E), w którym każdy łuk (u, v) E ma określoną przepustowość c(u, v) 0. Wyróżniamy dwa wierzchołki: źródło s oraz ujście t, s t. przesyłanie różnego rodzaju towarów (materiałów, informacji, środków) przepływ cieczy, prądu, danych w sieci itp.

Przepływ Przepływem w sieci S = (V,E, c) nazywamy funkcję f : E R taką, że 0 f(u, v) c(u, v) dla kaźdego (u, v) E, z V f(v, z) u V f(u, v) = 0 dla każdego v V\{s, t}. Przykład

Przepływ Przepływem w sieci S = (V,E, c) nazywamy funkcję f : E R taką, że 0 f(u, v) c(u, v) dla kaźdego (u, v) E, z V f(v, z) u V f(u, v) = 0 dla każdego v V\{s, t}. Wartość przepływu Wartością przepływu f w sieci S = (V, E, c) ze źródłem s oraz ujściem t nazywamy wielkość: f = z V f(s, z) u V f(u, s). Przykład

maksymalny przepływ (wąskie gardło sieci) najtańszy przepływ

Problem maksymalnego przepływu Pojęcie przekroju Niech X V będzie podzbiorem wierzchołków sieci S = (V, E, c) takim, że s X oraz t X. Przekrojem (X, V\X) w sieci S = (V, E, c) oddzielającym źródło s od ujścia t nazywamy zbiór łuków (u, v) E, takich że u X oraz v V\X. Przepustowością przekroju (X, V\X), to wielkość Przykład c(x, V\X) = (u,v) (X,V\X) c(u, v).

Przekrój minimalny Przekrojem minimalnym nz przekrój, który ma najmniejszą przepustowość spośród wszystkich przekrojów pomiędzy źródłem s i ujściem t.

Przekrój minimalny Przekrojem minimalnym nz przekrój, który ma najmniejszą przepustowość spośród wszystkich przekrojów pomiędzy źródłem s i ujściem t. Twierdzenie Wartość dowolnego przepływu f w sieci S = (V, E, c) nie jest większa niż przepustowość dowolnego przekroju (X, V\X) pomiędzy źródłem s i ujściem t f c(x, V\X). Dowód

Twierdzenie Forda-Fulkersona Wartość maksymalnego przepływu w sieci S = (V, E, c) jest równa przepustowości minimalnego przekroju pomiędzy źródłem s i ujściem t.

Twierdzenie Forda-Fulkersona Wartość maksymalnego przepływu w sieci S = (V, E, c) jest równa przepustowości minimalnego przekroju pomiędzy źródłem s i ujściem t. Dowód... schemat Forda-Fulkersona...

Ścieżki powiększające Dla sieci S = (V, E, c) i ustalonego przepływu f definiujemy sieć pomocniczą S f = (V,E f, c f ), w której:

Ścieżki powiększające Dla sieci S = (V, E, c) i ustalonego przepływu f definiujemy sieć pomocniczą S f = (V,E f, c f ), w której: jeżeli (u, v) E i f(u, v) < c(u, v), to (u, v) E f i c f (u, v) = c(u, v) f(u, v) [łuki zgodne z przepływem: E + ]

Ścieżki powiększające Dla sieci S = (V, E, c) i ustalonego przepływu f definiujemy sieć pomocniczą S f = (V,E f, c f ), w której: jeżeli (u, v) E i f(u, v) < c(u, v), to (u, v) E f i c f (u, v) = c(u, v) f(u, v) [łuki zgodne z przepływem: E + ] jeżeli (u, v) E i f(u, v) > 0, to (v, u) E f i c f (v, u) = f(u, v) [łuki przeciwne: E ]

Ścieżki powiększające Dla sieci S = (V, E, c) i ustalonego przepływu f definiujemy sieć pomocniczą S f = (V,E f, c f ), w której: jeżeli (u, v) E i f(u, v) < c(u, v), to (u, v) E f i c f (u, v) = c(u, v) f(u, v) [łuki zgodne z przepływem: E + ] jeżeli (u, v) E i f(u, v) > 0, to (v, u) E f i c f (v, u) = f(u, v) [łuki przeciwne: E ] Po znalezieniu w sieci S f ścieżki powiększającej P można zwiększyć przepływ w sieci S o wielkość: δ = min{c f (u, v) : (u, v) E + (P) E (P)}.

Ścieżki powiększające Dla sieci S = (V, E, c) i ustalonego przepływu f definiujemy sieć pomocniczą S f = (V,E f, c f ), w której: jeżeli (u, v) E i f(u, v) < c(u, v), to (u, v) E f i c f (u, v) = c(u, v) f(u, v) [łuki zgodne z przepływem: E + ] jeżeli (u, v) E i f(u, v) > 0, to (v, u) E f i c f (v, u) = f(u, v) [łuki przeciwne: E ] Po znalezieniu w sieci S f ścieżki powiększającej P można zwiększyć przepływ w sieci S o wielkość: δ = min{c f (u, v) : (u, v) E + (P) E (P)}. Nowy przepływ f : f(u, v)+δ gdy (u, v) E + (P) f (u, v) = f(u, v) δ gdy (v, u) E (P) f(u, v) dla pozostałych łuków

Algorytm Forda-Fulkersona Wyznaczanie maksymalnego przepływu w sieci S = (V, E, c) begin for (u, v) E do f(u, v) := 0; while w sieci S f istnieje ścieżka powiększająca P z s do t do zmodyfikuj przepływ f zgodnie ze wzorem na f end while end {f jest szukanym maksymalnym przepływem}

Algorytm Forda-Fulkersona Wyznaczanie maksymalnego przepływu w sieci S = (V, E, c) begin for (u, v) E do f(u, v) := 0; while w sieci S f istnieje ścieżka powiększająca P z s do t do zmodyfikuj przepływ f zgodnie ze wzorem na f end while end {f jest szukanym maksymalnym przepływem} Przykłady

Uwaga: konstrukcja algorytmu musi gwarantować, że procedura nie zakończy się zbyt wcześnie, tzn. wtedy, kiedy nie można wskazać ścieżki powiększającej, a nie mamy jeszcze przelewu maksymalnego.

Uwaga: konstrukcja algorytmu musi gwarantować, że procedura nie zakończy się zbyt wcześnie, tzn. wtedy, kiedy nie można wskazać ścieżki powiększającej, a nie mamy jeszcze przelewu maksymalnego. Niezbędny jest systematyczny sposób generowania ścieżek powiększających - metoda cechowania wierzchołków.

Uwaga: konstrukcja algorytmu musi gwarantować, że procedura nie zakończy się zbyt wcześnie, tzn. wtedy, kiedy nie można wskazać ścieżki powiększającej, a nie mamy jeszcze przelewu maksymalnego. Niezbędny jest systematyczny sposób generowania ścieżek powiększających - metoda cechowania wierzchołków. wierzchołek j - cechy postaci (i +, f j ) lub (i, f j ) i - numer wierzchołka poprzedzającego w ścieżce powiększającej f j - wielkość przepływu do wierzchołka j + - poruszamy się zgodnie z orientacją łuku - poruszamy się w kierunku przeciwnym

Uwaga: konstrukcja algorytmu musi gwarantować, że procedura nie zakończy się zbyt wcześnie, tzn. wtedy, kiedy nie można wskazać ścieżki powiększającej, a nie mamy jeszcze przelewu maksymalnego. Niezbędny jest systematyczny sposób generowania ścieżek powiększających - metoda cechowania wierzchołków. wierzchołek j - cechy postaci (i +, f j ) lub (i, f j ) i - numer wierzchołka poprzedzającego w ścieżce powiększającej f j - wielkość przepływu do wierzchołka j + - poruszamy się zgodnie z orientacją łuku - poruszamy się w kierunku przeciwnym (i +, f j ): min (i,j) E {c f (i, j), v i } (i, f j ): min (j,i) E {c f (j, i), v i }

Algorytm FF Edmondsa-Karpa 1 Krok początkowy

Algorytm FF Edmondsa-Karpa 1 Krok początkowy przepływ zerowy dla każdego łuku

Algorytm FF Edmondsa-Karpa 1 Krok początkowy przepływ zerowy dla każdego łuku inicjalizacja kolejki L

Algorytm FF Edmondsa-Karpa 1 Krok początkowy przepływ zerowy dla każdego łuku inicjalizacja kolejki L ocechowanie wierzchołka s: (, )

Algorytm FF Edmondsa-Karpa 1 Krok początkowy przepływ zerowy dla każdego łuku inicjalizacja kolejki L ocechowanie wierzchołka s: (, ) 2 Cechowanie wierzchołków L s L = idź do punktu 4 L i - wierzchołek pobrany z L Cechujemy wierzchołki osiągalne z i - po łuku nienasyconym z E + : cecha (i +, v j ); po łuku z E : cecha (i, v j ). L j t L Idź do kroku 3, w przeciwnym przypadku wykonaj punkt 2.

Algorytm FF Edmondsa-Karpa cd. 3 Powiększ przepływ o wartość v t - startując z t i korzystając z cech wierzchołków; usuń cechy wierzchołkom za wyjątkiem s i idź do kroku 2.

Algorytm FF Edmondsa-Karpa cd. 3 Powiększ przepływ o wartość v t - startując z t i korzystając z cech wierzchołków; usuń cechy wierzchołkom za wyjątkiem s i idź do kroku 2. 4 Otrzymany przepływ jest maksymalny. Przekrój minimalny: X - wierzchołki ocechowane w kroku 3, V\X