<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://debianws.lexgopc.com/wiki143/index.php?action=history&amp;feed=atom&amp;title=Multi-commodity_flow_problem</id>
	<title>Multi-commodity flow problem - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://debianws.lexgopc.com/wiki143/index.php?action=history&amp;feed=atom&amp;title=Multi-commodity_flow_problem"/>
	<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=Multi-commodity_flow_problem&amp;action=history"/>
	<updated>2026-05-04T13:54:43Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>http://debianws.lexgopc.com/wiki143/index.php?title=Multi-commodity_flow_problem&amp;diff=3472574&amp;oldid=prev</id>
		<title>173.178.173.191: /* Usage */</title>
		<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=Multi-commodity_flow_problem&amp;diff=3472574&amp;oldid=prev"/>
		<updated>2024-11-19T22:53:49Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Usage&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Short description|Network flow problem (mathematics)}}&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;multi-commodity flow problem&amp;#039;&amp;#039;&amp;#039; is a [[network flow problem]] with multiple commodities (flow demands) between different source and sink nodes.&lt;br /&gt;
&lt;br /&gt;
==Definition==&lt;br /&gt;
&lt;br /&gt;
Given a [[flow network]] &amp;lt;math&amp;gt;\,G(V,E)&amp;lt;/math&amp;gt;, where edge &amp;lt;math&amp;gt;(u,v) \in E&amp;lt;/math&amp;gt; has capacity &amp;lt;math&amp;gt;\,c(u,v)&amp;lt;/math&amp;gt;. There are &amp;lt;math&amp;gt;\,k&amp;lt;/math&amp;gt; commodities &amp;lt;math&amp;gt;K_1,K_2,\dots,K_k&amp;lt;/math&amp;gt;, defined by &amp;lt;math&amp;gt;\,K_i=(s_i,t_i,d_i)&amp;lt;/math&amp;gt;, where &amp;lt;math&amp;gt;\,s_i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\,t_i&amp;lt;/math&amp;gt; is the &amp;#039;&amp;#039;&amp;#039;source&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;sink&amp;#039;&amp;#039;&amp;#039; of commodity &amp;lt;math&amp;gt;\,i&amp;lt;/math&amp;gt;, and &amp;lt;math&amp;gt;\,d_i&amp;lt;/math&amp;gt; is its demand. The variable &amp;lt;math&amp;gt;\,f_i(u,v)&amp;lt;/math&amp;gt; defines the fraction of flow &amp;lt;math&amp;gt;\,i&amp;lt;/math&amp;gt; along edge &amp;lt;math&amp;gt;\,(u,v)&amp;lt;/math&amp;gt;, where &amp;lt;math&amp;gt;\,f_i(u,v) \in [0,1]&amp;lt;/math&amp;gt; in case the flow can be split among multiple paths, and &amp;lt;math&amp;gt;\,f_i(u,v) \in \{0,1\}&amp;lt;/math&amp;gt; otherwise (i.e. &amp;quot;single path routing&amp;quot;). Find an assignment of all flow variables which satisfies the following four constraints:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(1) Link capacity:&amp;#039;&amp;#039;&amp;#039; The sum of all flows routed over a link does not exceed its capacity.&lt;br /&gt;
:&amp;lt;math&amp;gt;\forall (u,v)\in E:\,\sum_{i=1}^{k} f_i(u,v)\cdot d_i \leq c(u,v)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(2) Flow conservation on transit nodes:&amp;#039;&amp;#039;&amp;#039; The amount of a flow entering an intermediate node &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; is the same that exits the node.&lt;br /&gt;
:&amp;lt;math&amp;gt;\forall i\in\{1,\ldots,k\}:\,\sum_{(u,w) \in E} f_i(u,w) - \sum_{(w,u) \in E} f_i(w,u) = 0 \quad \mathrm{when} \quad u \neq s_i, t_i &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(3) Flow conservation at the source:&amp;#039;&amp;#039;&amp;#039; A flow must exit its source node completely.&lt;br /&gt;
:&amp;lt;math&amp;gt;\forall i\in\{1,\ldots,k\}:\,\sum_{(u,w) \in E} f_i(s_i,w) - \sum_{(w,u) \in E} f_i(w,s_i) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(4) Flow conservation at the destination:&amp;#039;&amp;#039;&amp;#039; A flow must enter its sink node completely.&lt;br /&gt;
:&amp;lt;math&amp;gt;\forall i\in\{1,\ldots,k\}: \,\sum_{(u,w) \in E} f_i(w,t_i) - \sum_{(w,u) \in E} f_i(t_i,w) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Corresponding optimization problems==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Load balancing&amp;#039;&amp;#039;&amp;#039; is the attempt to route flows such that the utilization &amp;lt;math&amp;gt;U(u,v)&amp;lt;/math&amp;gt; of all links &amp;lt;math&amp;gt;(u,v)\in E&amp;lt;/math&amp;gt; is even, where&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;U(u,v)=\frac{\sum_{i=1}^{k} f_i(u,v)\cdot d_i}{c(u,v)}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The problem can be solved e.g. by minimizing &amp;lt;math&amp;gt;\sum_{u,v\in V} (U(u,v))^2&amp;lt;/math&amp;gt;. A common linearization of this problem is the minimization of the maximum utilization &amp;lt;math&amp;gt;U_{max}&amp;lt;/math&amp;gt;, where&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\forall (u,v)\in E:\, U_{max} \geq U(u,v)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the &amp;#039;&amp;#039;&amp;#039;minimum cost multi-commodity flow problem&amp;#039;&amp;#039;&amp;#039;, there is a cost &amp;lt;math&amp;gt;a(u,v) \cdot f(u,v)&amp;lt;/math&amp;gt; for sending a flow on &amp;lt;math&amp;gt;\,(u,v)&amp;lt;/math&amp;gt;. You then need to minimize &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\sum_{(u,v) \in E} \left( a(u,v) \sum_{i=1}^{k} f_i(u,v)\cdot d_i \right)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the &amp;#039;&amp;#039;&amp;#039;maximum multi-commodity flow problem&amp;#039;&amp;#039;&amp;#039;, the demand of each commodity is not fixed, and the total throughput is maximized by maximizing the sum of all demands &amp;lt;math&amp;gt;\sum_{i=1}^{k} d_i&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Relation to other problems==&lt;br /&gt;
&lt;br /&gt;
The minimum cost variant of the multi-commodity flow problem is a generalization of the [[minimum cost flow problem]] (in which there is merely one source &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; and one sink &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;). Variants of the [[circulation problem]] are generalizations of all flow problems. That is, any flow problem can be viewed as a particular circulation problem.&amp;lt;ref name=&amp;quot;ahuja_et_al_1993&amp;quot;&amp;gt;{{cite book |last1=Ahuja |first1=Ravindra K. |last2=Magnanti |first2=Thomas L. |last3=Orlin |first3=James B. |title=Network Flows. Theory, Algorithms, and Applications |date=1993 |publisher=Prentice Hall}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
&lt;br /&gt;
[[Routing and wavelength assignment]] (RWA) in [[optical burst switching]] of [[SONET|Optical Network]] would be approached via multi-commodity flow formulas, if the network is equipped with wavelength conversion at every node.&lt;br /&gt;
&lt;br /&gt;
[[Register allocation]] can be modeled as an integer minimum cost multi-commodity flow problem: Values produced by instructions are source nodes, values consumed by instructions are sink nodes and registers as well as stack slots are edges.&amp;lt;ref&amp;gt;{{cite thesis |type=PhD |last=Koes |first=David Ryan |date=2009 |title=&amp;quot;Towards a more principled compiler: Register allocation and instruction selection revisited&amp;quot; |publisher=Carnegie Mellon University |s2cid=26416771 }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Solutions==&lt;br /&gt;
&lt;br /&gt;
In the decision version of problems, the problem of producing an integer flow satisfying all demands is [[NP-complete]],&amp;lt;ref name=&amp;quot;EIS76&amp;quot;&amp;gt;{{cite journal | author = S. Even and A. Itai and A. Shamir | title = On the Complexity of Timetable and Multicommodity Flow Problems | publisher = SIAM | year = 1976 | journal = SIAM Journal on Computing | volume = 5 | pages = 691–703| doi = 10.1137/0205048| issue = 4}}{{Cite book|doi=10.1109/SFCS.1975.21|chapter=On the complexity of time table and multi-commodity flow problems|title=16th Annual Symposium on Foundations of Computer Science (SFCS 1975)|pages=184–193|year=1975|last1=Even|first1=S.|last2=Itai|first2=A.|last3=Shamir|first3=A.|s2cid=18449466 }}&amp;lt;/ref&amp;gt; even for only two commodities and unit capacities (making the problem [[strongly NP-complete]] in this case). &lt;br /&gt;
&lt;br /&gt;
If fractional flows are allowed, the problem can be solved in polynomial time through [[linear programming]],&amp;lt;ref&amp;gt;{{cite book | author = [[Thomas H. Cormen]], [[Charles E. Leiserson]], [[Ronald L. Rivest]], and [[Clifford Stein]] | title = Introduction to Algorithms | edition = 3rd | year = 2009 | publisher = MIT Press and McGraw–Hill | pages = 862 | chapter = 29 | isbn = 978-0-262-03384-8| title-link = Introduction to Algorithms }}&amp;lt;/ref&amp;gt; or through (typically much faster) [[fully polynomial time approximation scheme]]s.&amp;lt;ref&amp;gt;{{cite conference | author = George Karakostas | title = Faster approximation schemes for fractional multicommodity flow problems | book-title = Proceedings of the thirteenth annual ACM-SIAM symposium on Discrete algorithms | year = 2002 | isbn = 0-89871-513-X | pages = [https://archive.org/details/proceedingsofthi2002acms/page/166 166–173] | url = https://archive.org/details/proceedingsofthi2002acms/page/166 }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- A combinatorial algorithm recently has been proposed for the Multi-commodity Flow Problem, which is based on a new conception——equilibrium pseudo-flow.&amp;lt;ref&amp;gt;[https://arxiv.org/abs/1904.09397 Liu, P. (2019). A Combinatorial Algorithm for the Multi-commodity Flow Problem. arXiv preprint arXiv:1904.09397.]&amp;lt;/ref&amp;gt; --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Applications==&lt;br /&gt;
Multicommodity flow is applied in the overlay routing in content delivery.&amp;lt;ref&amp;gt;[https://www.sigcomm.org/sites/default/files/ccr/papers/2015/July/0000000-0000009.pdf Algorithmic Nuggets in Content Delivery] sigcomm.org&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==External resources==&lt;br /&gt;
* Papers by Clifford Stein about this problem: http://www.columbia.edu/~cs2035/papers/#mcf&lt;br /&gt;
* Software solving the problem: https://web.archive.org/web/20130306031532/http://typo.zib.de/opt-long_projects/Software/Mcf/&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{DEFAULTSORT:Multi-Commodity Flow Problem}}&lt;br /&gt;
[[Category:Network flow problem]]&lt;br /&gt;
[[Category:NP-complete problems]]&lt;br /&gt;
&lt;br /&gt;
Add: Jean-Patrice Netter, Flow Augmenting Meshings: a primal type of approach to the maximum integer flow in a multi-commodity network, Ph.D dissertation Johns Hopkins University, 1971&lt;/div&gt;</summary>
		<author><name>173.178.173.191</name></author>
	</entry>
</feed>