Изменения

Перейти к: навигация, поиск
Нет описания правки
'''Алгоритм Форда-Фалкерсона ''' — алгоритм, решающий задачу нахождения максимального потока в транспортной сети.
== Идея ==
== Реализация ==
'''function''' dfs(u, Cmin): //Cmin - пропускная способность в текущем подпотоке '''if ''' (u = t) '''return ''' Cmin
u.col = true
'''for ''' (v in u.children)
uv = edge(u, v)
'''if ''' (!v.col) && '''and''' (uv.f < uv.c)
delta = dfs(v, min(Cmin, uv.c - uv.f))
'''if ''' (delta > 0)
uv.f += delta
uv.backEdge.f -= delta
'''return ''' delta '''return ''' 0
== Оценка производительности ==
=== Пример несходящегося алгоритма ===
[[Файл:F-f.5.png|thumb|right|рис. 1]]
Рассмотрим приведённую справа сеть с источником <tex>\ s</tex>, стоком <tex>\ t</tex>, пропускными способностями рёбер <tex>\ e_1</tex>, <tex>\ e_2</tex> и <tex>\ e_3</tex> соответственно <tex>\ 1</tex>, <tex>r=(\dfrac{\sqrt{5}-1)/}{2}</tex> и <tex>\ 1</tex> и пропускной способностью всех остальных рёбер, равной целому числу <tex>M \geqslant 2</tex>. Константа <tex>\ r</tex> выбрана так, что <tex>\ r^2 = 1 - r</tex>. Мы используем пути из остаточного графа, приведённые в таблице, причём <tex>\ p_1 = \{ s, v_4, v_3, v_2, v_1, t \}</tex>, <tex>\ p_2 = \{ s, v_2, v_3, v_4, t \}</tex> и <tex>\ p_3 = \{ s, v_1, v_2, v_3, t \}</tex>.
{| class="wikitable" style="text-align: center"
Анонимный участник

Навигация