Sieci przepływowe

Siecią przepływowąsieć przepływowaSiecią przepływową nazywamy taki graf spójnygraf spójnygraf spójny skierowany, którego każda krawędź przypisaną ma daną przepustowośćprzepustowośćprzepustowość, dzięki czemu między krawędziami może odbywać się – zgodny z kierunkiem krawędzi – przepływ.

Przeanalizujmy graf spójny skierowany.

Dany jest grafgrafgraf spójny skierowany , który składa się ze zbioru wierzchołków  oraz ze zbioru krawędzi skierowanych .

Każdej krawędzi przypisana jest pewna wartość – to przepustowość krawędzi. Przepustowość to maksymalna ilość pewnego czynnika, który przepływa przez sieć. Wartość przepustowości możemy opisać następująco:

Dodatkowo oznaczmy dwa wierzchołki grafu: wierzchołek  (oznaczony na ilustracji S) będzie źródłemźródłoźródłem, a wierzchołek  (oznaczony na ilustracji T) – ujściemujścieujściem.

Źródłem nazywamy wierzchołek, z którego wychodzą przepływy, natomiast ujściem nazywamy wierzchołek, do którego prowadzą przepływy.

RTw43lwoq8a8m
Przykładowy graf będący siecią przepływową. Jego wierzchołek jest źródłem (czyli wychodzą z niego przepływy), natomiast wierzchołek – ujściem (czyli wchodzą do niego przepływy). Wszystkim krawędziom przypisano wartości, które oznaczają przepustowość, czyli ilość czynnika, który może przez daną krawędź przepływać.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
Polecenie 1

Zastanów się, czy już teraz możesz odnaleźć w życiu codziennym przykład problemu, który może stanowić zobrazowanie działania sieci przepływowych.

Przykładami sieci przepływowych są np. przepływ gazu, wody czy też  ruch drogowy. Przepływ danej krawędzi skierowanej to pewna wartość, jaką przypisujemy każdej krawędzi sieci. Wartość ta może być ujemna, jak i dodatnia.

Formalnie powiemy, że funkcję rzeczywistą F:V×V pary wierzchołków sieci nazywamy przepływem, jeśli spełnia ona trzy wymienione niżej warunki.

Ważne!

Funkcja F:V×V przyporządkowuje każdej parze wierzchołków vw pewną wartość rzeczywistą.

Warunek przepustowości
Reguła: Warunek przepustowości

Dla każdej krawędzi  przepływ jest nie większy niż przepustowość tej samej krawędzi:

Oznacza to, że przepustowość danej krawędzi to maksymalna ilość czynnika, zatem przez daną krawędź może przepływać go mniej, ale nie może więcej, więc przepływ nie może przekroczyć przepustowości. Zatem przepustowość krawędzi wynosi 9.

Warunek skośnej symetrii
Reguła: Warunek skośnej symetrii

Dla każdej krawędzi przepływ w odwrotnym kierunku ma znak przeciwny, czyli zachodzi równość:

Oznacza to, że przepływ w odwrotnym kierunku jest ujemny. Jeśli więc przepływ krawędzi wynosiłby 9, przepływ wynosiłby -9.

Warunek zachowania przepływu
Reguła: Warunek zachowania przepływu

Dla wszystkich wierzchołków  (czyli z wyjątkiem źródła i ujścia) suma przepływów , gdzie , wynosi , czyli suma wszystkich przepływów wpływających do wierzchołka jest równa sumie przepływów wypływających z wierzchołka.

Ważne!

Jeśli pomiędzy pewnymi wierzchołkami nie istnieje krawędź, to domyślnie przepływ równy jest .

Przepływ sieci  to suma wszystkich przepływów nettoprzepływ nettoprzepływów netto ze źródła  do wszystkich innych wierzchołków sieci.

By lepiej zrozumieć to zagadnienie, przyjrzyjmy się uzupełnionej ilustracji umieszczonej w dalszej części e‑materiału.

