• Nie Znaleziono Wyników

Algorytmiczna teoria grafów Przepływy w sieciach

N/A
N/A
Protected

Academic year: 2021

Share "Algorytmiczna teoria grafów Przepływy w sieciach"

Copied!
29
0
0

Pełen tekst

(1)

Algorytmiczna teoria grafów Przepływy w sieciach

hanna.furmanczyk@inf.ug.edu.pl

(2)

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 6= t.

hanna.furmanczyk@inf.ug.edu.pl Przepływy w sieciach

(3)

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 6= t.

przesyłanie różnego rodzaju towarów (materiałów, informacji, środków)

przepływ cieczy, prądu, danych w sieci itp.

(4)

Przepływ

Przepływemw 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 , P

z∈V f(v , z) −P

u∈V f(u, v ) = 0 dla każdego v ∈ V \{s, t}.

Przykład

hanna.furmanczyk@inf.ug.edu.pl Przepływy w sieciach

(5)

Przepływ

Przepływemw 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 , P

z∈V f(v , z) −P

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 | =X

z∈V

f(s, z) −X

u∈V

f(u, s).

Przykład

(6)

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

hanna.furmanczyk@inf.ug.edu.pl Przepływy w sieciach

(7)

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 6∈ 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ść

c(X , V \X ) = X

(u,v)∈(X,V\X )

c(u, v ).

Przykład

(8)

Przekrój minimalny

Przekrojem minimalnymnz przekrój, który ma najmniejszą

przepustowość spośród wszystkich przekrojów pomiędzy źródłem s i ujściem t.

hanna.furmanczyk@inf.ug.edu.pl Przepływy w sieciach

(9)

Przekrój minimalny

Przekrojem minimalnymnz 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

(10)

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.

hanna.furmanczyk@inf.ug.edu.pl Przepływy w sieciach

(11)

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 ...

(12)

Ścieżki powiększające

Dla sieci S = (V , E , c) i ustalonego przepływu f definiujemy sieć pomocniczą Sf = (V , Ef,cf), w której:

hanna.furmanczyk@inf.ug.edu.pl Przepływy w sieciach

(13)

Ścieżki powiększające

Dla sieci S = (V , E , c) i ustalonego przepływu f definiujemy sieć pomocniczą Sf = (V , Ef,cf), w której:

jeżeli (u, v ) ∈ E i f (u, v ) < c(u, v ), to (u, v ) ∈ Ef i

cf(u, v ) = c(u, v ) − f (u, v ) [łuki zgodne z przepływem: E+]

(14)

Ścieżki powiększające

Dla sieci S = (V , E , c) i ustalonego przepływu f definiujemy sieć pomocniczą Sf = (V , Ef,cf), w której:

jeżeli (u, v ) ∈ E i f (u, v ) < c(u, v ), to (u, v ) ∈ Ef i

cf(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) ∈ Ef i

cf(v , u) = f (u, v ) [łuki przeciwne: E]

hanna.furmanczyk@inf.ug.edu.pl Przepływy w sieciach

(15)

Ścieżki powiększające

Dla sieci S = (V , E , c) i ustalonego przepływu f definiujemy sieć pomocniczą Sf = (V , Ef,cf), w której:

jeżeli (u, v ) ∈ E i f (u, v ) < c(u, v ), to (u, v ) ∈ Ef i

cf(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) ∈ Ef i

cf(v , u) = f (u, v ) [łuki przeciwne: E]

Po znalezieniu w sieci Sf ścieżki powiększającej P można zwiększyć przepływ w sieci S o wielkość:

δ= min{cf(u, v ) : (u, v ) ∈ E+(P) ∪ E(P)}.

(16)

Ścieżki powiększające

Dla sieci S = (V , E , c) i ustalonego przepływu f definiujemy sieć pomocniczą Sf = (V , Ef,cf), w której:

jeżeli (u, v ) ∈ E i f (u, v ) < c(u, v ), to (u, v ) ∈ Ef i

cf(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) ∈ Ef i

cf(v , u) = f (u, v ) [łuki przeciwne: E]

Po znalezieniu w sieci Sf ścieżki powiększającej P można zwiększyć przepływ w sieci S o wielkość:

δ= min{cf(u, v ) : (u, v ) ∈ E+(P) ∪ E(P)}.

Nowy przepływ f:

f(u, v ) =

