Next: Maksymalny przepływ a dualność
Up: Metody sieciowe
Previous: Sieci
  Spis rzeczy
  Indeks
W sieci
może być wyróżniony pewien wierzchołek
, nazywany źródłem
i inny
wierzchołek, powiedzmy
, który nazywać będziemy odpływem.
Niech
będzie siecią o źródla
i odpływie
oraz nieujemnej funkcji przepustowości
. O nieujemnej funkcji
mówimy, że jest
przepływem z
do
w
jeżeli spełnia następujące
warunki:
(8.2) |
 |
(8.3) |
 |
Liczbę
nazywamy wartością przepływu
.
Przykład 8.2
Niech

będzie siecią jak na rysunku 8.3. Liczby wypisane obok łuków w kwadracikach
oznaczają przepustowości łuków, a te bez kwadracików przepływy. Jest bardzo łatwym
sprawdzenie, że na rysunku poprawnie zdefiniowany jest przepływ (spełnia warunki
(
![[*]](file:/usr/local/lib/latex2html/icons/crossref.gif)
) i (
![[*]](file:/usr/local/lib/latex2html/icons/crossref.gif)
)), a wartoć tego przepływu wynosi

.
Rys. 8.3
Problem optymalizacyjny narzuca się teraz sam.
Problem maksymalnego przepływu.
Dla danej sieci
o źródle
i odpływie
znaleźć przepływ
o maksymalnej wartości.
W dalszym ciągu będzie nam wygodnie będzie nam przyjąć zamiast
,
i istnienie wszystkich możliwych łuków w sieci. Interpretacja takiej umowy jest oczywista: nie ma przepływu (a raczej jest przepływ zerowy) na nieistniejących łukach8.6.
Wtedy warunki (
) i (
) można zapisać, odpowiednio,
(8.4) |
 |
(8.5) |
 |
a wzór na wartość przepływu
(8.6) |
 |
Zauważmy, że przepływ w przykładzie
nie jest maksymalny. Zwiększając przepływ na łukach:
i
o
otrzymamy przepływ (warunki (
) i (
) są dalej spełnione)
i wartość tego
przepływu wynosi
. Okaże się, że ten prosty pomysł znajdowania ścieżki prowadzącej
z
do
wzdłóż której można zwiększyć przepływ na poszczególnych łukach
o stałą wartość, jest kluczową ideą prowadzącą do rozwiązania problemu maksymalnego
przepływu w sieciach.
Jest najzupełniej oczywiste, że problem maksymalnego przepływu jest
problemem programowania
liniowego. Wierzchołki sieci nazwiemy
, z
, a przepływ
na łuku
oznaczymy przez
(zamiast
a
przepustowość łuku
przez
. Nasz problem maksymalnego przepływu jest PPL:
(8.7) |
 |
Zauważmy, że jeśli zbiór wierzchołków sieci jest skończony (a tylko takie sieci
tu rozważamy) a przepustowości łuków są liczbami skończonymi, to problem
(
) jest ograniczony, posiada więc rozwiązanie optymalne.
Z powyższego oraz twierdzenia
wynika następujący wniosek.
Wniosek 8.2
Jeśli funkcja przepustowości łuków przyjmuje wartości całkowite, to problem
maksymalnego przepływu w tej sieci ma całkowite rozwiązanie optymalne.
Ważnym pojęciem dla problemu maksymalnego przepływu są przekrój i jego wartość.
Niech będzie dana sieć
ze źródłem
i odpływem
i niech
będzie
takim podzbiorem
, że
i
. Zbiór
oznaczmy przeż
.
Zbiór łuków
nazywamy przekrojem rozdzielającym
od
lub krótko przekrojem. Liczbę
nazywamy przepustowością przekroju
.
Twierdzenie 8.3
Niech

będzie siecią o źródle

i odpływie

. Dla dowolnego przepływu

i dla dowolnego przekroju

zachodzi nierówność
Dowód. Sumując odpowiednio wzory (
) i (
) po wszystkich
i pamiętając, że
, otrzymamy
Zauważmy, że
,
a wobec tego
(8.8) |
 |
Wartości
są nieujemne, uwzględniając więc nierówności (
)
otrzymujemy
(8.9) |
 |
co kończy dowód.
Uwaga 8.1
Jeżeli uda nam się znaleźć przepływ

i przekrój

takie, że
to na mocy twierdzenia

jest przepływem maksymalnym (a przekrój

ma minimalną przepustowość).
Niejako po drodze w dowodzie twierdzenia
otrzymaliśmy ważną
równość (
) którą teraz zapiszemy nieco inaczej.
Uwaga 8.2
Dla każdego przepływu

i przekroju

zachodzi wzór
(8.10) |
 |
Wniosek
oznacza, że w przyrodzie nic nie ginie, to co
wypłynęło ze źródła wpływa do odpływu!
Dowód wniosku
.
Wystarczy zastosować wzór (
) do
.
Twierdzenie
da nam możliwość udowodnienia twierdzenia o
maksymalnym przepływie i minimalnym przekroju, odkrytego niezależnie przez Forda i
Fulkersona [8] oraz Eliasa, Feinsteina i Shannona [7].
Twierdzenie 8.5 (Max flow min cut theorem)
Maksymalna wartość
przepływu
ze źródła

do odpływu

w sieci jest równa wartości minimalnego przekroju
rozdzielającego

od

:
Dowód twierdzenia
polega de facto na wskazaniu algorytmu
pozwalającego znależć maksymalny przepływ w sieci, tzw.
algorytm ścieżki powiększającej
Forda-Fulkersona (p. [9]). Formalnie algorytm ten zostanie przedstawiony później.
Niech
będzie przepływem maksymalnym w sieci
ze źródła
do
odpływu
. Utwórzmy rekurencjnie zbiór
w następujący sposób:
- jeśli
to
- jeśli
i
to
.
Kluczową ideą dowodu jest obserwacja, że dla każdego wierzchołka
istnieje ścieżka
taka, że
i dla każdego
zachodzi albo
(8.11) |
 |
albo
(8.12) |
 |
Inaczej mówiąc: wartość przepływu jest mniejsza od przepustowości na wszystkich łukach zgodnych i dodatnia na niezgodnych łukach ścieżki
.
Gdyby
należało do
, to istniałaby ścieżka
z
do
(tj. taka, że
i
) spełniająca warunki (
)-(
). Niech
oraz
Jest oczywistym, że
, i że dodając
do funkcji przepływu na łukach ścieżki
zgodnych i odejmując
na łukach ścieżki
niezgodnych, inaczej mówiąc: definiując funkcję
otrzymalibyśmy nową funkcję przepływu której wartość wynosiłaby
co byłoby sprzeczne z maksymalnościa przepływu
.
Stąd wynika, że
nie jest elementem zbioru
i zbiór
ma następujące własności:
- jeśli
to
- jeśli
to
Wobec (1) i (2)
jest przekrojem rozdzielającym
i
.
Łuki spełniające (3) nazywają sie nasyconymi
, a takie które spełniają (4)
wyschniętymi.
Wobec (3) i (4) mamy
co wobec twierdzenia
dowodzi, że
jest przekrojem o przepustowości minimalnej.
Next: Maksymalny przepływ a dualność
Up: Metody sieciowe
Previous: Sieci
  Spis rzeczy
  Indeks