Content deleted Content added
m Open access bot: url-access updated in citation with #oabot. |
|||
(45 intermediate revisions by 34 users not shown) | |||
Line 1:
{{Short description|Generalization of network flow problems}}
The '''circulation problem''' and its variants
== Definition ==
Given flow network <math>G(V,E)</math> with:
:<math>\sum_{w \in V} f(u,w) = 0</math> (flow cannot appear or disappear in nodes).
Finding a flow assignment satisfying the constraints gives a solution to the given circulation problem.
=== Multi-commodity circulation ===
In a multi-commodity circulation problem, you also need to keep track of the flow of the individual commodities:
:{|
| <math>\,
|-
| <math>\,
▲| <math>\,a(u,v)</math> || Cost of a unit of flow on <math>(u,v)</math>
▲| <math>\,f_i(u,v)</math> || The flow of commodity <math>i</math> from <math>u</math> to <math>v</math>
| <math>\,f(u,v) = \sum_i f_i(u,v)</math> || ▼
|}
There is also a lower bound on each flow of commodity.
▲You have the constraints
:{|
▲| '''Flow conservation''': || <math>\ \sum_{w \in V} f_i(u,w) = 0</math>
|}
The conservation constraint must be upheld individually for the commodities:
▲In the minimum cost variant of the problem, minimise
▲: <math>\sum_{(u,v) \in E} a(u,v) \cdot f(u,v)</math>
== Solution ==
For the circulation problem, many polynomial algorithms have been developed (e.g., [[Edmonds–Karp algorithm]], 1972; Tarjan 1987-1988). Tardos found the first strongly polynomial algorithm.<ref name="Ta85">{{cite journal | author = Éva Tardos | title = A strongly polynomial minimum cost circulation algorithm | journal = Combinatorica | date = 1985 | volume = 5 | issue = 3 | pages = 247–255 | doi = 10.1007/BF02579369}}</ref>
<!-- which articles? -->
For the case of multiple commodities, the problem is [[NP-complete]] for integer flows.<ref name="EIS76">{{cite journal | author = S. Even and A. Itai and A. Shamir | title = On the complexity of timetable and multi-commodity flow problems | publisher = SIAM | year = 1976 | journal = SIAM Journal on Computing | volume = 5 | pages = 691–703 | url = http://link.aip.org/link/?SMJ/5/691/1 | doi = 10.1137/0205048 | issue = 4 | url-status = dead | archiveurl = https://archive.today/20130112133748/http://link.aip.org/link/?SMJ/5/691/1 | archivedate = 2013-01-12 | url-access = subscription }}</ref> For fractional flows, it is solvable in [[polynomial time]], as one can formulate the problem as a [[linear programming|linear program]].
== Related problems ==
Line 45 ⟶ 51:
* Minimum cost multi-commodity circulation problem - Using all constraints given above.
* Minimum cost circulation problem - Use a single commodity
* Multi-commodity circulation - Solve without optimising cost.
* Simple circulation - Just use one commodity, and no cost.
* [[Multi-commodity flow problem|Multi-commodity flow]] - If <math>K_i(s_i,t_i,d_i)</math> denotes a demand of <math>d_i</math> for commodity <math>i</math> from <math>s_i</math> to <math>t_i</math>, create an edge <math>(t_i,s_i)</math> with <math>l_i(t_i,s_i) = u(t_i,s_i) = d_i</math> for all commodities <math>i</math>. Let <math>l_i(u,v)=0</math> for all other edges.
* [[Minimum cost
* [[Minimum cost flow problem]] - As above, with 1 commodity.
* [[Maximum flow problem]] - Set all costs to 0, and add an edge from the sink <math>t</math> to the source <math>s</math> with
▲* [[Minimum cost maximum flow problem]] - Let the back edge have unlimited capacity.
* [[Minimum cost maximum flow problem]] - First find the maximum flow amount <math>m</math>. Then solve with <math>l(t,s)=u(t,s)=m</math> and <math>c(t,s)=0</math>.
▲* [[Maximum flow problem]] - Set all costs to 0, and add an edge from the sink to the source with negative cost.
* [[Shortest path problem|Single-source shortest path]] -
* [[Shortest path problem|All-pairs shortest path]] - Let all capacities be unlimited, and find a flow of 1 for <math>v(v-1)/2</math> commodities, one for each pair of nodes.
Line 59 ⟶ 64:
<references/>
[[Category:Network flow problem]]
[[Category:Mathematical problems]]
|