Podręcznik
1. Modele sieciowe
1.2. Zagadnienia modelowane jako problemy w sieciach przepływowych
W sieciach przepływowych formułuje się problemy typowe dla sieci przepływowych, w szczególności problem maksymalnego przepływu i problem przepływu minimalnokosztowego. Cała sztuka modelowania polega na „zakodowaniu” problemu, który chcemy rozwiązać w pojęciach ze świata sieci przepływowych. Najpierw dokonujemy więc pewnego mapowania problemu do problemu w sieci przepływowej. Następnie rozwiązujemy odpowiedni problem w sieci przepływowej. Uzyskany w ten sposób wynik dekodujemy z przestrzeni pojęć sieci przepływowej do domeny wyjściowego problemu. Dlatego istotne jest jednoznaczne i poprawne określenie parametrów sieci przepływowej, zazwyczaj przepustowości i kosztów łuków, oraz wskazanie problemu do rozwiązania na sieci. Przedstawimy teraz dwa kluczowe problemy rozwiązywane w sieciach przepływowych.
Problem maksymalnego przepływu
Problem polega na znalezieniu maksymalnego przepływu od
wierzchołka źródłowego do wierzchołka ujściowego
. W problemie tym
muszą zostać zdefiniowane przepustowości krawędzi, natomiast nie są
wykorzystywane koszty.
Poniżej znajduje się przykładowa sieć przesyłowa dla problemu maksymalnego przepływu.
Rozwiązanie problemu maksymalnego przepływu zostało zaznaczone poniżej w postaci przepływów podanych w nawiasach kwadratowych.
Problem maksymalnego przepływu można rozwiązywać np. algorytmem Forda-Fulkersona. Dla całkowitoliczbowych przepustowości algorytm ten znajduje rozwiązanie całkowitoliczbowe w skończonej liczbie iteracji. Ponieważ w niniejszym materiale skupiamy się na modelowaniu, czytelnika chcącego poznać szczegóły algorytmu odsyłamy do pozycji bibliograficznych.
Model programowania liniowego dla problemu maksymalnego przepływu jest następujący:
Z maksymalnym przepływem wiąże się pojęcie minimalnego przekroju.
Przekrojem grafu nazywamy podział łuków na dwa rozłączne
podzbiory
oraz
. Przepustowość przekroju
to
suma przepustowości wszystkich łuków łączących wierzchołki
z
wierzchołkami
.
Wartość dowolnego przepływu w sieci nie może być większa niż
przepustowość dowolnego przekroju. W szczególności wartość maksymalnego
przepływu w sieci jest równa przepustowości minimalnego przekroju w sieci
.
Minimalny przekrój może być wyznaczony np. w ramach
ostatniej iteracji algorytmu Forda-Fulkersona, w której finalne znakowanie wierzchołków
wyznacza ich podział na podzbiory i
.
Problem najtańszego przepływu
Problem najtańszego przepływu wymaga zdefiniowania jednostkowych
kosztów przepływ na łukach. Należy znaleźć przepływ o zadanej wielkości z węzła
źródłowego do ujścia
przy minimalnym sumarycznym koszcie przepływu.
Poniżej znajduje się przykładowa sieć przesyłowa dla problemu najtańszego przepływu, gdzie pierwsza liczba z pary x/y oznacza przepustowość, a druga koszt.
Rozwiązanie problemu najtańszego przepływu zostało zaznaczone poniżej w postaci przepływów podanych w nawiasach kwadratowych.
Problem najtańszego przepływu może być rozwiązywany uproszczoną metodą sympleks lub dedykowanymi algorytmami sieciowymi.
Model programowania liniowego dla problemu minimalnokosztowego
przepływu jest następujący: