276
правок
Изменения
→Алгоритм
* '''Шаг 2'''. Найдем цикл <tex>C</tex>, обладающий наименьшим средним весом. Если <tex>\mu (C) \geqslant 0</tex>, то <tex>f</tex> {{---}} поток минимальной стоимости и алгоритм завершается.
* '''Шаг 3'''. Отменим цикл <tex>C</tex>, пустив по нему максимально возможный поток: <tex>f = f + c_{f}(C)\cdot f_{C}</tex>. Перейдем к '''шагу 1'''.
===Сложность===
<tex>O(VE\cdot VE^{2}\log{V})</tex>, при этом
<tex>O(VE)</tex> времени тратится на поиск цикла минимального среднего веса.
===Корректность===
{{Лемма
|id=lemma1
|statement=Если <tex>f</tex> {{---}} поток минимальной стоимости, то <tex>\exists \varphi</tex> такое, что <tex>\forall uv: \; c_{f}(uv) > 0 \qquad p_{\varphi}(uv) \geqslant 0</tex>.
|proof=
{{Лемма
|id=lemma2
|statement=Если стоимости целочисленны и поток <tex>f</tex> {{---}} <tex>\varepsilon</tex>-оптимальный, где <tex>\varepsilon < \dfrac{1}{n}</tex>, то <tex>f</tex> {{---}} поток минимальной стоимости.
|proof=
Обозначим за <tex>\mu(f)</tex> минимальную величину среди средних весов циклов для потока <tex>f</tex>, а за <tex>\varepsilon(f)</tex> минимальное <tex>\varepsilon</tex> такое, что поток <tex>f</tex> {{---}} <tex>\varepsilon</tex>-оптимальный.
{{Лемма
|id=lemma3
|statement=Если <tex>f</tex> {{---}} поток не минимальной стоимости, то <tex>\varepsilon(f)=-\mu(f)</tex>.
|proof=
{{Лемма
|id=lemma4
|statement=Отмена цикла минимального среднего веса не увеличивает <tex>\varepsilon(f)</tex>.
|proof=
}}
==Алгоритм поиска цикла минимального среднего веса==