Потоки в сетях (презентация)

advertisement
§ 4.6. Задача о максимальном потоке
  N, u  сеть.
u : N  N  R1  функция пропускной
способности.
Поток в сети
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 ),
xA
2
1
2) h( A, B )    h( x, y ), A, B  N.
xA 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  называется пропускной
xS 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  R1  функция, интерпретируется
как длина ребра.
В сеть введены два выделенных узла: 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 ,sG

 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

 xss
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 

xss 
Оптимальное решение:
2
1
s : xs 1  x s 2  1
xi j  
1: xs1  x21  x1s  x12  0
0
xs 1
x11
x21
xs1
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
Download