Preflow-push with excess scaling: Difference between revisions

From Algowiki
Jump to navigation Jump to search
No edit summary
Line 22: Line 22:


# All steps in the [[Preflow-push#Induction basis|induction basis]] of the [[Preflow-push|preflow push algorithm]].
# All steps in the [[Preflow-push#Induction basis|induction basis]] of the [[Preflow-push|preflow push algorithm]].
# Set <math>\Delta:=2^L</math>, where <math>L:=<math>\lceil\log_2U\rceil</math> and <math>U:=\max\{u(a)|a\in A\}</math>.
# Set <math>\Delta:=2^L</math>, where <math>L:=\lceil\log_2U\rceil</math> and <math>U:=\max\{u(a)|a\in A\}</math>.


== Induction step ==
== Induction step ==

Revision as of 13:52, 29 October 2014

Abstract view

Algorithmic problem: max-flow problem (standard version)

Type of algorithm: a variation of the generic preflow-push algorithm.

Invariant: Before and after each iteration:

  1. The current flow is feasible.
  2. There is a nonnegative, integral value [math]\displaystyle{ \Delta }[/math].
  3. The excess [math]\displaystyle{ e_f(v) }[/math] of no active node [math]\displaystyle{ v }[/math] exceeds [math]\displaystyle{ \Delta }[/math].

Variant: [math]\displaystyle{ \Delta }[/math] is divided by two (integral division).

Break condition: [math]\displaystyle{ \Delta=0 }[/math].

Induction basis

  1. All steps in the induction basis of the preflow push algorithm.
  2. Set [math]\displaystyle{ \Delta:=2^L }[/math], where [math]\displaystyle{ L:=\lceil\log_2U\rceil }[/math] and [math]\displaystyle{ U:=\max\{u(a)|a\in A\} }[/math].

Induction step

Abstract view: Run the preflow-push algorithm with two modifications:

  1. Ignore all active nodes whose excess is smaller than [math]\displaystyle{ \Delta/2 }[/math].
  2. Among the nodes with excess at least [math]\displaystyle{ \Delta/2 }[/math], choose one with minimum [math]\displaystyle{ d }[/math]-label.
  3. Do not push more