78 Глава 3. СЕТИ
3.1.3 Алгоритм нахождения максимального потока в сети.
Понятие пути, ненасыщенного потоком.
Определение 3.1.7 Пусть
f : N ×N −→ R
1
поток в сети Γ = hN, ui. Будем говорить,
что ребро (x, y) ∈ G, ненасыщено потоком, если u(x, y) > f(x, y)
Путем P (s, s
′
) из истока S в сток S
′
будем называть последовательность ребер
вида: P (s, s
′
) = {(s, x
1
), (x
1
, x
2
), . . . , (x
n
, s
′
)}
Будем говорить, что путь P (s, s
′
) ненасыщен относительно потока f, если каждое
ребро пути P (s, s
′
) не насыщено относительно потока, т.е. u(x, y) > f(x, y), ∀(x, y) ∈ P.
Вычислительный алгоритм.
1. Строим в сети Γ = hN, ui произвольный поток f
0
.
2. Строим множество S
0
, состоящее из узлов x, которые можно достичь из истока s
по ненасыщенному потоком f
0
пути.
• Если s
′
/∈ S
0
, то f
0
– максимальный поток, u(S
0
, S
′
0
), S
′
0
≡ N \ S минимальное
сечение в сети Γ = hN, ui;
• В противном случае переходим к пункту 2.
3. Если s
′
∈ S
0
, то находим ненасыщенный потоком f
0
путь P
0
(s, s
′
) из s в s
′
(P
0
(s, s
′
)),
относительно потока f
0
.
Пусть
P
0
(s, s
′
) = {(s, x
1
), (x
1
, x
2
), . . . , (x
n
, s
′
)}.
4. Находим величину Θ = min
(x,y)∈P
0
[u(x, y) − f(x, y)] > 0.
5. Строим новый поток f
1
по правилу:
f
1
(x, y) =
f
0
(x, y) + Θ, если(x, y) ∈ P ;
f
0
(x, y) − Θ, если(y, x) ∈ P ;
f
0
(x, y), если (x, y) /∈ P, (y, x) /∈
P ;
и переходим к пункту 2 с потоком f
1
.