Przypuśćmy, że w pewnej sieci każda krawędź  ma przepustowość oraz przypisano jej przepływ . Na ilustracjach sieci przepływowej przepustowość i przepływ krawędzi oznaczmy, pisząc obok dwie liczby oddzielone ukośnikiem. Liczba na lewo od ukośnika oznacza przepływ krawędzi, a na prawo – przepustowość krawędzi.

Suma przepływów wychodzących ze źródła wynosi 16 (13 do wierzchołka D oraz 3 do wierzchołka B).

RqoNjCibNOo3v
W pewnej sieci każda krawędź  ma przepustowość oraz przypisano jej przepływ . Na ilustracjach sieci przepływowej przepustowość i przepływ krawędzi oznaczmy, pisząc obok dwie liczby oddzielone ukośnikiem. Liczba na lewo od ukośnika oznacza przepływ krawędzi, a na prawo --- przepustowość krawędzi.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

warunku skośnej symetriiwarunek skośnej symetriiwarunku skośnej symetrii możemy wywnioskować, że przypływ wychodzący ze źródła  jest równy przepływowi docierającemu do ujścia .

Możemy to sprawdzić – rzeczywiście suma przepływów wchodzących do ujścia wynosi 16 (8 z wierzchołka C oraz 8 z wierzchołka A).

Głównym problemem spotykanym przy zagadnieniu sieci przepływowej jest problem maksymalnego przepływu. Zadanie polega na wyznaczeniu maksymalnego przepływu sieci ze źródła do ujścia, biorąc pod uwagę ograniczenia związane z przepustowością każdej krawędzi. Dla ułatwienia możemy sobie wyobrazić krawędzie jako rury tworzące sieć połączeń wodociągowych ze źródła do ujścia. Problem maksymalnego przepływu polegałby tu na obliczeniu, ile wody można maksymalnie przepuścić ze źródła do ujścia. To, ile wody może przepłynąć przez każdą rurę, ogranicza jej przepustowość.

Algorytm Forda‑Fulkersona pomaga rozwiązać problem maksymalnego przepływu. Polega on na wyznaczeniu sieci rezydualnych oraz ścieżek rozszerzających.

Siecią rezydualnąsieć rezydualnaSiecią rezydualną nazywamy graf, który jest tworzony na podstawie pierwotnej sieci przepływowej i aktualnego przepływu. Krawędzie w sieci rezydualnej reprezentują przepustowość rezydualną, czyli maksymalną ilość dodatkowych danych, które mogą przepłynąć daną krawędzią w danej chwili.

Ścieżkami rozszerzającymi nazywamy ścieżki w sieci rezydualnej, które umożliwiają dodanie dodatkowego przepływu do istniejącego przepływu w sieci przepływowej.

Wróćmy do zaprezentowanej wcześniej ilustracji:

RM2Li1Pwgnc2Q
W pewnej sieci każda krawędź  ma przepustowość oraz przypisano jej przepływ . Na ilustracjach sieci przepływowej przepustowość i przepływ krawędzi oznaczmy, pisząc obok dwie liczby oddzielone ukośnikiem. Liczba na lewo od ukośnika oznacza przepływ krawędzi, a na prawo --- przepustowość krawędzi.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Przepustowość rezydualną krawędzi  definiujemy jako różnicę przepustowości oraz przepływu krawędzi.

Podstawmy konkretne wartości:

cf(B, A) = c(B, A) - f(B, A) = 9 - 8 = 1

Zatem dla krawędzi , której przepływ to 8, a przepustowość to 9, przepustowość rezydualna wynosi 9 - 8, czyli 1. Jest to zapasowy przepust krawędzi.

Może występować przepływ w przeciwnym do krawędzi kierunku (ujemny).

Kierunek, w którym obliczamy przepustowość rezydualną, jest dowolny. Można obliczyć przepustowość rezydualną , choć nie istnieje w sieci krawędź zwrotna . Jeśli nie istnieje krawędź , to przepustowość jest równa . Oznacza to, że przepustowość rezydualna jest równa aktualnemu przepływowi krawędzi .

Również podstawmy konkretne wartości:

cf(A, B) = c(A, B) - f(A, B) = - f(A, B)  = f(B, A) = 8

