 <?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=FIFO_preflow-push</id>
	<title>FIFO preflow-push - 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=FIFO_preflow-push"/>
	<link rel="alternate" type="text/html" href="https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=FIFO_preflow-push&amp;action=history"/>
	<updated>2026-05-20T08:46:59Z</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=FIFO_preflow-push&amp;diff=3679&amp;oldid=prev</id>
		<title>Weihe: /* Complexity */</title>
		<link rel="alternate" type="text/html" href="https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=FIFO_preflow-push&amp;diff=3679&amp;oldid=prev"/>
		<updated>2015-12-14T09:20:57Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Complexity&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 09:20, 14 December 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-l15&quot;&gt;Line 15:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 15:&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;Conceptually (that is, in our reasoning, not in the implementation), we may partition the iterations of the main loop into ''phases''. The first phase commences with the very first iteration. A new phase commences as soon as all nodes that were in &amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; at the beginning of the last phase, have been extracted once from &amp;lt;matH&amp;gt;Q&amp;lt;/math&amp;gt;. Before and after each iteration, let &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; denote the maximum label &amp;lt;math&amp;gt;d(v)&amp;lt;/math&amp;gt; of any active node &amp;lt;math&amp;gt;v\in V\setminus\{s,t\}&amp;lt;/math&amp;gt;. In particular, it is always &amp;lt;math&amp;gt;0\leq D&amp;lt;2n&amp;lt;/math&amp;gt;. Clearly, only relabel operations can increase &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt;, and the sum of all increases of &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt;, taken over all relabel operations, cannot increase &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; by more than &amp;lt;math&amp;gt;2n^2&amp;lt;/math&amp;gt; in total.&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;Conceptually (that is, in our reasoning, not in the implementation), we may partition the iterations of the main loop into ''phases''. The first phase commences with the very first iteration. A new phase commences as soon as all nodes that were in &amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; at the beginning of the last phase, have been extracted once from &amp;lt;matH&amp;gt;Q&amp;lt;/math&amp;gt;. Before and after each iteration, let &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; denote the maximum label &amp;lt;math&amp;gt;d(v)&amp;lt;/math&amp;gt; of any active node &amp;lt;math&amp;gt;v\in V\setminus\{s,t\}&amp;lt;/math&amp;gt;. In particular, it is always &amp;lt;math&amp;gt;0\leq D&amp;lt;2n&amp;lt;/math&amp;gt;. Clearly, only relabel operations can increase &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt;, and the sum of all increases of &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt;, taken over all relabel operations, cannot increase &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; by more than &amp;lt;math&amp;gt;2n^2&amp;lt;/math&amp;gt; in total.&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;br/&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;br/&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;This observation immediately implies that the number of phases in which at least one relabeling operation takes place, is in &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt;. On the other hand, &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; is decreased in every phase without relabel operation, because in this case, all excess is pushed from each active node to a node with smaller &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt;-label. Due to the bound &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt; on all increases of &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt;, the number of ''de''creases of &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; and, hence, the number of phases without relabel operations is in &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt; as well. The claim now follows from the observation that, in each phase, at most one non-saturating push is performed with each node because a non-saturating push makes a node inactive.&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;This observation immediately implies that the number of phases in which at least one relabeling operation takes place, is in &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt;. On the other hand, &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; is decreased in every phase &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;''&lt;/ins&gt;without&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;'' &lt;/ins&gt;relabel operation, because in this case, all excess is pushed from each active node to a node with smaller &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt;-label. Due to the bound &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt; on all increases of &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt;, the number of ''de''creases of &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; and, hence, the number of phases without relabel operations is in &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt; as well. The claim now follows from the observation that, in each phase, at most one non-saturating push is performed with each node because a non-saturating push makes a node inactive.&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=FIFO_preflow-push&amp;diff=3678&amp;oldid=prev</id>
		<title>Weihe: /* Complexity */</title>
		<link rel="alternate" type="text/html" href="https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=FIFO_preflow-push&amp;diff=3678&amp;oldid=prev"/>
		<updated>2015-12-14T09:20:08Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Complexity&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 09:20, 14 December 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-l13&quot;&gt;Line 13:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 13:&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 [[Preflow-push#Complexity|complexity considerations]] for the [[Preflow-push|generic preflow-push algorithm]] yield &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt; relabel operations and forward steps of current arcs, and &amp;lt;math&amp;gt;\mathcal{O}(n\!\cdot\!m)\subseteq\mathcal{O}(n^3)&amp;lt;/math&amp;gt; saturating push operations, where &amp;lt;math&amp;gt;m=|A|&amp;lt;/math&amp;gt;. There it was also shown that the total number of changes of outgoing arcs is in &amp;lt;math&amp;gt;\mathcal{O}(n^3)&amp;lt;/math&amp;gt;. Hence, it remains to show that the total number of non-saturating push operations is in &amp;lt;math&amp;gt;\mathcal{O}(n^3)&amp;lt;/math&amp;gt; as well.&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 [[Preflow-push#Complexity|complexity considerations]] for the [[Preflow-push|generic preflow-push algorithm]] yield &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt; relabel operations and forward steps of current arcs, and &amp;lt;math&amp;gt;\mathcal{O}(n\!\cdot\!m)\subseteq\mathcal{O}(n^3)&amp;lt;/math&amp;gt; saturating push operations, where &amp;lt;math&amp;gt;m=|A|&amp;lt;/math&amp;gt;. There it was also shown that the total number of changes of outgoing arcs is in &amp;lt;math&amp;gt;\mathcal{O}(n^3)&amp;lt;/math&amp;gt;. Hence, it remains to show that the total number of non-saturating push operations is in &amp;lt;math&amp;gt;\mathcal{O}(n^3)&amp;lt;/math&amp;gt; as well.&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;br/&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;br/&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;Conceptually, we may partition the iterations of the main loop into ''phases''. The first phase commences with the very first iteration. A new phase commences as soon as all nodes that were in &amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; at the beginning of the last phase, have been extracted once from &amp;lt;matH&amp;gt;Q&amp;lt;/math&amp;gt;. Before and after each iteration, let &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; denote the maximum label &amp;lt;math&amp;gt;d(v)&amp;lt;/math&amp;gt; of any active node &amp;lt;math&amp;gt;v\in V\setminus\{s,t\}&amp;lt;/math&amp;gt;. In particular, it is always &amp;lt;math&amp;gt;0\leq D&amp;lt;2n&amp;lt;/math&amp;gt;. Clearly, only relabel operations can increase &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt;, and the sum of all increases of &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt;, taken over all relabel operations, cannot increase &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; by more than &amp;lt;math&amp;gt;2n^2&amp;lt;/math&amp;gt; in total.&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;Conceptually &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(that is, in our reasoning, not in the implementation)&lt;/ins&gt;, we may partition the iterations of the main loop into ''phases''. The first phase commences with the very first iteration. A new phase commences as soon as all nodes that were in &amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; at the beginning of the last phase, have been extracted once from &amp;lt;matH&amp;gt;Q&amp;lt;/math&amp;gt;. Before and after each iteration, let &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; denote the maximum label &amp;lt;math&amp;gt;d(v)&amp;lt;/math&amp;gt; of any active node &amp;lt;math&amp;gt;v\in V\setminus\{s,t\}&amp;lt;/math&amp;gt;. In particular, it is always &amp;lt;math&amp;gt;0\leq D&amp;lt;2n&amp;lt;/math&amp;gt;. Clearly, only relabel operations can increase &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt;, and the sum of all increases of &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt;, taken over all relabel operations, cannot increase &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; by more than &amp;lt;math&amp;gt;2n^2&amp;lt;/math&amp;gt; in total.&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;br/&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;br/&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;This observation immediately implies that the number of phases in which at least one relabeling operation takes place, is in &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt;. On the other hand, &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; is decreased in every phase without relabel operation, because in this case, all excess is pushed from each active node to a node with smaller &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt;-label. Due to the bound &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt; on all increases of &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt;, the number of ''de''creases of &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; and, hence, the number of phases without relabel operations is in &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt; as well. The claim now follows from the observation that, in each phase, at most one non-saturating push is performed with each node because a non-saturating push makes a node inactive.&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;This observation immediately implies that the number of phases in which at least one relabeling operation takes place, is in &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt;. On the other hand, &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; is decreased in every phase without relabel operation, because in this case, all excess is pushed from each active node to a node with smaller &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt;-label. Due to the bound &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt; on all increases of &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt;, the number of ''de''creases of &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; and, hence, the number of phases without relabel operations is in &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt; as well. The claim now follows from the observation that, in each phase, at most one non-saturating push is performed with each node because a non-saturating push makes a node inactive.&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=FIFO_preflow-push&amp;diff=2791&amp;oldid=prev</id>
		<title>BB91: /* Complexity */</title>
		<link rel="alternate" type="text/html" href="https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=FIFO_preflow-push&amp;diff=2791&amp;oldid=prev"/>
		<updated>2015-02-04T17:56:25Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Complexity&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 17:56, 4 February 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-l15&quot;&gt;Line 15:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 15:&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;Conceptually, we may partition the iterations of the main loop into ''phases''. The first phase commences with the very first iteration. A new phase commences as soon as all nodes that were in &amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; at the beginning of the last phase, have been extracted once from &amp;lt;matH&amp;gt;Q&amp;lt;/math&amp;gt;. Before and after each iteration, let &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; denote the maximum label &amp;lt;math&amp;gt;d(v)&amp;lt;/math&amp;gt; of any active node &amp;lt;math&amp;gt;v\in V\setminus\{s,t\}&amp;lt;/math&amp;gt;. In particular, it is always &amp;lt;math&amp;gt;0\leq D&amp;lt;2n&amp;lt;/math&amp;gt;. Clearly, only relabel operations can increase &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt;, and the sum of all increases of &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt;, taken over all relabel operations, cannot increase &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; by more than &amp;lt;math&amp;gt;2n^2&amp;lt;/math&amp;gt; in total.&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;Conceptually, we may partition the iterations of the main loop into ''phases''. The first phase commences with the very first iteration. A new phase commences as soon as all nodes that were in &amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; at the beginning of the last phase, have been extracted once from &amp;lt;matH&amp;gt;Q&amp;lt;/math&amp;gt;. Before and after each iteration, let &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; denote the maximum label &amp;lt;math&amp;gt;d(v)&amp;lt;/math&amp;gt; of any active node &amp;lt;math&amp;gt;v\in V\setminus\{s,t\}&amp;lt;/math&amp;gt;. In particular, it is always &amp;lt;math&amp;gt;0\leq D&amp;lt;2n&amp;lt;/math&amp;gt;. Clearly, only relabel operations can increase &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt;, and the sum of all increases of &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt;, taken over all relabel operations, cannot increase &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; by more than &amp;lt;math&amp;gt;2n^2&amp;lt;/math&amp;gt; in total.&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;br/&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;br/&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;This observation immediately implies that the number of phases in which at least one relabeling operation takes place, is in &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt;. On the other hand, &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; is decreased in every &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;iteration &lt;/del&gt;without relabel operation, because in this case, all excess is pushed from each active node to a node with smaller &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt;-label. Due to the bound &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt; on all increases of &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt;, the number of ''de''creases of &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; and, hence, the number of phases without relabel operations is in &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt; as well. The claim now follows from the observation that, in each phase, at most one non-saturating push is performed with each node because a non-saturating push makes a node inactive.&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;This observation immediately implies that the number of phases in which at least one relabeling operation takes place, is in &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt;. On the other hand, &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; is decreased in every &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;phase &lt;/ins&gt;without relabel operation, because in this case, all excess is pushed from each active node to a node with smaller &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt;-label. Due to the bound &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt; on all increases of &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt;, the number of ''de''creases of &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; and, hence, the number of phases without relabel operations is in &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt; as well. The claim now follows from the observation that, in each phase, at most one non-saturating push is performed with each node because a non-saturating push makes a node inactive.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>BB91</name></author>
	</entry>
	<entry>
		<id>https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=FIFO_preflow-push&amp;diff=2396&amp;oldid=prev</id>
		<title>Weihe: /* Complexity */</title>
		<link rel="alternate" type="text/html" href="https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=FIFO_preflow-push&amp;diff=2396&amp;oldid=prev"/>
		<updated>2014-12-01T14:00:27Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Complexity&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 14:00, 1 December 2014&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-l13&quot;&gt;Line 13:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 13:&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 [[Preflow-push#Complexity|complexity considerations]] for the [[Preflow-push|generic preflow-push algorithm]] yield &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt; relabel operations and forward steps of current arcs, and &amp;lt;math&amp;gt;\mathcal{O}(n\!\cdot\!m)\subseteq\mathcal{O}(n^3)&amp;lt;/math&amp;gt; saturating push operations, where &amp;lt;math&amp;gt;m=|A|&amp;lt;/math&amp;gt;. There it was also shown that the total number of changes of outgoing arcs is in &amp;lt;math&amp;gt;\mathcal{O}(n^3)&amp;lt;/math&amp;gt;. Hence, it remains to show that the total number of non-saturating push operations is in &amp;lt;math&amp;gt;\mathcal{O}(n^3)&amp;lt;/math&amp;gt; as well.&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 [[Preflow-push#Complexity|complexity considerations]] for the [[Preflow-push|generic preflow-push algorithm]] yield &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt; relabel operations and forward steps of current arcs, and &amp;lt;math&amp;gt;\mathcal{O}(n\!\cdot\!m)\subseteq\mathcal{O}(n^3)&amp;lt;/math&amp;gt; saturating push operations, where &amp;lt;math&amp;gt;m=|A|&amp;lt;/math&amp;gt;. There it was also shown that the total number of changes of outgoing arcs is in &amp;lt;math&amp;gt;\mathcal{O}(n^3)&amp;lt;/math&amp;gt;. Hence, it remains to show that the total number of non-saturating push operations is in &amp;lt;math&amp;gt;\mathcal{O}(n^3)&amp;lt;/math&amp;gt; as well.&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;br/&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;br/&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;Conceptually, we may partition the iterations of the main loop into ''phases''. The first phase commences with the very first iteration. A new phase commences as soon as all nodes that were in &amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; at the beginning of the last phase, have been extracted once from &amp;lt;matH&amp;gt;Q&amp;lt;/math&amp;gt;. Before and after each iteration, let &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; denote the maximum label &amp;lt;math&amp;gt;d(v)&amp;lt;/math&amp;gt; of any active node &amp;lt;math&amp;gt;v\in V\setminus\{s,t\}&amp;lt;/math&amp;gt;. In particular, it is always &amp;lt;math&amp;gt;0\leq D&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;\&lt;/del&gt;&amp;lt;2n&amp;lt;/math&amp;gt;. Clearly, only relabel operations can increase &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt;, and the sum of all increases of &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt;, taken over all relabel operations, cannot increase &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; by more than &amp;lt;math&amp;gt;2n^2&amp;lt;/math&amp;gt; in total.&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;Conceptually, we may partition the iterations of the main loop into ''phases''. The first phase commences with the very first iteration. A new phase commences as soon as all nodes that were in &amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; at the beginning of the last phase, have been extracted once from &amp;lt;matH&amp;gt;Q&amp;lt;/math&amp;gt;. Before and after each iteration, let &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; denote the maximum label &amp;lt;math&amp;gt;d(v)&amp;lt;/math&amp;gt; of any active node &amp;lt;math&amp;gt;v\in V\setminus\{s,t\}&amp;lt;/math&amp;gt;. In particular, it is always &amp;lt;math&amp;gt;0\leq D&amp;lt;2n&amp;lt;/math&amp;gt;. Clearly, only relabel operations can increase &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt;, and the sum of all increases of &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt;, taken over all relabel operations, cannot increase &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; by more than &amp;lt;math&amp;gt;2n^2&amp;lt;/math&amp;gt; in total.&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;br/&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;br/&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;This observation immediately implies that the number of phases in which at least one relabeling operation takes place, is in &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt;. On the other hand, &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; is decreased in every iteration without relabel operation, because in this case, all excess is pushed from each active node to a node with smaller &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt;-label. Due to the bound &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt; on all increases of &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt;, the number of ''de''creases of &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; and, hence, the number of phases without relabel operations is in &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt; as well. The claim now follows from the observation that, in each phase, at most one non-saturating push is performed with each node because a non-saturating push makes a node inactive.&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;This observation immediately implies that the number of phases in which at least one relabeling operation takes place, is in &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt;. On the other hand, &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; is decreased in every iteration without relabel operation, because in this case, all excess is pushed from each active node to a node with smaller &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt;-label. Due to the bound &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt; on all increases of &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt;, the number of ''de''creases of &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; and, hence, the number of phases without relabel operations is in &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt; as well. The claim now follows from the observation that, in each phase, at most one non-saturating push is performed with each node because a non-saturating push makes a node inactive.&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=FIFO_preflow-push&amp;diff=2395&amp;oldid=prev</id>
		<title>Weihe: /* Complexity */</title>
		<link rel="alternate" type="text/html" href="https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=FIFO_preflow-push&amp;diff=2395&amp;oldid=prev"/>
		<updated>2014-12-01T14:00:10Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Complexity&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 14:00, 1 December 2014&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-l11&quot;&gt;Line 11:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 11:&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;br/&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;br/&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;'''Proof:'''&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;'''Proof:'''&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;The [[Preflow-push#Complexity|complexity considerations]] for the [[Preflow-push|generic preflow-push algorithm]] yield &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt; relabel operations and &amp;lt;math&amp;gt;\mathcal{O}(n\!\cdot\!m)\subseteq\mathcal{O}(n^3)&amp;lt;/math&amp;gt; saturating push operations, where &amp;lt;math&amp;gt;m=|A|&amp;lt;/math&amp;gt;. There it was also shown that the total number of changes of outgoing arcs is in &amp;lt;math&amp;gt;\mathcal{O}(n^3)&amp;lt;/math&amp;gt;. Hence, it remains to show that the total number of non-saturating push operations is in &amp;lt;math&amp;gt;\mathcal{O}(n^3)&amp;lt;/math&amp;gt; as well.&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;The [[Preflow-push#Complexity|complexity considerations]] for the [[Preflow-push|generic preflow-push algorithm]] yield &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt; relabel operations &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;and forward steps of current arcs, &lt;/ins&gt;and &amp;lt;math&amp;gt;\mathcal{O}(n\!\cdot\!m)\subseteq\mathcal{O}(n^3)&amp;lt;/math&amp;gt; saturating push operations, where &amp;lt;math&amp;gt;m=|A|&amp;lt;/math&amp;gt;. There it was also shown that the total number of changes of outgoing arcs is in &amp;lt;math&amp;gt;\mathcal{O}(n^3)&amp;lt;/math&amp;gt;. Hence, it remains to show that the total number of non-saturating push operations is in &amp;lt;math&amp;gt;\mathcal{O}(n^3)&amp;lt;/math&amp;gt; as well.&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;br/&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;br/&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;Conceptually, we may partition the iterations of the main loop into ''phases''. The first phase commences with the very first iteration. A new phase commences as soon as all nodes that were in &amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; at the beginning of the last phase, have been extracted once from &amp;lt;matH&amp;gt;Q&amp;lt;/math&amp;gt;. Before and after each iteration, let &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; denote the maximum label &amp;lt;math&amp;gt;d(v)&amp;lt;/math&amp;gt; of any active node &amp;lt;math&amp;gt;v\in V\setminus\{s,t\}&amp;lt;/math&amp;gt;. In particular, it is always &amp;lt;math&amp;gt;0\leq D\&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;leq &lt;/del&gt;2n&amp;lt;/math&amp;gt;. Clearly, only relabel operations can increase &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt;, and the sum of all increases of &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt;, taken over all relabel operations, cannot increase &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; by more than &amp;lt;math&amp;gt;2n^2&amp;lt;/math&amp;gt; in total.&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;Conceptually, we may partition the iterations of the main loop into ''phases''. The first phase commences with the very first iteration. A new phase commences as soon as all nodes that were in &amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; at the beginning of the last phase, have been extracted once from &amp;lt;matH&amp;gt;Q&amp;lt;/math&amp;gt;. Before and after each iteration, let &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; denote the maximum label &amp;lt;math&amp;gt;d(v)&amp;lt;/math&amp;gt; of any active node &amp;lt;math&amp;gt;v\in V\setminus\{s,t\}&amp;lt;/math&amp;gt;. In particular, it is always &amp;lt;math&amp;gt;0\leq D\&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;&lt;/ins&gt;2n&amp;lt;/math&amp;gt;. Clearly, only relabel operations can increase &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt;, and the sum of all increases of &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt;, taken over all relabel operations, cannot increase &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; by more than &amp;lt;math&amp;gt;2n^2&amp;lt;/math&amp;gt; in total.&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;br/&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;br/&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;This observation immediately implies that the number of phases in which at least one relabeling operation takes place, is in &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt;. On the other hand, &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; is decreased in every iteration without relabel operation, because in this case, all excess is pushed from each active node to a node with smaller &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt;-label. Due to the bound &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt; on all increases of &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt;, the number of ''de''creases of &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; and, hence, the number of phases without relabel operations is in &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt; as well. The claim now follows from the observation that, in each phase, at most one non-saturating push is performed with each node because a non-saturating push makes a node inactive.&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;This observation immediately implies that the number of phases in which at least one relabeling operation takes place, is in &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt;. On the other hand, &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; is decreased in every iteration without relabel operation, because in this case, all excess is pushed from each active node to a node with smaller &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt;-label. Due to the bound &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt; on all increases of &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt;, the number of ''de''creases of &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; and, hence, the number of phases without relabel operations is in &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt; as well. The claim now follows from the observation that, in each phase, at most one non-saturating push is performed with each node because a non-saturating push makes a node inactive.&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=FIFO_preflow-push&amp;diff=2394&amp;oldid=prev</id>
		<title>Weihe: /* Abstract view */</title>
		<link rel="alternate" type="text/html" href="https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=FIFO_preflow-push&amp;diff=2394&amp;oldid=prev"/>
		<updated>2014-12-01T13:58:22Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Abstract view&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 13:58, 1 December 2014&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-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&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;== Abstract view ==&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;== Abstract view ==&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;br/&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;br/&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;This is a specialization of the &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;generic &lt;/del&gt;[[Preflow-push|preflow-push algorithm]]:&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;This is a specialization of the [[Preflow-push|&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;generic &lt;/ins&gt;preflow-push algorithm]]:&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;# The set of all active nodes is stored in a [[Sets and sequences#Stacks and queues|FIFO queue]] &amp;lt;math&amp;gt;Q&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;# The set of all &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Basic flow definitions#Preflow|&lt;/ins&gt;active nodes&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]] &lt;/ins&gt;is stored in a [[Sets and sequences#Stacks and queues|FIFO queue]] &amp;lt;math&amp;gt;Q&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;# Always choose the first node in &amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; (recall from the generic preflow-push that this node is not extracted from &amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; as long as it is active).&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;# Always choose the first node in &amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; (recall from the generic preflow-push that this node is not extracted from &amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; as long as it is active).&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;br/&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;br/&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=FIFO_preflow-push&amp;diff=2017&amp;oldid=prev</id>
		<title>Weihe at 13:16, 10 November 2014</title>
		<link rel="alternate" type="text/html" href="https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=FIFO_preflow-push&amp;diff=2017&amp;oldid=prev"/>
		<updated>2014-11-10T13:16:09Z</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 13:16, 10 November 2014&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-l13&quot;&gt;Line 13:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 13:&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 [[Preflow-push#Complexity|complexity considerations]] for the [[Preflow-push|generic preflow-push algorithm]] yield &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt; relabel operations and &amp;lt;math&amp;gt;\mathcal{O}(n\!\cdot\!m)\subseteq\mathcal{O}(n^3)&amp;lt;/math&amp;gt; saturating push operations, where &amp;lt;math&amp;gt;m=|A|&amp;lt;/math&amp;gt;. There it was also shown that the total number of changes of outgoing arcs is in &amp;lt;math&amp;gt;\mathcal{O}(n^3)&amp;lt;/math&amp;gt;. Hence, it remains to show that the total number of non-saturating push operations is in &amp;lt;math&amp;gt;\mathcal{O}(n^3)&amp;lt;/math&amp;gt; as well.&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 [[Preflow-push#Complexity|complexity considerations]] for the [[Preflow-push|generic preflow-push algorithm]] yield &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt; relabel operations and &amp;lt;math&amp;gt;\mathcal{O}(n\!\cdot\!m)\subseteq\mathcal{O}(n^3)&amp;lt;/math&amp;gt; saturating push operations, where &amp;lt;math&amp;gt;m=|A|&amp;lt;/math&amp;gt;. There it was also shown that the total number of changes of outgoing arcs is in &amp;lt;math&amp;gt;\mathcal{O}(n^3)&amp;lt;/math&amp;gt;. Hence, it remains to show that the total number of non-saturating push operations is in &amp;lt;math&amp;gt;\mathcal{O}(n^3)&amp;lt;/math&amp;gt; as well.&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;br/&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;br/&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;Conceptually, we may partition the iterations of the main loop into ''phases''. The first phase commences with the very first iteration. A new phase commences as soon as all nodes that were in &amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; at the beginning of the last phase, have been extracted once from &amp;lt;matH&amp;gt;Q&amp;lt;/math&amp;gt;. Before and after each iteration, let &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; denote the maximum label &amp;lt;math&amp;gt;d(v)&amp;lt;/math&amp;gt; of any active node &amp;lt;math&amp;gt;v\in V\setminus\{s,t\}&amp;lt;/math&amp;gt;. In particular, it is always &amp;lt;math&amp;gt;0\leq D\leq 2n&amp;lt;/math&amp;gt;. Clearly, only relabel operations can increase &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt;, and the sum of all increases of &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt;, taken over all relabel operations, cannot increase &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; by more than &amp;lt;math&amp;gt;2n&amp;lt;/math&amp;gt; in total.&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;Conceptually, we may partition the iterations of the main loop into ''phases''. The first phase commences with the very first iteration. A new phase commences as soon as all nodes that were in &amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; at the beginning of the last phase, have been extracted once from &amp;lt;matH&amp;gt;Q&amp;lt;/math&amp;gt;. Before and after each iteration, let &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; denote the maximum label &amp;lt;math&amp;gt;d(v)&amp;lt;/math&amp;gt; of any active node &amp;lt;math&amp;gt;v\in V\setminus\{s,t\}&amp;lt;/math&amp;gt;. In particular, it is always &amp;lt;math&amp;gt;0\leq D\leq 2n&amp;lt;/math&amp;gt;. Clearly, only relabel operations can increase &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt;, and the sum of all increases of &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt;, taken over all relabel operations, cannot increase &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; by more than &amp;lt;math&amp;gt;2n&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;^2&lt;/ins&gt;&amp;lt;/math&amp;gt; in total.&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;br/&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;br/&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;This observation immediately implies that the number of phases in which at least one relabeling operation takes place, is in &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt;. On the other hand, &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; is decreased in every iteration without relabel operation, because in this case, all excess is pushed from each active node to a node with smaller &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt;-label. Due to the bound &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt; on all increases of &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt;, the number of ''de''creases of &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; and, hence, the number of phases without relabel operations is in &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt; as well. The claim now follows from the observation that, in each phase, at most one non-saturating push is performed with each node because a non-saturating push makes a node inactive.&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;This observation immediately implies that the number of phases in which at least one relabeling operation takes place, is in &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt;. On the other hand, &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; is decreased in every iteration without relabel operation, because in this case, all excess is pushed from each active node to a node with smaller &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt;-label. Due to the bound &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt; on all increases of &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt;, the number of ''de''creases of &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; and, hence, the number of phases without relabel operations is in &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt; as well. The claim now follows from the observation that, in each phase, at most one non-saturating push is performed with each node because a non-saturating push makes a node inactive.&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=FIFO_preflow-push&amp;diff=2016&amp;oldid=prev</id>
		<title>Weihe: /* Complexity */</title>
		<link rel="alternate" type="text/html" href="https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=FIFO_preflow-push&amp;diff=2016&amp;oldid=prev"/>
		<updated>2014-11-10T13:08:10Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Complexity&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 13:08, 10 November 2014&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-l15&quot;&gt;Line 15:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 15:&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;Conceptually, we may partition the iterations of the main loop into ''phases''. The first phase commences with the very first iteration. A new phase commences as soon as all nodes that were in &amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; at the beginning of the last phase, have been extracted once from &amp;lt;matH&amp;gt;Q&amp;lt;/math&amp;gt;. Before and after each iteration, let &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; denote the maximum label &amp;lt;math&amp;gt;d(v)&amp;lt;/math&amp;gt; of any active node &amp;lt;math&amp;gt;v\in V\setminus\{s,t\}&amp;lt;/math&amp;gt;. In particular, it is always &amp;lt;math&amp;gt;0\leq D\leq 2n&amp;lt;/math&amp;gt;. Clearly, only relabel operations can increase &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt;, and the sum of all increases of &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt;, taken over all relabel operations, cannot increase &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; by more than &amp;lt;math&amp;gt;2n&amp;lt;/math&amp;gt; in total.&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;Conceptually, we may partition the iterations of the main loop into ''phases''. The first phase commences with the very first iteration. A new phase commences as soon as all nodes that were in &amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; at the beginning of the last phase, have been extracted once from &amp;lt;matH&amp;gt;Q&amp;lt;/math&amp;gt;. Before and after each iteration, let &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; denote the maximum label &amp;lt;math&amp;gt;d(v)&amp;lt;/math&amp;gt; of any active node &amp;lt;math&amp;gt;v\in V\setminus\{s,t\}&amp;lt;/math&amp;gt;. In particular, it is always &amp;lt;math&amp;gt;0\leq D\leq 2n&amp;lt;/math&amp;gt;. Clearly, only relabel operations can increase &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt;, and the sum of all increases of &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt;, taken over all relabel operations, cannot increase &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; by more than &amp;lt;math&amp;gt;2n&amp;lt;/math&amp;gt; in total.&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;br/&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;br/&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;This observation immediately implies that the number of phases in which at least one relabeling operation takes place, is in &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt;. On the other hand, &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; is decreased in every iteration without relabel operation, because in this case, all excess is pushed from each active node to a node with smaller &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt;-label. Due to the bound &amp;lt;math&amp;gt;\mathcal{O}(n)&amp;lt;/math&amp;gt; on all increases of &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt;, the number of ''de''creases of &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; and, hence, the number of phases without relabel operations is in &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt; as well. The claim now follows from the observation that, in each phase, at most one non-saturating push is performed with each node because a non-saturating push makes a node inactive.&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;This observation immediately implies that the number of phases in which at least one relabeling operation takes place, is in &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt;. On the other hand, &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; is decreased in every iteration without relabel operation, because in this case, all excess is pushed from each active node to a node with smaller &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt;-label. Due to the bound &amp;lt;math&amp;gt;\mathcal{O}(n&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;^2&lt;/ins&gt;)&amp;lt;/math&amp;gt; on all increases of &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt;, the number of ''de''creases of &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; and, hence, the number of phases without relabel operations is in &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt; as well. The claim now follows from the observation that, in each phase, at most one non-saturating push is performed with each node because a non-saturating push makes a node inactive.&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=FIFO_preflow-push&amp;diff=2015&amp;oldid=prev</id>
		<title>Weihe: /* Complexity */</title>
		<link rel="alternate" type="text/html" href="https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=FIFO_preflow-push&amp;diff=2015&amp;oldid=prev"/>
		<updated>2014-11-10T13:07:19Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Complexity&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 13:07, 10 November 2014&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-l13&quot;&gt;Line 13:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 13:&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 [[Preflow-push#Complexity|complexity considerations]] for the [[Preflow-push|generic preflow-push algorithm]] yield &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt; relabel operations and &amp;lt;math&amp;gt;\mathcal{O}(n\!\cdot\!m)\subseteq\mathcal{O}(n^3)&amp;lt;/math&amp;gt; saturating push operations, where &amp;lt;math&amp;gt;m=|A|&amp;lt;/math&amp;gt;. There it was also shown that the total number of changes of outgoing arcs is in &amp;lt;math&amp;gt;\mathcal{O}(n^3)&amp;lt;/math&amp;gt;. Hence, it remains to show that the total number of non-saturating push operations is in &amp;lt;math&amp;gt;\mathcal{O}(n^3)&amp;lt;/math&amp;gt; as well.&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 [[Preflow-push#Complexity|complexity considerations]] for the [[Preflow-push|generic preflow-push algorithm]] yield &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt; relabel operations and &amp;lt;math&amp;gt;\mathcal{O}(n\!\cdot\!m)\subseteq\mathcal{O}(n^3)&amp;lt;/math&amp;gt; saturating push operations, where &amp;lt;math&amp;gt;m=|A|&amp;lt;/math&amp;gt;. There it was also shown that the total number of changes of outgoing arcs is in &amp;lt;math&amp;gt;\mathcal{O}(n^3)&amp;lt;/math&amp;gt;. Hence, it remains to show that the total number of non-saturating push operations is in &amp;lt;math&amp;gt;\mathcal{O}(n^3)&amp;lt;/math&amp;gt; as well.&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;br/&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;br/&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;Conceptually, we may partition the iterations of the main loop into ''phases''. The first phase commences with the very first iteration. A new phase commences as soon as all nodes that were in &amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; at the beginning of the last phase, have been extracted once from &amp;lt;matH&amp;gt;Q&amp;lt;/math&amp;gt;. Before and after each iteration, let &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; denote the maximum label &amp;lt;math&amp;gt;d(v)&amp;lt;/math&amp;gt; of any active node &amp;lt;math&amp;gt;v\in V\setminus\{s,t\}&amp;lt;/math&amp;gt;. In particular, it is always &amp;lt;math&amp;gt;0\leq D\leq 2n&amp;lt;/math&amp;gt;. Clearly, only relabel operations can increase &amp;lt;math&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;\Delta&lt;/del&gt;&amp;lt;/math&amp;gt;, and the sum of all increases of &amp;lt;math&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;\Delta&lt;/del&gt;&amp;lt;/math&amp;gt;, taken over all relabel operations, cannot increase &amp;lt;math&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;\Delta&lt;/del&gt;&amp;lt;/math&amp;gt; by more than &amp;lt;math&amp;gt;2n&amp;lt;/math&amp;gt; in total.&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;Conceptually, we may partition the iterations of the main loop into ''phases''. The first phase commences with the very first iteration. A new phase commences as soon as all nodes that were in &amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; at the beginning of the last phase, have been extracted once from &amp;lt;matH&amp;gt;Q&amp;lt;/math&amp;gt;. Before and after each iteration, let &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; denote the maximum label &amp;lt;math&amp;gt;d(v)&amp;lt;/math&amp;gt; of any active node &amp;lt;math&amp;gt;v\in V\setminus\{s,t\}&amp;lt;/math&amp;gt;. In particular, it is always &amp;lt;math&amp;gt;0\leq D\leq 2n&amp;lt;/math&amp;gt;. Clearly, only relabel operations can increase &amp;lt;math&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;D&lt;/ins&gt;&amp;lt;/math&amp;gt;, and the sum of all increases of &amp;lt;math&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;D&lt;/ins&gt;&amp;lt;/math&amp;gt;, taken over all relabel operations, cannot increase &amp;lt;math&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;D&lt;/ins&gt;&amp;lt;/math&amp;gt; by more than &amp;lt;math&amp;gt;2n&amp;lt;/math&amp;gt; in total.&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;br/&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;br/&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;This observation immediately implies that the number of phases in which at least one relabeling operation takes place, is in &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt;. On the other hand, &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; is decreased in every iteration without relabel operation, because in this case, all excess is pushed from each active node to a node with smaller &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt;-label. Due to the bound &amp;lt;math&amp;gt;\mathcal{O}(n)&amp;lt;/math&amp;gt; on all increases of &amp;lt;math&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;\Delta&lt;/del&gt;&amp;lt;/math&amp;gt;, the number of ''de''creases of &amp;lt;math&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;\Delta&lt;/del&gt;&amp;lt;/math&amp;gt; and, hence, the number of phases without relabel operations is in &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt; as well. The claim now follows from the observation that, in each phase, at most one non-saturating push is performed with each node because a non-saturating push makes a node inactive.&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;This observation immediately implies that the number of phases in which at least one relabeling operation takes place, is in &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt;. On the other hand, &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; is decreased in every iteration without relabel operation, because in this case, all excess is pushed from each active node to a node with smaller &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt;-label. Due to the bound &amp;lt;math&amp;gt;\mathcal{O}(n)&amp;lt;/math&amp;gt; on all increases of &amp;lt;math&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;D&lt;/ins&gt;&amp;lt;/math&amp;gt;, the number of ''de''creases of &amp;lt;math&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;D&lt;/ins&gt;&amp;lt;/math&amp;gt; and, hence, the number of phases without relabel operations is in &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt; as well. The claim now follows from the observation that, in each phase, at most one non-saturating push is performed with each node because a non-saturating push makes a node inactive.&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=FIFO_preflow-push&amp;diff=2014&amp;oldid=prev</id>
		<title>Weihe: /* Complexity */</title>
		<link rel="alternate" type="text/html" href="https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=FIFO_preflow-push&amp;diff=2014&amp;oldid=prev"/>
		<updated>2014-11-10T13:06:11Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Complexity&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 13:06, 10 November 2014&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-l11&quot;&gt;Line 11:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 11:&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;br/&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;br/&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;'''Proof:'''&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;'''Proof:'''&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;The [[Preflow-push#Complexity|complexity considerations]] for the [[Preflow-push|generic preflow-push algorithm]] yield &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt; relabel operations and &amp;lt;math&amp;gt;\mathcal{O}(n\!\cdot\!m)\subseteq\mathcal{O}(n^3)&amp;lt;/math&amp;gt; saturating push operations, where &amp;lt;math&amp;gt;m=|A|&amp;lt;/math&amp;gt;. There it was also shown that the total number of changes of outgoing arcs is in &amp;lt;math&amp;gt;\mathcal{O}(n^3)&amp;lt;/math&amp;gt;. Hence, it remains to show that the total number of non-saturating push operations is in &amp;lt;math&amp;gt;\mathcal{O}(n^3)&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;The [[Preflow-push#Complexity|complexity considerations]] for the [[Preflow-push|generic preflow-push algorithm]] yield &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt; relabel operations and &amp;lt;math&amp;gt;\mathcal{O}(n\!\cdot\!m)\subseteq\mathcal{O}(n^3)&amp;lt;/math&amp;gt; saturating push operations, where &amp;lt;math&amp;gt;m=|A|&amp;lt;/math&amp;gt;. There it was also shown that the total number of changes of outgoing arcs is in &amp;lt;math&amp;gt;\mathcal{O}(n^3)&amp;lt;/math&amp;gt;. Hence, it remains to show that the total number of non-saturating push operations is in &amp;lt;math&amp;gt;\mathcal{O}(n^3)&amp;lt;/math&amp;gt; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;as well&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;br/&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;br/&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;Conceptually, we may partition the iterations of the main loop into ''phases''. The first phase commences with the very first iteration. A new phase commences as soon as all nodes that were in &amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; at the beginning of the last phase, have been extracted once from &amp;lt;matH&amp;gt;Q&amp;lt;/math&amp;gt;. Before and after each iteration, let &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; denote the maximum label &amp;lt;math&amp;gt;d(v)&amp;lt;/math&amp;gt; of any active node &amp;lt;math&amp;gt;v\in V\setminus\{s,t\}&amp;lt;/math&amp;gt;. In particular, it is always &amp;lt;math&amp;gt;0\leq D\leq 2n&amp;lt;/math&amp;gt;. Clearly, only relabel operations can increase &amp;lt;math&amp;gt;\Delta&amp;lt;/math&amp;gt;, and the sum of all increases of &amp;lt;math&amp;gt;\Delta&amp;lt;/math&amp;gt;, taken over all relabel operations, cannot increase &amp;lt;math&amp;gt;\Delta&amp;lt;/math&amp;gt; by more than &amp;lt;math&amp;gt;2n&amp;lt;/math&amp;gt; in total.&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;Conceptually, we may partition the iterations of the main loop into ''phases''. The first phase commences with the very first iteration. A new phase commences as soon as all nodes that were in &amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; at the beginning of the last phase, have been extracted once from &amp;lt;matH&amp;gt;Q&amp;lt;/math&amp;gt;. Before and after each iteration, let &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; denote the maximum label &amp;lt;math&amp;gt;d(v)&amp;lt;/math&amp;gt; of any active node &amp;lt;math&amp;gt;v\in V\setminus\{s,t\}&amp;lt;/math&amp;gt;. In particular, it is always &amp;lt;math&amp;gt;0\leq D\leq 2n&amp;lt;/math&amp;gt;. Clearly, only relabel operations can increase &amp;lt;math&amp;gt;\Delta&amp;lt;/math&amp;gt;, and the sum of all increases of &amp;lt;math&amp;gt;\Delta&amp;lt;/math&amp;gt;, taken over all relabel operations, cannot increase &amp;lt;math&amp;gt;\Delta&amp;lt;/math&amp;gt; by more than &amp;lt;math&amp;gt;2n&amp;lt;/math&amp;gt; in total.&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;br/&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;br/&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;This observation immediately implies that the number of phases in which at least one relabeling operation takes place, is in &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt;. On the other hand, &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; is decreased in every iteration without relabel operation, because in this case, all excess is pushed from each active node to a node with smaller &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt;-label. Due to the bound &amp;lt;math&amp;gt;\mathcal{O}(n)&amp;lt;/math&amp;gt; on all increases of &amp;lt;math&amp;gt;\Delta&amp;lt;/math&amp;gt;, the number of ''de''creases of &amp;lt;math&amp;gt;\Delta&amp;lt;/math&amp;gt; and, hence, the number of phases without relabel operations is in &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt; as well. The claim now follows from the observation that, in each phase, at most one non-saturating push is performed with each node because a non-saturating push makes a node inactive.&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;This observation immediately implies that the number of phases in which at least one relabeling operation takes place, is in &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt;. On the other hand, &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; is decreased in every iteration without relabel operation, because in this case, all excess is pushed from each active node to a node with smaller &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt;-label. Due to the bound &amp;lt;math&amp;gt;\mathcal{O}(n)&amp;lt;/math&amp;gt; on all increases of &amp;lt;math&amp;gt;\Delta&amp;lt;/math&amp;gt;, the number of ''de''creases of &amp;lt;math&amp;gt;\Delta&amp;lt;/math&amp;gt; and, hence, the number of phases without relabel operations is in &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt; as well. The claim now follows from the observation that, in each phase, at most one non-saturating push is performed with each node because a non-saturating push makes a node inactive.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Weihe</name></author>
	</entry>
</feed>