f(u, v ) + δ gdy (u, v ) ∈ E+(P) f(u, v ) − δ gdy (v , u) ∈ E(P) f(u, v ) dla pozostałych łuków

hanna.furmanczyk@inf.ug.edu.pl Przepływy w sieciach

(17)

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 Sf 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}

(18)

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 Sf 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

hanna.furmanczyk@inf.ug.edu.pl Przepływy w sieciach

(19)

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.

(20)

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.

hanna.furmanczyk@inf.ug.edu.pl Przepływy w sieciach

(21)

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+,fj) lub (i,fj)

i - numer wierzchołka poprzedzającego w ścieżce powiększającej fj - wielkość przepływu do wierzchołka j

+ - poruszamy się zgodnie z orientacją łuku

− - poruszamy się w kierunku przeciwnym

(22)

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+,fj) lub (i,fj)

i - numer wierzchołka poprzedzającego w ścieżce powiększającej fj - wielkość przepływu do wierzchołka j

+ - poruszamy się zgodnie z orientacją łuku

− - poruszamy się w kierunku przeciwnym (i+,fj): min(i,j)∈E{cf(i, j), vi}

(i,fj): min(j,i)∈E{cf(j, i), vi}

hanna.furmanczyk@inf.ug.edu.pl Przepływy w sieciach

(23)

Algorytm FF Edmondsa-Karpa

1 Krok początkowy

(24)

Algorytm FF Edmondsa-Karpa

1 Krok początkowy

przepływ zerowy dla każdego łuku

hanna.furmanczyk@inf.ug.edu.pl Przepływy w sieciach

(25)

Algorytm FF Edmondsa-Karpa

1 Krok początkowy

przepływ zerowy dla każdego łuku inicjalizacja kolejki L

(26)

Algorytm FF Edmondsa-Karpa

1 Krok początkowy

przepływ zerowy dla każdego łuku inicjalizacja kolejki L

ocechowanie wierzchołka s: (−, ∞)

hanna.furmanczyk@inf.ug.edu.pl Przepływy w sieciach

(27)

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

L6= ∅ i - wierzchołek pobrany z L

Cechujemy wierzchołki osiągalne z i - po łuku nienasyconym z E+: cecha(i+, vj); po łuku z E: cecha(i, vj). L ← j t ∈ L Idź do kroku 3, w przeciwnym przypadku wykonaj punkt 2.

(28)

Algorytm FF Edmondsa-Karpa cd.

3 Powiększ przepływ o wartość vt - 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.

hanna.furmanczyk@inf.ug.edu.pl Przepływy w sieciach

(29)

Algorytm FF Edmondsa-Karpa cd.

3 Powiększ przepływ o wartość vt - 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

Cytaty

Powiązane dokumenty

Po nad to AAP i Me di - cal Tri bu ne Pol ska nie po pie ra ją sto so wa nia ani nie rę - czą (bez po śred nio lub po śred nio) za ja kość ani sku tecz ność ja kich kol wiek

Chorzy, którzy byli leczeni początkowo tylko chemioterapią, żyli średnio kilkanaście miesięcy, a chorzy, u których zastosowano pembrolizumab w pierwszej linii leczenia,

Tak więc mogę mieć tylko jedną własność, kiedy mnie boli, ponieważ ból jest identyczny z pobudzeniem włókien nerwowych C, jednak zgodnie z opisem pojęcia bólu i

Zbierał wszystkie pomiary z poszczególnych studni dotyczące zwierciadeł, przepływów i analizował zmiany, analizował pobory i dawał wytyczne, jak pracować w

Dwa grafy są homeomorficzne jeśli mogą być otrzymane z tego samego grafu poprzez umieszczenie nowych wierzchołków stopnia dwa na jego krawędziach (krawędź zastępowana

Problemy pojawić się mogą natomiast wtedy, kiedy słowo „nie” jest traktowane, jako przedrostek do rzeczownika, a nie zaprzeczenie czasownika, wtedy takie słowa (wyjątki)

człowieka, ale równocześnie jest walką przeciw potrafiącym zaślepić afektom. „Phronesis nie jest zatem niczym samo przez się zrozumiałym, lecz zadaniem, które musi być

Część lewa jest spójna, gdyż zakładamy że czekolada zawiera lewy oraz prawy brzeg, który zawsze należy do części lewej bądź prawej odpowiednio (część lewa bądź prawa