Изменения

Перейти к: навигация, поиск
Реализация
==Алгоритм==
На основании теоремы построим алгоритм.. На каждой итерации алгоритма будем находить путь минимальной стоимости из <tex>s</tex> в <tex>t</tex> в остаточной сети и дополнять поток вдоль него. Выбирать алгоритм для поиска кратчайших путей следует с учетом того, что в ходе алгоритма появляются ребра отрицательного веса.
===Описание===
===Реализация===
Пусть задана структура <tex>Edge</tex>: '''struct''' edge: '''int''' from '''int''' to '''double''' c <font color=green>// пропускная способность ребра</font> '''double''' flow <font color=green>// поток через ребро</font> '''double''' price <font color=green>// стоимость перемещения единицы потока через ребро</font> Будем использовать структуру для хранения ребер графа G.  '''forEdge[]''' findMinCostMaxFlow(<tex>e \in G: (V, E)</tex>, '''int''' s, '''int''' t): '''for''' edge '''in''' <tex>f[e] \leftarrow 0E</tex>: edge.flow = 0 '''while''' (существует <tex>\exists</tex> путь <tex>s \leadsto t</tex> в остаточной сети <tex>G_f</tex>): <tex> P \leftarrow</tex> кратчайший в смысле стоимости = путь <tex>s \leadsto t</tex>с наименьшей стоимостью. дополнить поток maxFlow = <tex>f\displaystyle \min_{edge \in P} edge.c - edge.flow</tex> вдоль '''for''' edge '''in''' P: edge.flow += maxFlow '''return''' <tex>PE</tex>
===Асимптотика===
==Источники информации==
*[https://ru.wikipedia.org/wiki/Теорема_Форда_—_Фалкерсона Wikipedia {{---}} Теорема Форда-Фалкерсона]
* Ravindra Ahuja, Thomas Magnanti, James Orlin. Network flows (1993)
== Литература ==
* Ravindra Ahuja, Thomas Magnanti, James Orlin. Network flows (1993)
[[Категория:Алгоритмы и структуры данных]]
[[Категория: Задача о потоке минимальной стоимости]]
147
правок

Навигация