 <?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.algo.informatik.tu-darmstadt.de/index.php?action=history&amp;feed=atom&amp;title=Max-Flow_Problems</id>
	<title>Max-Flow Problems - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.algo.informatik.tu-darmstadt.de/index.php?action=history&amp;feed=atom&amp;title=Max-Flow_Problems"/>
	<link rel="alternate" type="text/html" href="https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=Max-Flow_Problems&amp;action=history"/>
	<updated>2026-04-21T06:01:16Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.38.4</generator>
	<entry>
		<id>https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=Max-Flow_Problems&amp;diff=3886&amp;oldid=prev</id>
		<title>Weihe at 08:58, 31 March 2018</title>
		<link rel="alternate" type="text/html" href="https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=Max-Flow_Problems&amp;diff=3886&amp;oldid=prev"/>
		<updated>2018-03-31T08:58:19Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 08:58, 31 March 2018&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l29&quot;&gt;Line 29:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 29:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;## First, we construct a new graph &amp;lt;math&amp;gt;G'=(V',A')&amp;lt;/math&amp;gt; as follows: We add a super-source &amp;lt;math&amp;gt;s'&amp;lt;/math&amp;gt; and a super-target &amp;lt;math&amp;gt;t'&amp;lt;/math&amp;gt; to &amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt;. Next,  for every node &amp;lt;math&amp;gt;v\in V&amp;lt;/math&amp;gt;, we add an arc &amp;lt;math&amp;gt;(s',v)&amp;lt;/math&amp;gt; and an arc &amp;lt;math&amp;gt;(v,t')&amp;lt;/math&amp;gt; to &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;. Finally we add an arc &amp;lt;math&amp;gt;(t,s)&amp;lt;/math&amp;gt; to &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;, if not in &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; yet.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;## First, we construct a new graph &amp;lt;math&amp;gt;G'=(V',A')&amp;lt;/math&amp;gt; as follows: We add a super-source &amp;lt;math&amp;gt;s'&amp;lt;/math&amp;gt; and a super-target &amp;lt;math&amp;gt;t'&amp;lt;/math&amp;gt; to &amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt;. Next,  for every node &amp;lt;math&amp;gt;v\in V&amp;lt;/math&amp;gt;, we add an arc &amp;lt;math&amp;gt;(s',v)&amp;lt;/math&amp;gt; and an arc &amp;lt;math&amp;gt;(v,t')&amp;lt;/math&amp;gt; to &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;. Finally we add an arc &amp;lt;math&amp;gt;(t,s)&amp;lt;/math&amp;gt; to &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;, if not in &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; yet.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;## For all arcs &amp;lt;math&amp;gt;a\in A&amp;lt;/math&amp;gt;, we set &amp;lt;math&amp;gt;\ell'(a):=0&amp;lt;/math&amp;gt;. For each node &amp;lt;math&amp;gt;v\in V&amp;lt;/math&amp;gt;, we set  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;## For all arcs &amp;lt;math&amp;gt;a\in A&amp;lt;/math&amp;gt;, we set &amp;lt;math&amp;gt;\ell'(a):=0&amp;lt;/math&amp;gt;. For each node &amp;lt;math&amp;gt;v\in V&amp;lt;/math&amp;gt;, we set  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;##:&amp;lt;math&amp;gt;u'(s',v):=\sum_{(w,v)\in A}\ell(w,v)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u'(v,t'):=\sum_{(v,w)\in A} \ell(v,w)&amp;lt;/math&amp;gt;.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;##:&amp;lt;math&amp;gt;u'(s',v):=&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;\max\{0,&lt;/ins&gt;\sum_{(w,v)\in A}\ell(w,v)&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;\}&lt;/ins&gt;&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u'(v,t'):=&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;\max\{0,&lt;/ins&gt;\sum_{(v,w)\in A} \ell(v,w)&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;\}&lt;/ins&gt;&amp;lt;/math&amp;gt;.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;##:For all arcs &amp;lt;math&amp;gt;a\in A&amp;lt;/math&amp;gt;, we set &amp;lt;math&amp;gt;u'(a):=u(a)-\ell(a)&amp;lt;/math&amp;gt;. Finally, we set &amp;lt;math&amp;gt;u'(t,s):=+\infty&amp;lt;/math&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;##:For all arcs &amp;lt;math&amp;gt;a\in A&amp;lt;/math&amp;gt;, we set &amp;lt;math&amp;gt;u'(a):=u(a)-\ell(a)&amp;lt;/math&amp;gt;. Finally, we set &amp;lt;math&amp;gt;u'(t,s):=+\infty&amp;lt;/math&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;## If all additional arcs &amp;lt;math&amp;gt;(s',\cdot)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;(\cdot,t')&amp;lt;/math&amp;gt; are [[Basic flow definitions#Flow-augmenting paths and saturated arcs|saturated]] by some feasible (and obviously maximum) &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt;, the values &amp;lt;math&amp;gt;f(a)+\ell(a)&amp;lt;/math&amp;gt; on all original arcs of &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; obviously form a feasible &amp;lt;math&amp;gt;(s,t)&amp;lt;/math&amp;gt;-flow in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; with respect to &amp;lt;math&amp;gt;\ell&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;. On the other hand, if there is a feasible &amp;lt;math&amp;gt;(s,t)&amp;lt;/math&amp;gt;-flow &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; with respect to &amp;lt;math&amp;gt;\ell&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, the values &amp;lt;math&amp;gt;f(a)-\ell(a)&amp;lt;/math&amp;gt; on all original arcs in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; along with saturating flow values on all additional arcs form a feasible (and obviously maximum) &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;## If all additional arcs &amp;lt;math&amp;gt;(s',\cdot)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;(\cdot,t')&amp;lt;/math&amp;gt; are [[Basic flow definitions#Flow-augmenting paths and saturated arcs|saturated]] by some feasible (and obviously maximum) &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt;, the values &amp;lt;math&amp;gt;f(a)+\ell(a)&amp;lt;/math&amp;gt; on all original arcs of &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; obviously form a feasible &amp;lt;math&amp;gt;(s,t)&amp;lt;/math&amp;gt;-flow in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; with respect to &amp;lt;math&amp;gt;\ell&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;. On the other hand, if there is a feasible &amp;lt;math&amp;gt;(s,t)&amp;lt;/math&amp;gt;-flow &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; with respect to &amp;lt;math&amp;gt;\ell&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, the values &amp;lt;math&amp;gt;f(a)-\ell(a)&amp;lt;/math&amp;gt; on all original arcs in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; along with saturating flow values on all additional arcs form a feasible (and obviously maximum) &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Weihe</name></author>
	</entry>
	<entry>
		<id>https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=Max-Flow_Problems&amp;diff=3656&amp;oldid=prev</id>
		<title>Weihe: /* Generalizations */</title>
		<link rel="alternate" type="text/html" href="https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=Max-Flow_Problems&amp;diff=3656&amp;oldid=prev"/>
		<updated>2015-11-23T08:48:21Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Generalizations&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 08:48, 23 November 2015&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l32&quot;&gt;Line 32:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 32:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;##:For all arcs &amp;lt;math&amp;gt;a\in A&amp;lt;/math&amp;gt;, we set &amp;lt;math&amp;gt;u'(a):=u(a)-\ell(a)&amp;lt;/math&amp;gt;. Finally, we set &amp;lt;math&amp;gt;u'(t,s):=+\infty&amp;lt;/math&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;##:For all arcs &amp;lt;math&amp;gt;a\in A&amp;lt;/math&amp;gt;, we set &amp;lt;math&amp;gt;u'(a):=u(a)-\ell(a)&amp;lt;/math&amp;gt;. Finally, we set &amp;lt;math&amp;gt;u'(t,s):=+\infty&amp;lt;/math&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;## If all additional arcs &amp;lt;math&amp;gt;(s',\cdot)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;(\cdot,t')&amp;lt;/math&amp;gt; are [[Basic flow definitions#Flow-augmenting paths and saturated arcs|saturated]] by some feasible (and obviously maximum) &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt;, the values &amp;lt;math&amp;gt;f(a)+\ell(a)&amp;lt;/math&amp;gt; on all original arcs of &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; obviously form a feasible &amp;lt;math&amp;gt;(s,t)&amp;lt;/math&amp;gt;-flow in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; with respect to &amp;lt;math&amp;gt;\ell&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;. On the other hand, if there is a feasible &amp;lt;math&amp;gt;(s,t)&amp;lt;/math&amp;gt;-flow &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; with respect to &amp;lt;math&amp;gt;\ell&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, the values &amp;lt;math&amp;gt;f(a)-\ell(a)&amp;lt;/math&amp;gt; on all original arcs in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; along with saturating flow values on all additional arcs form a feasible (and obviously maximum) &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;## If all additional arcs &amp;lt;math&amp;gt;(s',\cdot)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;(\cdot,t')&amp;lt;/math&amp;gt; are [[Basic flow definitions#Flow-augmenting paths and saturated arcs|saturated]] by some feasible (and obviously maximum) &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt;, the values &amp;lt;math&amp;gt;f(a)+\ell(a)&amp;lt;/math&amp;gt; on all original arcs of &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; obviously form a feasible &amp;lt;math&amp;gt;(s,t)&amp;lt;/math&amp;gt;-flow in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; with respect to &amp;lt;math&amp;gt;\ell&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;. On the other hand, if there is a feasible &amp;lt;math&amp;gt;(s,t)&amp;lt;/math&amp;gt;-flow &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; with respect to &amp;lt;math&amp;gt;\ell&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, the values &amp;lt;math&amp;gt;f(a)-\ell(a)&amp;lt;/math&amp;gt; on all original arcs in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; along with saturating flow values on all additional arcs form a feasible (and obviously maximum) &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;## Therefore, we may safely terminate the whole procedure if the additional arcs are '''not''' saturated by a maximum &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow. Otherwise, we may construct an instance &amp;lt;math&amp;gt;(G'=(V,A'),s,t,u')&amp;lt;/math&amp;gt; of the standard version as follows: for each original arc &amp;lt;math&amp;gt;a=(v,w)\in A&amp;lt;/math&amp;gt; insert an opposite arc &amp;lt;math&amp;gt;a'=(w,v)&amp;lt;/math&amp;gt; and set &amp;lt;math&amp;gt;u'(a):=u(a)-f(a)\geq 0&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u'(a'):=f(a)-\ell(a)\geq 0&amp;lt;/math&amp;gt;.[[File:Maxflowmultiplesource.png|350px|thumb|right|Max-Flow Problem with several sources and targets]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;## Therefore, we may safely terminate the whole procedure if the additional arcs are '''not''' saturated by a maximum &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow. Otherwise, we may construct an instance &amp;lt;math&amp;gt;(G'=(V,A'),s,t,u')&amp;lt;/math&amp;gt; of the standard version as follows: for each original arc &amp;lt;math&amp;gt;a=(v,w)\in A&amp;lt;/math&amp;gt; insert an opposite arc &amp;lt;math&amp;gt;a'=(w,v)&amp;lt;/math&amp;gt; and set &amp;lt;math&amp;gt;u'(a):=u(a)-f(a)\geq 0&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u'(a'):=f(a)-\ell(a)\geq 0&amp;lt;/math&amp;gt; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(cf. [[Basic flow definitions#Residual network|residual network]])&lt;/ins&gt;.[[File:Maxflowmultiplesource.png|350px|thumb|right|Max-Flow Problem with several sources and targets]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# More than one source and more than one target can be reduced to the standard version by adding a super-source node &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, a super-target node &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, an arc &amp;lt;math&amp;gt;(s,v)&amp;lt;/math&amp;gt; with &amp;quot;infinite&amp;quot; capacity for each source &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt;, and an arc &amp;lt;math&amp;gt;(v,t)&amp;lt;/math&amp;gt; with &amp;quot;infinite&amp;quot; capacity for each target &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; (for example, the sum of the upper bounds of all arcs is sufficiently large to serve as &amp;quot;infinity&amp;quot;).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# More than one source and more than one target can be reduced to the standard version by adding a super-source node &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, a super-target node &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, an arc &amp;lt;math&amp;gt;(s,v)&amp;lt;/math&amp;gt; with &amp;quot;infinite&amp;quot; capacity for each source &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt;, and an arc &amp;lt;math&amp;gt;(v,t)&amp;lt;/math&amp;gt; with &amp;quot;infinite&amp;quot; capacity for each target &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; (for example, the sum of the upper bounds of all arcs is sufficiently large to serve as &amp;quot;infinity&amp;quot;).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Usually, the term '''generalized flow''' is reserved for the specific generalization in which for each node &amp;lt;math&amp;gt;v\in V\setminus\{s,t\}&amp;lt;/math&amp;gt;, the ratio of the total sum of all incoming flow and the total sum of all outgoing flow is given (in the standard version, this ratio is 1 due to the flow conservation condition).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Usually, the term '''generalized flow''' is reserved for the specific generalization in which for each node &amp;lt;math&amp;gt;v\in V\setminus\{s,t\}&amp;lt;/math&amp;gt;, the ratio of the total sum of all incoming flow and the total sum of all outgoing flow is given (in the standard version, this ratio is 1 due to the flow conservation condition).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# The max-flow problem asks for an optimal steady-state flow. However, in many applications, a certain amount of flow is to be sent as soon as possible from the source to the target. It is easy to see that, if the amount of flow is sufficiently large, then an optimal solution is constant most of the time, and the maximum steady-state flow is this constant flow.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# The max-flow problem asks for an optimal steady-state flow. However, in many applications, a certain amount of flow is to be sent as soon as possible from the source to the target. It is easy to see that, if the amount of flow is sufficiently large, then an optimal solution is constant most of the time, and the maximum steady-state flow is this constant flow.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Weihe</name></author>
	</entry>
	<entry>
		<id>https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=Max-Flow_Problems&amp;diff=3655&amp;oldid=prev</id>
		<title>Weihe: /* Generalizations */</title>
		<link rel="alternate" type="text/html" href="https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=Max-Flow_Problems&amp;diff=3655&amp;oldid=prev"/>
		<updated>2015-11-23T08:47:01Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Generalizations&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 08:47, 23 November 2015&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l32&quot;&gt;Line 32:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 32:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;##:For all arcs &amp;lt;math&amp;gt;a\in A&amp;lt;/math&amp;gt;, we set &amp;lt;math&amp;gt;u'(a):=u(a)-\ell(a)&amp;lt;/math&amp;gt;. Finally, we set &amp;lt;math&amp;gt;u'(t,s):=+\infty&amp;lt;/math&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;##:For all arcs &amp;lt;math&amp;gt;a\in A&amp;lt;/math&amp;gt;, we set &amp;lt;math&amp;gt;u'(a):=u(a)-\ell(a)&amp;lt;/math&amp;gt;. Finally, we set &amp;lt;math&amp;gt;u'(t,s):=+\infty&amp;lt;/math&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;## If all additional arcs &amp;lt;math&amp;gt;(s',\cdot)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;(\cdot,t')&amp;lt;/math&amp;gt; are [[Basic flow definitions#Flow-augmenting paths and saturated arcs|saturated]] by some feasible (and obviously maximum) &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt;, the values &amp;lt;math&amp;gt;f(a)+\ell(a)&amp;lt;/math&amp;gt; on all original arcs of &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; obviously form a feasible &amp;lt;math&amp;gt;(s,t)&amp;lt;/math&amp;gt;-flow in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; with respect to &amp;lt;math&amp;gt;\ell&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;. On the other hand, if there is a feasible &amp;lt;math&amp;gt;(s,t)&amp;lt;/math&amp;gt;-flow &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; with respect to &amp;lt;math&amp;gt;\ell&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, the values &amp;lt;math&amp;gt;f(a)-\ell(a)&amp;lt;/math&amp;gt; on all original arcs in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; along with saturating flow values on all additional arcs form a feasible (and obviously maximum) &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;## If all additional arcs &amp;lt;math&amp;gt;(s',\cdot)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;(\cdot,t')&amp;lt;/math&amp;gt; are [[Basic flow definitions#Flow-augmenting paths and saturated arcs|saturated]] by some feasible (and obviously maximum) &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt;, the values &amp;lt;math&amp;gt;f(a)+\ell(a)&amp;lt;/math&amp;gt; on all original arcs of &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; obviously form a feasible &amp;lt;math&amp;gt;(s,t)&amp;lt;/math&amp;gt;-flow in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; with respect to &amp;lt;math&amp;gt;\ell&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;. On the other hand, if there is a feasible &amp;lt;math&amp;gt;(s,t)&amp;lt;/math&amp;gt;-flow &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; with respect to &amp;lt;math&amp;gt;\ell&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, the values &amp;lt;math&amp;gt;f(a)-\ell(a)&amp;lt;/math&amp;gt; on all original arcs in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; along with saturating flow values on all additional arcs form a feasible (and obviously maximum) &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;## Therefore, we may safely terminate the whole procedure if the additional arcs are '''not''' saturated by a maximum &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow. Otherwise, we may construct an instance &amp;lt;math&amp;gt;(G'=(V,A'),s,t,u')&amp;lt;/math&amp;gt; of the standard version as follows: for each original &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;arc &amp;lt;math&amp;gt;a\in A&amp;lt;/math&amp;gt;, for each &lt;/del&gt;arc &amp;lt;math&amp;gt;a=(v,w)\in A&amp;lt;/math&amp;gt; insert an opposite arc &amp;lt;math&amp;gt;a'=(w,v)&amp;lt;/math&amp;gt; and set &amp;lt;math&amp;gt;u'(a):=u(a)-f(a)\geq 0&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u'(a'):=f(a)-\ell(a)\geq 0&amp;lt;/math&amp;gt;.[[File:Maxflowmultiplesource.png|350px|thumb|right|Max-Flow Problem with several sources and targets]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;## Therefore, we may safely terminate the whole procedure if the additional arcs are '''not''' saturated by a maximum &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow. Otherwise, we may construct an instance &amp;lt;math&amp;gt;(G'=(V,A'),s,t,u')&amp;lt;/math&amp;gt; of the standard version as follows: for each original arc &amp;lt;math&amp;gt;a=(v,w)\in A&amp;lt;/math&amp;gt; insert an opposite arc &amp;lt;math&amp;gt;a'=(w,v)&amp;lt;/math&amp;gt; and set &amp;lt;math&amp;gt;u'(a):=u(a)-f(a)\geq 0&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u'(a'):=f(a)-\ell(a)\geq 0&amp;lt;/math&amp;gt;.[[File:Maxflowmultiplesource.png|350px|thumb|right|Max-Flow Problem with several sources and targets]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# More than one source and more than one target can be reduced to the standard version by adding a super-source node &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, a super-target node &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, an arc &amp;lt;math&amp;gt;(s,v)&amp;lt;/math&amp;gt; with &amp;quot;infinite&amp;quot; capacity for each source &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt;, and an arc &amp;lt;math&amp;gt;(v,t)&amp;lt;/math&amp;gt; with &amp;quot;infinite&amp;quot; capacity for each target &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; (for example, the sum of the upper bounds of all arcs is sufficiently large to serve as &amp;quot;infinity&amp;quot;).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# More than one source and more than one target can be reduced to the standard version by adding a super-source node &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, a super-target node &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, an arc &amp;lt;math&amp;gt;(s,v)&amp;lt;/math&amp;gt; with &amp;quot;infinite&amp;quot; capacity for each source &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt;, and an arc &amp;lt;math&amp;gt;(v,t)&amp;lt;/math&amp;gt; with &amp;quot;infinite&amp;quot; capacity for each target &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; (for example, the sum of the upper bounds of all arcs is sufficiently large to serve as &amp;quot;infinity&amp;quot;).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Usually, the term '''generalized flow''' is reserved for the specific generalization in which for each node &amp;lt;math&amp;gt;v\in V\setminus\{s,t\}&amp;lt;/math&amp;gt;, the ratio of the total sum of all incoming flow and the total sum of all outgoing flow is given (in the standard version, this ratio is 1 due to the flow conservation condition).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Usually, the term '''generalized flow''' is reserved for the specific generalization in which for each node &amp;lt;math&amp;gt;v\in V\setminus\{s,t\}&amp;lt;/math&amp;gt;, the ratio of the total sum of all incoming flow and the total sum of all outgoing flow is given (in the standard version, this ratio is 1 due to the flow conservation condition).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# The max-flow problem asks for an optimal steady-state flow. However, in many applications, a certain amount of flow is to be sent as soon as possible from the source to the target. It is easy to see that, if the amount of flow is sufficiently large, then an optimal solution is constant most of the time, and the maximum steady-state flow is this constant flow.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# The max-flow problem asks for an optimal steady-state flow. However, in many applications, a certain amount of flow is to be sent as soon as possible from the source to the target. It is easy to see that, if the amount of flow is sufficiently large, then an optimal solution is constant most of the time, and the maximum steady-state flow is this constant flow.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Weihe</name></author>
	</entry>
	<entry>
		<id>https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=Max-Flow_Problems&amp;diff=3654&amp;oldid=prev</id>
		<title>Weihe: /* Generalizations */</title>
		<link rel="alternate" type="text/html" href="https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=Max-Flow_Problems&amp;diff=3654&amp;oldid=prev"/>
		<updated>2015-11-23T08:45:55Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Generalizations&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 08:45, 23 November 2015&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l32&quot;&gt;Line 32:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 32:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;##:For all arcs &amp;lt;math&amp;gt;a\in A&amp;lt;/math&amp;gt;, we set &amp;lt;math&amp;gt;u'(a):=u(a)-\ell(a)&amp;lt;/math&amp;gt;. Finally, we set &amp;lt;math&amp;gt;u'(t,s):=+\infty&amp;lt;/math&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;##:For all arcs &amp;lt;math&amp;gt;a\in A&amp;lt;/math&amp;gt;, we set &amp;lt;math&amp;gt;u'(a):=u(a)-\ell(a)&amp;lt;/math&amp;gt;. Finally, we set &amp;lt;math&amp;gt;u'(t,s):=+\infty&amp;lt;/math&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;## If all additional arcs &amp;lt;math&amp;gt;(s',\cdot)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;(\cdot,t')&amp;lt;/math&amp;gt; are [[Basic flow definitions#Flow-augmenting paths and saturated arcs|saturated]] by some feasible (and obviously maximum) &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt;, the values &amp;lt;math&amp;gt;f(a)+\ell(a)&amp;lt;/math&amp;gt; on all original arcs of &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; obviously form a feasible &amp;lt;math&amp;gt;(s,t)&amp;lt;/math&amp;gt;-flow in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; with respect to &amp;lt;math&amp;gt;\ell&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;. On the other hand, if there is a feasible &amp;lt;math&amp;gt;(s,t)&amp;lt;/math&amp;gt;-flow &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; with respect to &amp;lt;math&amp;gt;\ell&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, the values &amp;lt;math&amp;gt;f(a)-\ell(a)&amp;lt;/math&amp;gt; on all original arcs in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; along with saturating flow values on all additional arcs form a feasible (and obviously maximum) &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;## If all additional arcs &amp;lt;math&amp;gt;(s',\cdot)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;(\cdot,t')&amp;lt;/math&amp;gt; are [[Basic flow definitions#Flow-augmenting paths and saturated arcs|saturated]] by some feasible (and obviously maximum) &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt;, the values &amp;lt;math&amp;gt;f(a)+\ell(a)&amp;lt;/math&amp;gt; on all original arcs of &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; obviously form a feasible &amp;lt;math&amp;gt;(s,t)&amp;lt;/math&amp;gt;-flow in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; with respect to &amp;lt;math&amp;gt;\ell&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;. On the other hand, if there is a feasible &amp;lt;math&amp;gt;(s,t)&amp;lt;/math&amp;gt;-flow &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; with respect to &amp;lt;math&amp;gt;\ell&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, the values &amp;lt;math&amp;gt;f(a)-\ell(a)&amp;lt;/math&amp;gt; on all original arcs in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; along with saturating flow values on all additional arcs form a feasible (and obviously maximum) &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;## Therefore, we may safely terminate the whole procedure if the additional arcs are '''not''' saturated by a maximum &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow. Otherwise, we may &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;use the values &lt;/del&gt;&amp;lt;math&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;f&lt;/del&gt;(&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;a&lt;/del&gt;)&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;+\ell(a&lt;/del&gt;)&amp;lt;/math&amp;gt; in &amp;lt;math&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;G&lt;/del&gt;&amp;lt;/math&amp;gt; &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;as &lt;/del&gt;an &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;initial feasible &lt;/del&gt;&amp;lt;math&amp;gt;(&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;s&lt;/del&gt;,&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;t&lt;/del&gt;)&amp;lt;/math&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;-flow for the computation of a maximum &lt;/del&gt;&amp;lt;math&amp;gt;(&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;s,t&lt;/del&gt;)&amp;lt;/math&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;-flow in &lt;/del&gt;&amp;lt;math&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;G&lt;/del&gt;&amp;lt;/math&amp;gt;.[[File:Maxflowmultiplesource.png|350px|thumb|right|Max-Flow Problem with several sources and targets]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;## Therefore, we may safely terminate the whole procedure if the additional arcs are '''not''' saturated by a maximum &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow. Otherwise, we may &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;construct an instance &lt;/ins&gt;&amp;lt;math&amp;gt;(&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;G'=(V,A'&lt;/ins&gt;)&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;,s,t,u'&lt;/ins&gt;)&amp;lt;/math&amp;gt; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;of the standard version as follows: for each original arc &amp;lt;math&amp;gt;a\&lt;/ins&gt;in &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;A&lt;/ins&gt;&amp;lt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;/&lt;/ins&gt;math&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, for each arc &amp;lt;math&amp;gt;a=(v,w)\in A&lt;/ins&gt;&amp;lt;/math&amp;gt; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;insert &lt;/ins&gt;an &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;opposite arc &lt;/ins&gt;&amp;lt;math&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;a'=&lt;/ins&gt;(&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;w&lt;/ins&gt;,&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;v&lt;/ins&gt;)&amp;lt;/math&amp;gt; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;and set &lt;/ins&gt;&amp;lt;math&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;u'&lt;/ins&gt;(&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;a):=u(a)-f(a&lt;/ins&gt;)&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;\geq 0&lt;/ins&gt;&amp;lt;/math&amp;gt; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;and &lt;/ins&gt;&amp;lt;math&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;u'(a'):=f(a)-\ell(a)\geq 0&lt;/ins&gt;&amp;lt;/math&amp;gt;.[[File:Maxflowmultiplesource.png|350px|thumb|right|Max-Flow Problem with several sources and targets]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# More than one source and more than one target can be reduced to the standard version by adding a super-source node &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, a super-target node &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, an arc &amp;lt;math&amp;gt;(s,v)&amp;lt;/math&amp;gt; with &amp;quot;infinite&amp;quot; capacity for each source &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt;, and an arc &amp;lt;math&amp;gt;(v,t)&amp;lt;/math&amp;gt; with &amp;quot;infinite&amp;quot; capacity for each target &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; (for example, the sum of the upper bounds of all arcs is sufficiently large to serve as &amp;quot;infinity&amp;quot;).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# More than one source and more than one target can be reduced to the standard version by adding a super-source node &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, a super-target node &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, an arc &amp;lt;math&amp;gt;(s,v)&amp;lt;/math&amp;gt; with &amp;quot;infinite&amp;quot; capacity for each source &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt;, and an arc &amp;lt;math&amp;gt;(v,t)&amp;lt;/math&amp;gt; with &amp;quot;infinite&amp;quot; capacity for each target &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; (for example, the sum of the upper bounds of all arcs is sufficiently large to serve as &amp;quot;infinity&amp;quot;).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Usually, the term '''generalized flow''' is reserved for the specific generalization in which for each node &amp;lt;math&amp;gt;v\in V\setminus\{s,t\}&amp;lt;/math&amp;gt;, the ratio of the total sum of all incoming flow and the total sum of all outgoing flow is given (in the standard version, this ratio is 1 due to the flow conservation condition).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Usually, the term '''generalized flow''' is reserved for the specific generalization in which for each node &amp;lt;math&amp;gt;v\in V\setminus\{s,t\}&amp;lt;/math&amp;gt;, the ratio of the total sum of all incoming flow and the total sum of all outgoing flow is given (in the standard version, this ratio is 1 due to the flow conservation condition).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# The max-flow problem asks for an optimal steady-state flow. However, in many applications, a certain amount of flow is to be sent as soon as possible from the source to the target. It is easy to see that, if the amount of flow is sufficiently large, then an optimal solution is constant most of the time, and the maximum steady-state flow is this constant flow.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# The max-flow problem asks for an optimal steady-state flow. However, in many applications, a certain amount of flow is to be sent as soon as possible from the source to the target. It is easy to see that, if the amount of flow is sufficiently large, then an optimal solution is constant most of the time, and the maximum steady-state flow is this constant flow.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Weihe</name></author>
	</entry>
	<entry>
		<id>https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=Max-Flow_Problems&amp;diff=3653&amp;oldid=prev</id>
		<title>Weihe: /* Generalizations */</title>
		<link rel="alternate" type="text/html" href="https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=Max-Flow_Problems&amp;diff=3653&amp;oldid=prev"/>
		<updated>2015-11-23T08:38:11Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Generalizations&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 08:38, 23 November 2015&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l32&quot;&gt;Line 32:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 32:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;##:For all arcs &amp;lt;math&amp;gt;a\in A&amp;lt;/math&amp;gt;, we set &amp;lt;math&amp;gt;u'(a):=u(a)-\ell(a)&amp;lt;/math&amp;gt;. Finally, we set &amp;lt;math&amp;gt;u'(t,s):=+\infty&amp;lt;/math&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;##:For all arcs &amp;lt;math&amp;gt;a\in A&amp;lt;/math&amp;gt;, we set &amp;lt;math&amp;gt;u'(a):=u(a)-\ell(a)&amp;lt;/math&amp;gt;. Finally, we set &amp;lt;math&amp;gt;u'(t,s):=+\infty&amp;lt;/math&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;## If all additional arcs &amp;lt;math&amp;gt;(s',\cdot)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;(\cdot,t')&amp;lt;/math&amp;gt; are [[Basic flow definitions#Flow-augmenting paths and saturated arcs|saturated]] by some feasible (and obviously maximum) &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt;, the values &amp;lt;math&amp;gt;f(a)+\ell(a)&amp;lt;/math&amp;gt; on all original arcs of &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; obviously form a feasible &amp;lt;math&amp;gt;(s,t)&amp;lt;/math&amp;gt;-flow in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; with respect to &amp;lt;math&amp;gt;\ell&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;. On the other hand, if there is a feasible &amp;lt;math&amp;gt;(s,t)&amp;lt;/math&amp;gt;-flow &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; with respect to &amp;lt;math&amp;gt;\ell&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, the values &amp;lt;math&amp;gt;f(a)-\ell(a)&amp;lt;/math&amp;gt; on all original arcs in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; along with saturating flow values on all additional arcs form a feasible (and obviously maximum) &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;## If all additional arcs &amp;lt;math&amp;gt;(s',\cdot)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;(\cdot,t')&amp;lt;/math&amp;gt; are [[Basic flow definitions#Flow-augmenting paths and saturated arcs|saturated]] by some feasible (and obviously maximum) &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt;, the values &amp;lt;math&amp;gt;f(a)+\ell(a)&amp;lt;/math&amp;gt; on all original arcs of &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; obviously form a feasible &amp;lt;math&amp;gt;(s,t)&amp;lt;/math&amp;gt;-flow in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; with respect to &amp;lt;math&amp;gt;\ell&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;. On the other hand, if there is a feasible &amp;lt;math&amp;gt;(s,t)&amp;lt;/math&amp;gt;-flow &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; with respect to &amp;lt;math&amp;gt;\ell&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, the values &amp;lt;math&amp;gt;f(a)-\ell(a)&amp;lt;/math&amp;gt; on all original arcs in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; along with saturating flow values on all additional arcs form a feasible (and obviously maximum) &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;## Therefore, we may safely terminate the whole procedure if the additional arcs are '''not''' saturated by a maximum &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow. Otherwise, we may use the values &amp;lt;math&amp;gt;f(a)+\ell(a)&amp;lt;/math&amp;gt; in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; as an initial flow for the computation of a maximum &amp;lt;math&amp;gt;(s,t)&amp;lt;/math&amp;gt;-flow in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt;.[[File:Maxflowmultiplesource.png|350px|thumb|right|Max-Flow Problem with several sources and targets]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;## Therefore, we may safely terminate the whole procedure if the additional arcs are '''not''' saturated by a maximum &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow. Otherwise, we may use the values &amp;lt;math&amp;gt;f(a)+\ell(a)&amp;lt;/math&amp;gt; in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; as an initial &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;feasible &amp;lt;math&amp;gt;(s,t)&amp;lt;/math&amp;gt;-&lt;/ins&gt;flow for the computation of a maximum &amp;lt;math&amp;gt;(s,t)&amp;lt;/math&amp;gt;-flow in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt;.[[File:Maxflowmultiplesource.png|350px|thumb|right|Max-Flow Problem with several sources and targets]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# More than one source and more than one target can be reduced to the standard version by adding a super-source node &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, a super-target node &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, an arc &amp;lt;math&amp;gt;(s,v)&amp;lt;/math&amp;gt; with &amp;quot;infinite&amp;quot; capacity for each source &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt;, and an arc &amp;lt;math&amp;gt;(v,t)&amp;lt;/math&amp;gt; with &amp;quot;infinite&amp;quot; capacity for each target &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; (for example, the sum of the upper bounds of all arcs is sufficiently large to serve as &amp;quot;infinity&amp;quot;).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# More than one source and more than one target can be reduced to the standard version by adding a super-source node &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, a super-target node &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, an arc &amp;lt;math&amp;gt;(s,v)&amp;lt;/math&amp;gt; with &amp;quot;infinite&amp;quot; capacity for each source &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt;, and an arc &amp;lt;math&amp;gt;(v,t)&amp;lt;/math&amp;gt; with &amp;quot;infinite&amp;quot; capacity for each target &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; (for example, the sum of the upper bounds of all arcs is sufficiently large to serve as &amp;quot;infinity&amp;quot;).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Usually, the term '''generalized flow''' is reserved for the specific generalization in which for each node &amp;lt;math&amp;gt;v\in V\setminus\{s,t\}&amp;lt;/math&amp;gt;, the ratio of the total sum of all incoming flow and the total sum of all outgoing flow is given (in the standard version, this ratio is 1 due to the flow conservation condition).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Usually, the term '''generalized flow''' is reserved for the specific generalization in which for each node &amp;lt;math&amp;gt;v\in V\setminus\{s,t\}&amp;lt;/math&amp;gt;, the ratio of the total sum of all incoming flow and the total sum of all outgoing flow is given (in the standard version, this ratio is 1 due to the flow conservation condition).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# The max-flow problem asks for an optimal steady-state flow. However, in many applications, a certain amount of flow is to be sent as soon as possible from the source to the target. It is easy to see that, if the amount of flow is sufficiently large, then an optimal solution is constant most of the time, and the maximum steady-state flow is this constant flow.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# The max-flow problem asks for an optimal steady-state flow. However, in many applications, a certain amount of flow is to be sent as soon as possible from the source to the target. It is easy to see that, if the amount of flow is sufficiently large, then an optimal solution is constant most of the time, and the maximum steady-state flow is this constant flow.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Weihe</name></author>
	</entry>
	<entry>
		<id>https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=Max-Flow_Problems&amp;diff=3652&amp;oldid=prev</id>
		<title>Weihe: /* Generalizations */</title>
		<link rel="alternate" type="text/html" href="https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=Max-Flow_Problems&amp;diff=3652&amp;oldid=prev"/>
		<updated>2015-11-23T08:37:38Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Generalizations&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 08:37, 23 November 2015&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l31&quot;&gt;Line 31:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 31:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;##:&amp;lt;math&amp;gt;u'(s',v):=\sum_{(w,v)\in A}\ell(w,v)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u'(v,t'):=\sum_{(v,w)\in A} \ell(v,w)&amp;lt;/math&amp;gt;.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;##:&amp;lt;math&amp;gt;u'(s',v):=\sum_{(w,v)\in A}\ell(w,v)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u'(v,t'):=\sum_{(v,w)\in A} \ell(v,w)&amp;lt;/math&amp;gt;.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;##:For all arcs &amp;lt;math&amp;gt;a\in A&amp;lt;/math&amp;gt;, we set &amp;lt;math&amp;gt;u'(a):=u(a)-\ell(a)&amp;lt;/math&amp;gt;. Finally, we set &amp;lt;math&amp;gt;u'(t,s):=+\infty&amp;lt;/math&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;##:For all arcs &amp;lt;math&amp;gt;a\in A&amp;lt;/math&amp;gt;, we set &amp;lt;math&amp;gt;u'(a):=u(a)-\ell(a)&amp;lt;/math&amp;gt;. Finally, we set &amp;lt;math&amp;gt;u'(t,s):=+\infty&amp;lt;/math&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;## If all additional arcs &amp;lt;math&amp;gt;(s',\cdot)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;(\cdot,t')&amp;lt;/math&amp;gt; are [[Basic flow definitions#Flow-augmenting paths and saturated arcs|saturated]] by some feasible (and obviously maximum) &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt;, the values &amp;lt;math&amp;gt;f(a)+\ell(a)&amp;lt;/math&amp;gt; on all original arcs of &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; obviously form a feasible &amp;lt;math&amp;gt;(s,t)&amp;lt;/math&amp;gt;-flow in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; with respect to &amp;lt;math&amp;gt;\ell&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;. On the other hand, if there is a feasible &amp;lt;math&amp;gt;(s,t)&amp;lt;/math&amp;gt;-flow &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; with respect to &amp;lt;math&amp;gt;\ell&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, the values &amp;lt;math&amp;gt;f(a)-\ell(a)&amp;lt;/math&amp;gt; on all original arcs in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; along with saturating flow values on all additional arcs form a feasible (and obviously maximum) &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow. Therefore, we may safely terminate the whole procedure if the additional arcs are '''not''' saturated by a maximum &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;## If all additional arcs &amp;lt;math&amp;gt;(s',\cdot)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;(\cdot,t')&amp;lt;/math&amp;gt; are [[Basic flow definitions#Flow-augmenting paths and saturated arcs|saturated]] by some feasible (and obviously maximum) &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt;, the values &amp;lt;math&amp;gt;f(a)+\ell(a)&amp;lt;/math&amp;gt; on all original arcs of &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; obviously form a feasible &amp;lt;math&amp;gt;(s,t)&amp;lt;/math&amp;gt;-flow in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; with respect to &amp;lt;math&amp;gt;\ell&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;. On the other hand, if there is a feasible &amp;lt;math&amp;gt;(s,t)&amp;lt;/math&amp;gt;-flow &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; with respect to &amp;lt;math&amp;gt;\ell&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, the values &amp;lt;math&amp;gt;f(a)-\ell(a)&amp;lt;/math&amp;gt; on all original arcs in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; along with saturating flow values on all additional arcs form a feasible (and obviously maximum) &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;## &lt;/del&gt;Otherwise, we may use the values &amp;lt;math&amp;gt;f(a)+\ell(a)&amp;lt;/math&amp;gt; in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; as an initial flow for the computation of a maximum &amp;lt;math&amp;gt;(s,t)&amp;lt;/math&amp;gt;-flow in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt;.[[File:Maxflowmultiplesource.png|350px|thumb|right|Max-Flow Problem with several sources and targets]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;## &lt;/ins&gt;Therefore, we may safely terminate the whole procedure if the additional arcs are '''not''' saturated by a maximum &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow. Otherwise, we may use the values &amp;lt;math&amp;gt;f(a)+\ell(a)&amp;lt;/math&amp;gt; in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; as an initial flow for the computation of a maximum &amp;lt;math&amp;gt;(s,t)&amp;lt;/math&amp;gt;-flow in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt;.[[File:Maxflowmultiplesource.png|350px|thumb|right|Max-Flow Problem with several sources and targets]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# More than one source and more than one target can be reduced to the standard version by adding a super-source node &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, a super-target node &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, an arc &amp;lt;math&amp;gt;(s,v)&amp;lt;/math&amp;gt; with &amp;quot;infinite&amp;quot; capacity for each source &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt;, and an arc &amp;lt;math&amp;gt;(v,t)&amp;lt;/math&amp;gt; with &amp;quot;infinite&amp;quot; capacity for each target &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; (for example, the sum of the upper bounds of all arcs is sufficiently large to serve as &amp;quot;infinity&amp;quot;).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# More than one source and more than one target can be reduced to the standard version by adding a super-source node &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, a super-target node &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, an arc &amp;lt;math&amp;gt;(s,v)&amp;lt;/math&amp;gt; with &amp;quot;infinite&amp;quot; capacity for each source &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt;, and an arc &amp;lt;math&amp;gt;(v,t)&amp;lt;/math&amp;gt; with &amp;quot;infinite&amp;quot; capacity for each target &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; (for example, the sum of the upper bounds of all arcs is sufficiently large to serve as &amp;quot;infinity&amp;quot;).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Usually, the term '''generalized flow''' is reserved for the specific generalization in which for each node &amp;lt;math&amp;gt;v\in V\setminus\{s,t\}&amp;lt;/math&amp;gt;, the ratio of the total sum of all incoming flow and the total sum of all outgoing flow is given (in the standard version, this ratio is 1 due to the flow conservation condition).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Usually, the term '''generalized flow''' is reserved for the specific generalization in which for each node &amp;lt;math&amp;gt;v\in V\setminus\{s,t\}&amp;lt;/math&amp;gt;, the ratio of the total sum of all incoming flow and the total sum of all outgoing flow is given (in the standard version, this ratio is 1 due to the flow conservation condition).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# The max-flow problem asks for an optimal steady-state flow. However, in many applications, a certain amount of flow is to be sent as soon as possible from the source to the target. It is easy to see that, if the amount of flow is sufficiently large, then an optimal solution is constant most of the time, and the maximum steady-state flow is this constant flow.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# The max-flow problem asks for an optimal steady-state flow. However, in many applications, a certain amount of flow is to be sent as soon as possible from the source to the target. It is easy to see that, if the amount of flow is sufficiently large, then an optimal solution is constant most of the time, and the maximum steady-state flow is this constant flow.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Weihe</name></author>
	</entry>
	<entry>
		<id>https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=Max-Flow_Problems&amp;diff=3651&amp;oldid=prev</id>
		<title>Weihe: /* Generalizations */</title>
		<link rel="alternate" type="text/html" href="https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=Max-Flow_Problems&amp;diff=3651&amp;oldid=prev"/>
		<updated>2015-11-23T08:36:32Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Generalizations&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 08:36, 23 November 2015&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l31&quot;&gt;Line 31:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 31:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;##:&amp;lt;math&amp;gt;u'(s',v):=\sum_{(w,v)\in A}\ell(w,v)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u'(v,t'):=\sum_{(v,w)\in A} \ell(v,w)&amp;lt;/math&amp;gt;.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;##:&amp;lt;math&amp;gt;u'(s',v):=\sum_{(w,v)\in A}\ell(w,v)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u'(v,t'):=\sum_{(v,w)\in A} \ell(v,w)&amp;lt;/math&amp;gt;.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;##:For all arcs &amp;lt;math&amp;gt;a\in A&amp;lt;/math&amp;gt;, we set &amp;lt;math&amp;gt;u'(a):=u(a)-\ell(a)&amp;lt;/math&amp;gt;. Finally, we set &amp;lt;math&amp;gt;u'(t,s):=+\infty&amp;lt;/math&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;##:For all arcs &amp;lt;math&amp;gt;a\in A&amp;lt;/math&amp;gt;, we set &amp;lt;math&amp;gt;u'(a):=u(a)-\ell(a)&amp;lt;/math&amp;gt;. Finally, we set &amp;lt;math&amp;gt;u'(t,s):=+\infty&amp;lt;/math&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;## If all additional arcs &amp;lt;math&amp;gt;(s',\cdot)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;(\cdot,t')&amp;lt;/math&amp;gt; are [[Basic flow definitions|saturated]] by some feasible (and obviously maximum) &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt;, the values &amp;lt;math&amp;gt;f(a)+\ell(a)&amp;lt;/math&amp;gt; on all original arcs of &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; obviously form a feasible &amp;lt;math&amp;gt;(s,t)&amp;lt;/math&amp;gt;-flow in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; with respect to &amp;lt;math&amp;gt;\ell&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;. On the other hand, if there is a feasible &amp;lt;math&amp;gt;(s,t)&amp;lt;/math&amp;gt;-flow &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; with respect to &amp;lt;math&amp;gt;\ell&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, the values &amp;lt;math&amp;gt;f(a)-\ell(a)&amp;lt;/math&amp;gt; on all original arcs in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; along with saturating flow values on all additional arcs form a feasible (and obviously maximum) &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow. Therefore, we may safely terminate the whole procedure if the additional arcs are '''not''' saturated by a maximum &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;## If all additional arcs &amp;lt;math&amp;gt;(s',\cdot)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;(\cdot,t')&amp;lt;/math&amp;gt; are [[Basic flow definitions&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;#Flow-augmenting paths and saturated arcs&lt;/ins&gt;|saturated]] by some feasible (and obviously maximum) &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt;, the values &amp;lt;math&amp;gt;f(a)+\ell(a)&amp;lt;/math&amp;gt; on all original arcs of &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; obviously form a feasible &amp;lt;math&amp;gt;(s,t)&amp;lt;/math&amp;gt;-flow in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; with respect to &amp;lt;math&amp;gt;\ell&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;. On the other hand, if there is a feasible &amp;lt;math&amp;gt;(s,t)&amp;lt;/math&amp;gt;-flow &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; with respect to &amp;lt;math&amp;gt;\ell&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, the values &amp;lt;math&amp;gt;f(a)-\ell(a)&amp;lt;/math&amp;gt; on all original arcs in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; along with saturating flow values on all additional arcs form a feasible (and obviously maximum) &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow. Therefore, we may safely terminate the whole procedure if the additional arcs are '''not''' saturated by a maximum &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;## Otherwise, we may use the values &amp;lt;math&amp;gt;f(a)+\ell(a)&amp;lt;/math&amp;gt; in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; as an initial flow for the computation of a maximum &amp;lt;math&amp;gt;(s,t)&amp;lt;/math&amp;gt;-flow in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt;.[[File:Maxflowmultiplesource.png|350px|thumb|right|Max-Flow Problem with several sources and targets]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;## Otherwise, we may use the values &amp;lt;math&amp;gt;f(a)+\ell(a)&amp;lt;/math&amp;gt; in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; as an initial flow for the computation of a maximum &amp;lt;math&amp;gt;(s,t)&amp;lt;/math&amp;gt;-flow in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt;.[[File:Maxflowmultiplesource.png|350px|thumb|right|Max-Flow Problem with several sources and targets]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# More than one source and more than one target can be reduced to the standard version by adding a super-source node &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, a super-target node &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, an arc &amp;lt;math&amp;gt;(s,v)&amp;lt;/math&amp;gt; with &amp;quot;infinite&amp;quot; capacity for each source &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt;, and an arc &amp;lt;math&amp;gt;(v,t)&amp;lt;/math&amp;gt; with &amp;quot;infinite&amp;quot; capacity for each target &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; (for example, the sum of the upper bounds of all arcs is sufficiently large to serve as &amp;quot;infinity&amp;quot;).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# More than one source and more than one target can be reduced to the standard version by adding a super-source node &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, a super-target node &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, an arc &amp;lt;math&amp;gt;(s,v)&amp;lt;/math&amp;gt; with &amp;quot;infinite&amp;quot; capacity for each source &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt;, and an arc &amp;lt;math&amp;gt;(v,t)&amp;lt;/math&amp;gt; with &amp;quot;infinite&amp;quot; capacity for each target &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; (for example, the sum of the upper bounds of all arcs is sufficiently large to serve as &amp;quot;infinity&amp;quot;).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Usually, the term '''generalized flow''' is reserved for the specific generalization in which for each node &amp;lt;math&amp;gt;v\in V\setminus\{s,t\}&amp;lt;/math&amp;gt;, the ratio of the total sum of all incoming flow and the total sum of all outgoing flow is given (in the standard version, this ratio is 1 due to the flow conservation condition).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Usually, the term '''generalized flow''' is reserved for the specific generalization in which for each node &amp;lt;math&amp;gt;v\in V\setminus\{s,t\}&amp;lt;/math&amp;gt;, the ratio of the total sum of all incoming flow and the total sum of all outgoing flow is given (in the standard version, this ratio is 1 due to the flow conservation condition).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# The max-flow problem asks for an optimal steady-state flow. However, in many applications, a certain amount of flow is to be sent as soon as possible from the source to the target. It is easy to see that, if the amount of flow is sufficiently large, then an optimal solution is constant most of the time, and the maximum steady-state flow is this constant flow.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# The max-flow problem asks for an optimal steady-state flow. However, in many applications, a certain amount of flow is to be sent as soon as possible from the source to the target. It is easy to see that, if the amount of flow is sufficiently large, then an optimal solution is constant most of the time, and the maximum steady-state flow is this constant flow.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Weihe</name></author>
	</entry>
	<entry>
		<id>https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=Max-Flow_Problems&amp;diff=3650&amp;oldid=prev</id>
		<title>Weihe: /* Generalizations */</title>
		<link rel="alternate" type="text/html" href="https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=Max-Flow_Problems&amp;diff=3650&amp;oldid=prev"/>
		<updated>2015-11-23T08:34:31Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Generalizations&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 08:34, 23 November 2015&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l32&quot;&gt;Line 32:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 32:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;##:For all arcs &amp;lt;math&amp;gt;a\in A&amp;lt;/math&amp;gt;, we set &amp;lt;math&amp;gt;u'(a):=u(a)-\ell(a)&amp;lt;/math&amp;gt;. Finally, we set &amp;lt;math&amp;gt;u'(t,s):=+\infty&amp;lt;/math&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;##:For all arcs &amp;lt;math&amp;gt;a\in A&amp;lt;/math&amp;gt;, we set &amp;lt;math&amp;gt;u'(a):=u(a)-\ell(a)&amp;lt;/math&amp;gt;. Finally, we set &amp;lt;math&amp;gt;u'(t,s):=+\infty&amp;lt;/math&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;## If all additional arcs &amp;lt;math&amp;gt;(s',\cdot)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;(\cdot,t')&amp;lt;/math&amp;gt; are [[Basic flow definitions|saturated]] by some feasible (and obviously maximum) &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt;, the values &amp;lt;math&amp;gt;f(a)+\ell(a)&amp;lt;/math&amp;gt; on all original arcs of &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; obviously form a feasible &amp;lt;math&amp;gt;(s,t)&amp;lt;/math&amp;gt;-flow in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; with respect to &amp;lt;math&amp;gt;\ell&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;. On the other hand, if there is a feasible &amp;lt;math&amp;gt;(s,t)&amp;lt;/math&amp;gt;-flow &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; with respect to &amp;lt;math&amp;gt;\ell&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, the values &amp;lt;math&amp;gt;f(a)-\ell(a)&amp;lt;/math&amp;gt; on all original arcs in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; along with saturating flow values on all additional arcs form a feasible (and obviously maximum) &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow. Therefore, we may safely terminate the whole procedure if the additional arcs are '''not''' saturated by a maximum &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;## If all additional arcs &amp;lt;math&amp;gt;(s',\cdot)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;(\cdot,t')&amp;lt;/math&amp;gt; are [[Basic flow definitions|saturated]] by some feasible (and obviously maximum) &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt;, the values &amp;lt;math&amp;gt;f(a)+\ell(a)&amp;lt;/math&amp;gt; on all original arcs of &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; obviously form a feasible &amp;lt;math&amp;gt;(s,t)&amp;lt;/math&amp;gt;-flow in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; with respect to &amp;lt;math&amp;gt;\ell&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;. On the other hand, if there is a feasible &amp;lt;math&amp;gt;(s,t)&amp;lt;/math&amp;gt;-flow &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; with respect to &amp;lt;math&amp;gt;\ell&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, the values &amp;lt;math&amp;gt;f(a)-\ell(a)&amp;lt;/math&amp;gt; on all original arcs in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; along with saturating flow values on all additional arcs form a feasible (and obviously maximum) &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow. Therefore, we may safely terminate the whole procedure if the additional arcs are '''not''' saturated by a maximum &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;## Otherwise, we may use the values &amp;lt;math&amp;gt;f(a)+\ell&amp;lt;/math&amp;gt; in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; as an initial flow for the computation of a maximum &amp;lt;math&amp;gt;(s,t)&amp;lt;/math&amp;gt;-flow in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt;.[[File:Maxflowmultiplesource.png|350px|thumb|right|Max-Flow Problem with several sources and targets]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;## Otherwise, we may use the values &amp;lt;math&amp;gt;f(a)+\ell&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(a)&lt;/ins&gt;&amp;lt;/math&amp;gt; in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; as an initial flow for the computation of a maximum &amp;lt;math&amp;gt;(s,t)&amp;lt;/math&amp;gt;-flow in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt;.[[File:Maxflowmultiplesource.png|350px|thumb|right|Max-Flow Problem with several sources and targets]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# More than one source and more than one target can be reduced to the standard version by adding a super-source node &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, a super-target node &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, an arc &amp;lt;math&amp;gt;(s,v)&amp;lt;/math&amp;gt; with &amp;quot;infinite&amp;quot; capacity for each source &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt;, and an arc &amp;lt;math&amp;gt;(v,t)&amp;lt;/math&amp;gt; with &amp;quot;infinite&amp;quot; capacity for each target &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; (for example, the sum of the upper bounds of all arcs is sufficiently large to serve as &amp;quot;infinity&amp;quot;).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# More than one source and more than one target can be reduced to the standard version by adding a super-source node &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, a super-target node &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, an arc &amp;lt;math&amp;gt;(s,v)&amp;lt;/math&amp;gt; with &amp;quot;infinite&amp;quot; capacity for each source &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt;, and an arc &amp;lt;math&amp;gt;(v,t)&amp;lt;/math&amp;gt; with &amp;quot;infinite&amp;quot; capacity for each target &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; (for example, the sum of the upper bounds of all arcs is sufficiently large to serve as &amp;quot;infinity&amp;quot;).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Usually, the term '''generalized flow''' is reserved for the specific generalization in which for each node &amp;lt;math&amp;gt;v\in V\setminus\{s,t\}&amp;lt;/math&amp;gt;, the ratio of the total sum of all incoming flow and the total sum of all outgoing flow is given (in the standard version, this ratio is 1 due to the flow conservation condition).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Usually, the term '''generalized flow''' is reserved for the specific generalization in which for each node &amp;lt;math&amp;gt;v\in V\setminus\{s,t\}&amp;lt;/math&amp;gt;, the ratio of the total sum of all incoming flow and the total sum of all outgoing flow is given (in the standard version, this ratio is 1 due to the flow conservation condition).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# The max-flow problem asks for an optimal steady-state flow. However, in many applications, a certain amount of flow is to be sent as soon as possible from the source to the target. It is easy to see that, if the amount of flow is sufficiently large, then an optimal solution is constant most of the time, and the maximum steady-state flow is this constant flow.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# The max-flow problem asks for an optimal steady-state flow. However, in many applications, a certain amount of flow is to be sent as soon as possible from the source to the target. It is easy to see that, if the amount of flow is sufficiently large, then an optimal solution is constant most of the time, and the maximum steady-state flow is this constant flow.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Weihe</name></author>
	</entry>
	<entry>
		<id>https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=Max-Flow_Problems&amp;diff=3649&amp;oldid=prev</id>
		<title>Weihe: /* Generalizations */</title>
		<link rel="alternate" type="text/html" href="https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=Max-Flow_Problems&amp;diff=3649&amp;oldid=prev"/>
		<updated>2015-11-23T08:34:18Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Generalizations&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 08:34, 23 November 2015&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l32&quot;&gt;Line 32:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 32:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;##:For all arcs &amp;lt;math&amp;gt;a\in A&amp;lt;/math&amp;gt;, we set &amp;lt;math&amp;gt;u'(a):=u(a)-\ell(a)&amp;lt;/math&amp;gt;. Finally, we set &amp;lt;math&amp;gt;u'(t,s):=+\infty&amp;lt;/math&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;##:For all arcs &amp;lt;math&amp;gt;a\in A&amp;lt;/math&amp;gt;, we set &amp;lt;math&amp;gt;u'(a):=u(a)-\ell(a)&amp;lt;/math&amp;gt;. Finally, we set &amp;lt;math&amp;gt;u'(t,s):=+\infty&amp;lt;/math&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;## If all additional arcs &amp;lt;math&amp;gt;(s',\cdot)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;(\cdot,t')&amp;lt;/math&amp;gt; are [[Basic flow definitions|saturated]] by some feasible (and obviously maximum) &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt;, the values &amp;lt;math&amp;gt;f(a)+\ell(a)&amp;lt;/math&amp;gt; on all original arcs of &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; obviously form a feasible &amp;lt;math&amp;gt;(s,t)&amp;lt;/math&amp;gt;-flow in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; with respect to &amp;lt;math&amp;gt;\ell&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;. On the other hand, if there is a feasible &amp;lt;math&amp;gt;(s,t)&amp;lt;/math&amp;gt;-flow &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; with respect to &amp;lt;math&amp;gt;\ell&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, the values &amp;lt;math&amp;gt;f(a)-\ell(a)&amp;lt;/math&amp;gt; on all original arcs in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; along with saturating flow values on all additional arcs form a feasible (and obviously maximum) &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow. Therefore, we may safely terminate the whole procedure if the additional arcs are '''not''' saturated by a maximum &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;## If all additional arcs &amp;lt;math&amp;gt;(s',\cdot)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;(\cdot,t')&amp;lt;/math&amp;gt; are [[Basic flow definitions|saturated]] by some feasible (and obviously maximum) &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt;, the values &amp;lt;math&amp;gt;f(a)+\ell(a)&amp;lt;/math&amp;gt; on all original arcs of &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; obviously form a feasible &amp;lt;math&amp;gt;(s,t)&amp;lt;/math&amp;gt;-flow in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; with respect to &amp;lt;math&amp;gt;\ell&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;. On the other hand, if there is a feasible &amp;lt;math&amp;gt;(s,t)&amp;lt;/math&amp;gt;-flow &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; with respect to &amp;lt;math&amp;gt;\ell&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, the values &amp;lt;math&amp;gt;f(a)-\ell(a)&amp;lt;/math&amp;gt; on all original arcs in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; along with saturating flow values on all additional arcs form a feasible (and obviously maximum) &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow. Therefore, we may safely terminate the whole procedure if the additional arcs are '''not''' saturated by a maximum &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;## &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;More specifically&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;for &lt;/del&gt;&amp;lt;math&amp;gt;(&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;v,w&lt;/del&gt;)\in &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;A&lt;/del&gt;&amp;lt;/math&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, we set &lt;/del&gt;&amp;lt;math&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;f&lt;/del&gt;(&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;v&lt;/del&gt;,&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;w):=f'(v,w)+\ell(v,w&lt;/del&gt;)&amp;lt;/math&amp;gt;.[[File:Maxflowmultiplesource.png|350px|thumb|right|Max-Flow Problem with several sources and targets]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;## &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Otherwise&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;we may use the values &lt;/ins&gt;&amp;lt;math&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;f&lt;/ins&gt;(&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;a&lt;/ins&gt;)&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;+&lt;/ins&gt;\&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ell&amp;lt;/math&amp;gt; &lt;/ins&gt;in &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;math&amp;gt;G&lt;/ins&gt;&amp;lt;/math&amp;gt; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;as an initial flow for the computation of a maximum &lt;/ins&gt;&amp;lt;math&amp;gt;(&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;s&lt;/ins&gt;,&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;t&lt;/ins&gt;)&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/math&amp;gt;-flow in &amp;lt;math&amp;gt;G&lt;/ins&gt;&amp;lt;/math&amp;gt;.[[File:Maxflowmultiplesource.png|350px|thumb|right|Max-Flow Problem with several sources and targets]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# More than one source and more than one target can be reduced to the standard version by adding a super-source node &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, a super-target node &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, an arc &amp;lt;math&amp;gt;(s,v)&amp;lt;/math&amp;gt; with &amp;quot;infinite&amp;quot; capacity for each source &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt;, and an arc &amp;lt;math&amp;gt;(v,t)&amp;lt;/math&amp;gt; with &amp;quot;infinite&amp;quot; capacity for each target &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; (for example, the sum of the upper bounds of all arcs is sufficiently large to serve as &amp;quot;infinity&amp;quot;).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# More than one source and more than one target can be reduced to the standard version by adding a super-source node &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, a super-target node &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, an arc &amp;lt;math&amp;gt;(s,v)&amp;lt;/math&amp;gt; with &amp;quot;infinite&amp;quot; capacity for each source &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt;, and an arc &amp;lt;math&amp;gt;(v,t)&amp;lt;/math&amp;gt; with &amp;quot;infinite&amp;quot; capacity for each target &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; (for example, the sum of the upper bounds of all arcs is sufficiently large to serve as &amp;quot;infinity&amp;quot;).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Usually, the term '''generalized flow''' is reserved for the specific generalization in which for each node &amp;lt;math&amp;gt;v\in V\setminus\{s,t\}&amp;lt;/math&amp;gt;, the ratio of the total sum of all incoming flow and the total sum of all outgoing flow is given (in the standard version, this ratio is 1 due to the flow conservation condition).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Usually, the term '''generalized flow''' is reserved for the specific generalization in which for each node &amp;lt;math&amp;gt;v\in V\setminus\{s,t\}&amp;lt;/math&amp;gt;, the ratio of the total sum of all incoming flow and the total sum of all outgoing flow is given (in the standard version, this ratio is 1 due to the flow conservation condition).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# The max-flow problem asks for an optimal steady-state flow. However, in many applications, a certain amount of flow is to be sent as soon as possible from the source to the target. It is easy to see that, if the amount of flow is sufficiently large, then an optimal solution is constant most of the time, and the maximum steady-state flow is this constant flow.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# The max-flow problem asks for an optimal steady-state flow. However, in many applications, a certain amount of flow is to be sent as soon as possible from the source to the target. It is easy to see that, if the amount of flow is sufficiently large, then an optimal solution is constant most of the time, and the maximum steady-state flow is this constant flow.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Weihe</name></author>
	</entry>
	<entry>
		<id>https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=Max-Flow_Problems&amp;diff=3648&amp;oldid=prev</id>
		<title>Weihe: /* Generalizations */</title>
		<link rel="alternate" type="text/html" href="https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=Max-Flow_Problems&amp;diff=3648&amp;oldid=prev"/>
		<updated>2015-11-23T08:30:47Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Generalizations&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 08:30, 23 November 2015&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l31&quot;&gt;Line 31:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 31:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;##:&amp;lt;math&amp;gt;u'(s',v):=\sum_{(w,v)\in A}\ell(w,v)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u'(v,t'):=\sum_{(v,w)\in A} \ell(v,w)&amp;lt;/math&amp;gt;.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;##:&amp;lt;math&amp;gt;u'(s',v):=\sum_{(w,v)\in A}\ell(w,v)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u'(v,t'):=\sum_{(v,w)\in A} \ell(v,w)&amp;lt;/math&amp;gt;.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;##:For all arcs &amp;lt;math&amp;gt;a\in A&amp;lt;/math&amp;gt;, we set &amp;lt;math&amp;gt;u'(a):=u(a)-\ell(a)&amp;lt;/math&amp;gt;. Finally, we set &amp;lt;math&amp;gt;u'(t,s):=+\infty&amp;lt;/math&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;##:For all arcs &amp;lt;math&amp;gt;a\in A&amp;lt;/math&amp;gt;, we set &amp;lt;math&amp;gt;u'(a):=u(a)-\ell(a)&amp;lt;/math&amp;gt;. Finally, we set &amp;lt;math&amp;gt;u'(t,s):=+\infty&amp;lt;/math&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;## If all additional arcs &amp;lt;math&amp;gt;(s',\cdot)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;(\cdot,t')&amp;lt;/math&amp;gt; are [[Basic flow definitions|saturated]] by some feasible (and obviously maximum) &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt;, the values &amp;lt;math&amp;gt;f(a)+\ell(a)&amp;lt;/math&amp;gt; on all original arcs of &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; obviously form a feasible &amp;lt;math&amp;gt;(s,t)&amp;lt;/math&amp;gt;-flow in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; with respect to &amp;lt;math&amp;gt;\ell&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;. On the other hand, if there is a feasible &amp;lt;math&amp;gt;(s,t)&amp;lt;/math&amp;gt;-flow in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; with respect to &amp;lt;math&amp;gt;\ell&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, saturating all additional arcs &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;forms &lt;/del&gt;a feasible (and obviously maximum) &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow. Therefore, we may safely terminate the whole procedure if the additional arcs are '''not'''saturated.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;## If all additional arcs &amp;lt;math&amp;gt;(s',\cdot)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;(\cdot,t')&amp;lt;/math&amp;gt; are [[Basic flow definitions|saturated]] by some feasible (and obviously maximum) &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt;, the values &amp;lt;math&amp;gt;f(a)+\ell(a)&amp;lt;/math&amp;gt; on all original arcs of &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; obviously form a feasible &amp;lt;math&amp;gt;(s,t)&amp;lt;/math&amp;gt;-flow in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; with respect to &amp;lt;math&amp;gt;\ell&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;. On the other hand, if there is a feasible &amp;lt;math&amp;gt;(s,t)&amp;lt;/math&amp;gt;-flow &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; &lt;/ins&gt;in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; with respect to &amp;lt;math&amp;gt;\ell&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;the values &amp;lt;math&amp;gt;f(a)-\ell(a)&amp;lt;/math&amp;gt; on all original arcs in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; along with &lt;/ins&gt;saturating &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;flow values on &lt;/ins&gt;all additional arcs &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;form &lt;/ins&gt;a feasible (and obviously maximum) &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow. Therefore, we may safely terminate the whole procedure if the additional arcs are '''not''' saturated &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;by a maximum &amp;lt;math&amp;gt;(s',t')&amp;lt;/math&amp;gt;-flow&lt;/ins&gt;.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;## More specifically, for &amp;lt;math&amp;gt;(v,w)\in A&amp;lt;/math&amp;gt;, we set &amp;lt;math&amp;gt;f(v,w):=f'(v,w)+\ell(v,w)&amp;lt;/math&amp;gt;.[[File:Maxflowmultiplesource.png|350px|thumb|right|Max-Flow Problem with several sources and targets]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;## More specifically, for &amp;lt;math&amp;gt;(v,w)\in A&amp;lt;/math&amp;gt;, we set &amp;lt;math&amp;gt;f(v,w):=f'(v,w)+\ell(v,w)&amp;lt;/math&amp;gt;.[[File:Maxflowmultiplesource.png|350px|thumb|right|Max-Flow Problem with several sources and targets]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# More than one source and more than one target can be reduced to the standard version by adding a super-source node &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, a super-target node &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, an arc &amp;lt;math&amp;gt;(s,v)&amp;lt;/math&amp;gt; with &amp;quot;infinite&amp;quot; capacity for each source &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt;, and an arc &amp;lt;math&amp;gt;(v,t)&amp;lt;/math&amp;gt; with &amp;quot;infinite&amp;quot; capacity for each target &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; (for example, the sum of the upper bounds of all arcs is sufficiently large to serve as &amp;quot;infinity&amp;quot;).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# More than one source and more than one target can be reduced to the standard version by adding a super-source node &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, a super-target node &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, an arc &amp;lt;math&amp;gt;(s,v)&amp;lt;/math&amp;gt; with &amp;quot;infinite&amp;quot; capacity for each source &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt;, and an arc &amp;lt;math&amp;gt;(v,t)&amp;lt;/math&amp;gt; with &amp;quot;infinite&amp;quot; capacity for each target &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; (for example, the sum of the upper bounds of all arcs is sufficiently large to serve as &amp;quot;infinity&amp;quot;).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Usually, the term '''generalized flow''' is reserved for the specific generalization in which for each node &amp;lt;math&amp;gt;v\in V\setminus\{s,t\}&amp;lt;/math&amp;gt;, the ratio of the total sum of all incoming flow and the total sum of all outgoing flow is given (in the standard version, this ratio is 1 due to the flow conservation condition).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Usually, the term '''generalized flow''' is reserved for the specific generalization in which for each node &amp;lt;math&amp;gt;v\in V\setminus\{s,t\}&amp;lt;/math&amp;gt;, the ratio of the total sum of all incoming flow and the total sum of all outgoing flow is given (in the standard version, this ratio is 1 due to the flow conservation condition).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# The max-flow problem asks for an optimal steady-state flow. However, in many applications, a certain amount of flow is to be sent as soon as possible from the source to the target. It is easy to see that, if the amount of flow is sufficiently large, then an optimal solution is constant most of the time, and the maximum steady-state flow is this constant flow.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# The max-flow problem asks for an optimal steady-state flow. However, in many applications, a certain amount of flow is to be sent as soon as possible from the source to the target. It is easy to see that, if the amount of flow is sufficiently large, then an optimal solution is constant most of the time, and the maximum steady-state flow is this constant flow.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Weihe</name></author>
	</entry>
</feed>