§ 4.6. Задача о максимальном потоке N, u сеть. u : N N R1 функция пропускной способности. Поток в сети 5 2 1 7 4 3 f : N N R1 функция со свойствами: • кососимметричность f ( x, y ) f ( y , x ), для всех ( x, y ) N N • допустимость f ( x, y ) u( x, y ), для всех ( x, y ) N N Замечание 4.6.1. В задаче предполагается, что пропускная способность и поток принимают только целочисленные значения. Введем обозначения для функций от множеств: 1) g ( A) g ( x ), xA 2 1 2) h( A, B ) h( x, y ), A, B N. xA y B Свойства функций от множеств: 1) g ( A B ) g ( A) g (B ), A B , 2) h( A B,C ) h( A,C ) h(B,C ), A B , 3) h( A, B C ) h( A, B ) h( A,C ), C B . Свойства потока на множествах узлов: 1) f ( A, A) 0, A N, 2) f ( A, B ) u( A, B ), A, B N. Док-во: f A, A f 1,2 f 2,4 f 2,1 f 4,2 f 1,2 f 2,4 f 1,2 f 2,4 0 4 3 A 1,2,4 • Узел s N называется истоком сети, если f (s, N ) 0. • Узел s N называется стоком сети, если f (s, N ) 0. • Узел x называется промежуточным пунктом сети, если f ( x, N ) 0. • Число f (s, N ) f (N, s) мощность потока . • Поток f максимальной мощности называется максимальным потоком . 2 1 s 3 s 4 6 2 4 f 7 • Пара множеств S, S , S N, S N называется сечением сети, если выполнено условие: s S, s S , S S N, S S . u(S, S) u x, y называется пропускной xS y S способностью сечения. • Сечение с минимальной пропускной способностью называется минимальным сечением в сети (S,S). • Число 2 1 3 s 4 s 6 2 4 S,S : 1. S s,1, S 2, s 2. S s,2, S 1, s 3. S s, S 1,2, s 4. S s,1,2, S s u(S,S) 13 u(S,S) 10 u(S,S) 8 u(S,S) 7 минимальное сечение Задача 4.6.1. (О максимальном потоке, прямая задача) В сети N, u построить максимальный поток (поток максимальной мощности) и найти мощность этого потока. Задача 4.6.2. (О минимальном сечении, двойст. задача) В сети N, u найти минимальное сечение (сечение с минимальной пропускной способностью) и вычислить пропускную способность этого сечения. Лемма 4.6.1. Мощность произвольного потока не превосходит пропускной способности произвольного сечения в сети f (s, N ) u(S,S) Теорема 4.6.1. (Достаточное условие оптимальности). Если мощность некоторого потока совпадает с пропускной способностью некоторого сечения, то этот поток является максимальным, а данное сечение – минимальным. Теорема 4.6.2. (О максимальном потоке и минимальном сечении). В произвольной сети существует максимальный поток и минимальное сечение, и f (s, N ) u(S,S). ( x, y ) G ненасыщено потоком, если u( x, y ) f ( x, y ). Путем называется последовательность ребер P (s, s ) (s, x1 ),( x1, x2 ), ,( xn , s ). Ребро Путь P (s, s) ненасыщен относительно потока f , если каждое ребро пути ненасыщенно, т.е. u( x, y ) f ( x, y ). 4.6.2. Алгоритм решения задачи о максимальном потоке Шаг 0. f0 произвольный поток ИТЕРАЦИЯ Шаг 1. S0 множество узлов, которые можно достичь источника по ненасыщенному пути; • если s S0 f0 максимальный поток, (S0 , S0 ) минимальное сечение, S0 N / S0 , • если s S0 переход к шагу 2. Шаг 2. • Находим ненасыщенный путь P1(s, s). • Вычисляем величину 0 min [u( x, y ) f0 ( x, y )] 0. ( x ,y )P0 из Шаг 3. • Строим новый поток f1 по правилу: f0 ( x, y ) 0 , ( x, y ) P, f1( x, y ) f0 ( x, y ) 0 , ( y , x ) P, f ( x, y ), ( x, y ) P, ( y , x ) P. 0 • Переходим к шагу 1 алгоритма с потоком f1 . Пример 4.6.1. u x, y s 1 2 3 s s 0 1 3 3 0 1 1 0 1 2 4 2 3 1 0 0 1 3 3 2 0 0 1 s 0 4 1 1 0 Решение: Шаг 0. • Направим начальный поток по трем путям: P01 s,2 , 2, s , P02 s,1, 1, s , P03 s,3 , 3, s , 01 1, 02 1, 03 1, f0 01 02 03 3 суммарный поток • Представим поток в виде матрицы: f0 s s 0 1 1 2 1 3 1 s 0 1 1 0 0 0 1 2 1 0 0 0 1 3 1 0 0 0 1 s 0 1 1 1 0 ИТЕРАЦИЯ 1. Шаг 1. • Вычислим матрицу u 0 u f0 u s 1 u 0 2s 3 1 s 2 3 fs0 s 1 2 3 s 1 2 3 s 0 1 3 3 0 1s 01 12 23 4s • строим 30 12 04 04 10 30 20 01 02 15 02 41 10 10 02 2 2 0 0 2 s0 13 20 30 s0 s 0 1 1 1 0 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 0 1 1 1 0 S0 s,1,2,3, s , s S0 f0 не максимальный поток Шаг 2. • Строим путь, не насыщенный потоком P1(s, s ) (s,2),(2,1),(1, s ), 1 1 Шаг 3. 1 0 u u f1 • Пересчитаем матрицу пропускных способностей u 1 x, y s 1 2 3 s s 0 2 5 4 0 1 0 0 0 2 6 2 1 2 0 0 2 3 2 2 0 0 2 s 0 2 0 0 0 ИТЕРАЦИЯ 2. Шаг 1. S1 s,1,2,3, s , s S1 f f0 f1 не максимальный поток Шаг 2. • Строим путь не насыщенный потоком P2 (s, s ) (s,3),(3,1),(1, s ), 2 2 • Матрица суммарного потока: Шаг 3. u 2 x, y s 1 2 3 s s 0 2 5 6 0 1 0 0 0 0 8 2 1 2 0 0 2 3 s 0 0 4 0 0 0 0 0 2 0 f u u2 s 1 2 3 s s 1 2 3 0 1 2 3 1 0 1 2 2 1 0 0 3 2 0 0 0 4 1 1 • Строим S2 s,2, s S2 , (S2 , S2 ) минимальное сечение, S2 s,1,3 f f0 f1 f2 6 максимальный поток. s 0 4 1 1 0 Иллюстрация максимального потока и минимального сечения: f s 1 2 3 s s 0 1 2 3 0 2 1 2 1 1 0 1 2 4 1 2 2 1 0 0 1 4 1 s s 1 3 3 2 0 0 1 2 S2 s,2 1 3 s 0 4 1 1 0 3 S2 1,3, s Проверка: fmax (s, N ) umin (S2 ,S2 ) 6, u(S2 , S2 ) 1 1 1 3 6. § 4.7. Распределительная задача Нефтеперерабатывающее предприятие владеет: 2 нефт. скважинами 20 5 8 0,15 (источники), 5 0, 2 насосн. станциями 1 3 6 5, (промежут. узлы), 2 8,20 6 28 3 нефт. завода 10 0,15 (стоки). 8 0, 7 0, 4 2 Пример 4.7.1. 29 36 2 10,20 7 17 источники промежуточные узлы стоки Для общей постановки определим следующие величины: N – множество узлов сети, G – множество всех дуг сети, i , j G – дуга сети, xij – кол-во продукции, перевозимой по дуге i , j (поток), cij – затраты на единицу потока на дуге i , j , uij – верхняя граница потока на дуге, l ij нижняя граница потока на дуге, uij l ij N N1 N2 N3 , Ni N j , i , j 1,2,3 N1 – множество узлов предложения, N2 – множество промежуточных узлов, N3 – множество узлов спроса, b j – спрос (предложение) в узле j N, b j 0, j N1, b j 0, j N2 , b j 0, j N3 . Задача: найти целочисленный поток минимальной стоимости в сети, обеспечивающий спрос и предложение, и удовлетворяющий ограничениям на пропускную способность. min ci j xi j , xi j b j , i , j G j ,i G x ji i , j G j N, l i j x i j ui j , xi j целые, i , j G. x ji вытекающий поток из узла j N, xi j втекающий поток в узел j N. j ,i G i , j G Математическая модель min 5 x13 2 x14 2 x47 1: x13 x14 29 2 : x24 36 29 1 4 : x45 x46 x47 x24 0 36 2 6 : x36 x46 28 7 : x47 17 x13 0, x24 0, 8 x14 20, 0 x35 15, 5 x36 , 0 x45 15, x46 0; 10 x47 20. 3 8 0, 4 5 20 6 28 7 17 6 5, 2 8,20 10 0,15 3 : x35 x36 x13 0 5 : x35 x45 20 5 0, 8 0,15 7 0, 2 10,20 s § 4.8. Задача о кратчайшем пути. N, u , u : N N R1 функция, интерпретируется как длина ребра. В сеть введены два выделенных узла: 3 6 1 s – источник (начало пути), s 1 s s – сток (конец пути). 3 4 P s, s s, x1 , x1, x2 , , xn , s 2 путь из s в s. Под длиной пути будем понимать величину: u s, s i , j P s,s ui j Задача о кратчайшем пути: требуется найти в сети путь из s в s , имеющий минимальную длину. Сведение к распределительной задаче: Заметим, что данную задачу можно интерпретировать как задачу нахождения потока единичной мощности и минимальной стоимости. Математическая модель задачи имеет следующий вид: min ci j xi j , при условиях: i , j G xs j 1, xi j xis 1, s , j G i , j G i ,sG j ,i G x ji 0, j s, j s , xi j 0, xi j целые, i , j G. Пример 4.8.1. 3 s 6 1 1 4 3 s xss x X 1s x2s xss min 3 xs1 4 xs 2 x12 x21 6 x1s 3 x2s 2 : xs 2 x12 x2s x21 0 s : x1s x2s 1 xs 2 x12 x22 xs 2 xss x1s x 2 s xss Оптимальное решение: 2 1 s : xs 1 x s 2 1 xi j 1: xs1 x21 x1s x12 0 0 xs 1 x11 x21 xs1 0 0 X 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 X 0 0 0 1 0 0 0 0 0 0 1 0 0 0 min z 7