Dla kierunku przeciwnego przepust rezydualny jest równy samej wartości przepływu, czyli 8.

Przepustowość rezydualna wyznaczona w kierunku zgodnym z krawędzią jest zapasowym przepustem krawędzi, przez którą można jeszcze prowadzić przepływ. Natomiast przepustowość rezydualna wyznaczona w kierunku przeciwnym jest aktualną wartością przepływu krawędzi.

Na podstawie obliczonych przepustowości rezydualnych wyznaczamy sieć rezydualną. Jest to taka sieć, która przejmuje wierzchołki pierwotnej sieci przepływowej oraz tylko te krawędzie, których przepustowość rezydualna jest różna od zera. W sieci przepływowej każdej krawędzi pierwotnej odpowiadają dwie krawędzie skierowane w przeciwne strony.

1

Krawędzie sieci rezydualnej o kierunku zgodnym z pierwotną krawędzią oznaczają przepustowość rezydualną, czyli zapas przepływu. Krawędzie o zerowej przepustowości rezydualnej są zbędne w sieci rezydualnej, ponieważ nie pomieszczą więcej przepływu. Z tego powodu, jeśli przepustowość rezydualna jest równa 0, to takiej krawędzi nie rysujemy.

Krawędź w sieci rezydualnej przeciwna do kierunku pierwotnej krawędzi oznacza przepływ. Jeśli przepływ pewnej krawędzi jest zerowy, to krawędź także jest ignorowana.

Przyjrzyjmy się ilustracjom. Krawędź to zapas przepływu danej sieci, natomiast krawędź – aktualny przepływ.

Przy tworzeniu sieci rezydualnej będziemy szukać ścieżek ze źródła  do ujścia  we wszystkich możliwych parach wierzchołków. Każdą taką ścieżkę w grafie rezydualnym z wierzchołka  do wierzchołka  nazywamy ścieżką rozszerzającąścieżki rozszerzająceścieżką rozszerzającą, o ile nie zawiera cykli i jeśli każda krawędź ma dodatnią przepustowość rezydualną.

Problem niezawodności sieci

Przypuśćmy, że projektujemy sieć. Będzie się składała z routerów połączonych ze sobą kanałami komunikacyjnymi. Znając teorię grafów, możemy skorzystać z reprezentacji grafowej, która pozwoli nam dokładniej przeanalizować sprawność sieci. Routery przedstawimy jako wierzchołki, natomiast kanały będą reprezentowane przez krawędzie łączące routery.

R1ZNnaPGXMYH8
Projekt sieci przedstawiony z wykorzystaniem grafu. Routery to wierzchołki, a połączenia między nimi to krawędzie.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Chcemy uniknąć awarii całej sieci w sytuacji, gdyby niektóre połączenia zostały przerwane. W tym celu należy zapewnić bezpośrednie lub pośrednie połączenie między dwoma routerami. Dla grafu reprezentującego sieć routerów zdefiniujmy pojęcie spójności krawędziowej grafu.

Powiemy, że graf jest -spójny krawędziowok‑spójność krawędziowa-spójny krawędziowo, jeśli pozostanie spójny nawet wtedy, gdy zostanie usuniętych mniej niż dowolnych krawędzi. Wtedy spójność krawędziowa tego grafu jest największą liczbą krawędzi, po usunięciu których graf na pewno pozostanie spójny. W grafie może istnieć zbiór większej niż  liczby krawędzi.

Usterka jednego kanału

RKNgVCgiaRIXN
Projekt sieci przedstawiony z wykorzystaniem grafu. Routery to wierzchołki, a połączenia między nimi to krawędzie.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Awaria sieci

R3lUgb267DLL6
Ilustracja przedstawia, że już po usunięciu dwóch krawędzi następuje przerwanie połączenia w sieci. Stopień spójności dla tego grafu wynosi 2 (k = 2).
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Połączenie dwóch routerów kanałem jest obarczone pewnym kosztem. Dla uproszczenia przyjmiemy, że utworzenie każdego połączenia kosztuje tyle samo. Chcemy przy możliwie najmniejszym koszcie stworzyć sieć, która spełnia minimalną niezawodnośćminimalna niezawodnośćminimalną niezawodność. Innymi słowy, chcemy utworzyć graf o spójności krawędziowej  przy najmniejszej możliwej liczbie krawędzi. O ile określenie algorytmu, którego zadaniem byłoby zaprojektowanie takiej sieci, jest skomplikowanym zadaniem, o tyle możemy zbadać niezawodność już zaprojektowanej sieci.

RaDlGYfGgJQUw1
Graf nieskierowany oraz ten sam graf po przekształceniu do grafu skierowanego, którego każda krawędź nieskierowana została przekształcona w dwie przeciwnie skierowane krawędzie o przepustowościach równych 1.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
Ważne!

Wierzchołki grafów możemy oznaczać małymi albo wielkimi literami, a także cyframi.

Algorytm wyznaczania niezawodności sieci bada spójność krawędziową grafu. Na początku każdą nieskierowaną krawędź grafu zamienia się na dwie przeciwnie skierowane krawędzie o przepustowości równej 1. Algorytm wyznacza maksymalny przepływ między każdą parą wierzchołków  i . Graf jest -spójny krawędziowo, jeśli maksymalny przepływ między każdą parą wierzchołków jest nie mniejszy niż . Wtedy spójność krawędziowa grafu jest najmniejszym wyznaczonym przepływem.

Słownik

graf
graf

struktura składająca się z niepustego zbioru wierzchołków oraz ze zbioru krawędzi; dla grafu  zbiór wierzchołków oznaczamy (ang. verticies – wierzchołki), a zbiór krawędzi – (ang. edges – krawędzie); liczbę elementów zbioru  oznaczamy literą , zaś liczbę elementów zbioru  literą 

graf spójny
graf spójny

graf, w którym każda para wierzchołków połączona jest drogą

k‑spójność krawędziowa
k‑spójność krawędziowa

o grafie mówimy, że jest k-spójny krawędziowo, jeśli po usunięcie k - 1 krawędzi dalej istnieje ścieżka między dowolnymi dwoma wierzchołkami; w kontekście przepływu sieci mówimy o wartości minimalnej przepustowości, która musi zostać zachowana w sieci, aby była ona k-spójna krawędziowo

minimalna niezawodność
minimalna niezawodność

sieć, która spełnia kryterium ustalonej k-spójności krawędziowej

problem niezawodności sieci
problem niezawodności sieci

zdolność seci do utrzymania ciągłego przekazywania danych z jednego węzła do drugiego w obliczu różnych awarii, zakłóceń lub ograniczeń

przepływ netto
przepływ netto

różnica między przepływem wchodzącym a wychodzącym danego wierzchołka

przepustowość
przepustowość

maksymalna ilość jednostek danych (czynników), która może być przetransportowana przez daną krawędź w jednostce czasu

sieć przepływowa
sieć przepływowa

graf skierowany, w którym każda krawędź ma przypisaną przepustowość (ilość, którą można przetransportować) oraz funkcję przepływu (ilość przepływających danych) spełniającą pewne warunki

sieć rezydualna
sieć rezydualna

graf, który jest tworzony na podstawie pierwotnej sieci przepływowej i aktualnego przepływu; krawędzie w sieci rezydualnej reprezentują przepustowość rezydualną, czyli maksymalną ilość dodatkowych danych, które mogą przepłynąć daną krawędzią w danej chwili

ścieżki rozszerzające
ścieżki rozszerzające

ścieżki w sieci rezydualnej, które umożliwiają dodanie dodatkowego przepływu do istniejącego przepływu w sieci przepływowej

ujście
ujście

wierzchołek w sieci przepływowej, na którym przepływ się kończy

warunek skośnej symetrii
warunek skośnej symetrii

zasada, zgodnie z którą przepływ w odwrotnym kierunku na krawędziach ma przeciwny znak w porównaniu do przepływu w danym kierunku

źródło
źródło

wierzchołek w sieci przepływowej, od którego przepływ się zaczyna