Klassifikation der Min Cost Flow Algorithmen

Werbung
Klassifikation der Min Cost Flow
Algorithmen
Martin Gruber
Philipp Neuner
Jakob Puchinger
11. November 2004
Aufgabe 5
Klassifikation der Min Cost Flow Algorithmen.
Auf welchen Grundideen basieren die verschiedenen Klassen von Algorithmen?
Welches sind die Algorithmen mit der theoretisch besten Worst Case Laufzeit?
Welches sind die praktisch besten Min Cost Flow Algorithmen?
1 Einleitung
Es gibt viele verschiedene Algorithmen zur Lösung des Min Cost Flow Problems, das
folgendermaßen beschrieben werden kann:
X
Minimiere
cij xij
(1)
(i,j)∈A
u.d.N.
X
X
xij −
j:(i,j)∈A
xji = bi
∀i ∈ V
(2)
∀(i, j) ∈ A
(3)
j:(i,j)∈A
0 ≤ xij ≤ uij
Definiert ist das Problem auf einem gerichteten Graphen G = (V, A) mit der Knotenmenge V (|V | = n) und der Kantenmenge A (|A| = m). Über jede Kante (i, j) ∈ A
mit den assoziierten Kosten cij können höchstens uij Flusseinheiten geschickt werden;
es gilt cij ≤ C und uij ≤ U für alle (i, j) ∈ A. Die Flussvariablen xij geben den über die
Kante (i, j) tatsächlich transportierten Fluss wieder. Für eine Knoten i ∈ V beschreibt
bi dessen Flussbalance: Ist sie positiv, fließt entsprechend mehr Fluss aus dem Knoten
heraus als hinein; analog im negativen Fall.
Wir haben zwei Klassen von Algorithmen für dieses Problem identifiziert: Feasible Flow
und Optimal Infeasible Flow Algorithmen. Diese werden anhand von Beispielen erläutert
und einige ihrer Vertreter kurz vorgestellt. Weiters gehen wir auf die Worst Case Laufzeiten und die Praxistauglichkeit der verschiedenen Algorithmen ein. Maßgebliche Quelle
unserer Ausarbeitung ist das Buch Network Flows von Ahuja et al. [1].
1
2 Feasible Flow Algorithmen
Feasible Flow Algorithmen (FFA) beginnen mit einer – meist beliebigen – zulässigen
Lösung als Ausgangspunkt und erzeugen aus dieser iterativ neue zulässige Lösungen,
bis sie das Optimum erreicht haben. Ein Fluss stellt dann eine zulässige Lösung dar,
wenn für alle Knoten des Netzwerks die Flusserhaltungsbedingungen (2) und für alle
Kanten die Kapazitätsbeschränkungen (3) eingehalten werden. Die Lösung des Max
Flow Problems für das Netzwerk kann hierbei in polynomieller Zeit berechnet und als
zulässige Startlösung verwendet werden.
Die Algorithmen dieser Klasse unterscheiden sich im Wesentlichen darin, wie sie aus einem gegebenem, zulässigen, aber nicht optimalen Fluss einen weiteren zulässigen, möglicherweise optimalen Fluss erzeugen.
2.1 Cost Scaling Algorithmus
Ein Vertreter dieser Klasse von Algorithmen ist der Cost Scaling Algorithmus. Dieser
nutzt aus, dass ein optimaler Fluss x für ein Netzwerk das Complementary Slackness
Kriterium erfüllt:
cπij > 0 ⇒ xij = 0
(4)
cπij
cπij
= 0 ⇒ 0 < xij < uij
(5)
< 0 ⇒ xij = uij
(6)
cπij bezeichnet hierbei die reduzierten Kosten einer Kante (i, j) ∈ A bezüglich der dualen
Knotenpotentiale πi , i ∈ V :
cπij := cij − πi + πj
Der Cost Scaling Algorithmus weicht dieses Optimalitätskriterium auf und berechnet
-optimale Flüsse für immer kleinere . Analog zu (4) - (6) wird ein Fluss x als -optimal
betrachtet, wenn
cπij > ⇒ xij = 0
|cπij |
cπij
(7)
≤ ⇒ 0 < xij < uij
(8)
< ⇒ xij = uij
(9)
Man kann zeigen, dass jeder zulässige Fluss -optimal ist für ≥ C, wobei C für die
höchsten Kosten einer Kante im Flussnetzwerk steht [1]. In jeder Iteration des Algorith-
2
mus wird nun aus einem -optimalen Fluss ein 2 -optimaler Fluss erzeugt. Hierzu wird
der aktuelle Fluss so angepasst, dass (7) - (9) für = 2 erfüllt ist. Dadurch werden
im Allgemeinen die Flusserhaltungsgleichungen (2) an einigen Knoten verletzt werden.
Ähnlich dem Preflow-Push [1] Algorithmus für das Max Flow Problem wird nun solange
Fluss über geeignete Kanten geschickt bzw. die Potentiale πi einiger Knoten angehoben,
bis alle Nebenbedingungen wieder erfüllt sind. Die 2 -Optimalität bleibt hierbei jedenfalls
erhalten.
Es lässt sich zeigen, dass ein Fluss genau dann optimal ist, wenn er -optimal ist für <
1
|V | [1]. Nachdem in jeder Iteration halbiert wird, wird das Optimum sicher gefunden.
2.2 Weitere FAA
Weitere Vertreter der FFA sind beispielsweise der in der Vorlesung vorgestellte Cycle
Canceling Algorithmus, der Double Scaling Algorithmus – eine hinsichtlich der Laufzeit
verbesserte Variante des Cost Scaling Algorithmus – und einige Varianten des Network
Simplex Algorithmus.
3 Optimal Infeasible Flow Algorithmen
Die Optimal Infeasible Flow Algorithmen (OIFA) arbeiten während der Optimierung
mit so genannten Pseudoflüssen, d.h. mit Flüssen, die eine oder mehrere der Flussbedingungen – Flusserhaltung (2) bzw. Kapazitätsbeschränkung (3) – verletzen. Dafür
stellen sie aber die Einhaltung der Optimalitätskriterien (Negative Cycle, Reduced Cost
bzw. Complementary Slackness) sicher. Ziel eines solchen Algorithmus ist es nun, unter
Beibehaltung des jeweils verwendeten Optimalitätskriteriums den Pseudofluss solange
anzupassen, bis alle Flussbedingungen eingehalten sind und man damit gleichzeitig die
optimale Lösung für das Minimum Cost Flow Problem gefunden hat.
Gegenüber den FFA haben die OIFA die günstige Eigenschaft, dass sie meist mit einem
Nullfluss, d.h. alle Flussvariablen sind gleich Null, beginnen können. Der Aufwand für
die Erzeugung einer gültigen Startlösung entfällt damit im Normalfall.
3.1 Successive Shortest Path Algorithmus
Der Successive Shortest Path Algorithmus ist einer der einfacheren Vertreter der OIFA.
Die Grundidee besteht darin, dass, ausgehend von einem Nullfluss, zwischen Knoten
mit einem Überschuss und Knoten mit einem Defizit ein Ausgleich hergestellt werden
muss, um die Flusserhaltungsbedingungen (2) in jedem Knoten zu gewährleisten. Dies
geschieht dadurch, dass zwei beliebige Knoten mit Überschuss bzw. Defizit genommen
werden und der maximal mögliche Fluss über den kürzesten Weg, der diese beiden Knoten miteinander verbindet, geschickt wird, um die Niveaus möglichst anzugleichen. Der
3
Algorithmus terminiert, wenn alle Knoten im Gleichgewicht sind, d.h. die Flusserhaltungsbedingungen erfüllt sind.
Überschuss bzw. Defizit e(i) eines Knotens i sind folgendermaßen definiert (mit A als
die Menge der gerichteten Kanten):
X
X
xij
∀ Knoten i
xji −
e(i) = bi +
j:(i,j)∈A
j:(j,i)∈A
e(i) = 0: Knoten im Gleichgewicht
e(i) > 0: Überschuss
e(i) < 0: Defizit
Während der Optimierung wird dabei immer das Reduced Cost Optimalitätskriterium
(die reduzierten Kosten im Residualgraph müssen alle ≥ 0 sein) eingehalten. Es kann gezeigt werden, dass Fluss, der entlang des kürzesten Weges zwischen einem Überschussund einem Defizitknoten geschickt wird, die Gültigkeit dieses Kriteriums nicht beeinflusst.
3.2 Weitere OIFA
Hier nun ein kurzer Überblick über weitere OIFA:
Primal-Dual Algorithmus: Eine Variante des Successive Shortest Path Algorithmus,
bei dem mit Hilfe der Berechnung eines maximalen Flusses in einem umgebauten Residualgraph in einem Iterationsschritt gleich mehrere Überschuss/Defizit Knotenpaare
angeglichen werden.
Capacity Scaling Algorithmus: Ebenfalls eine Variante von Successive Shortest
Path, wobei hier in jeder Iteration nur kürzeste Wege betrachtet werden, über die eine Mindestmaß an Fluss geschickt werden kann. Dadurch wird gewährleistet, dass pro
Iteration mehr als das theoretische Minimum von einer Flusseinheit zum Ausgleich von
Überschüssen und Defiziten transportiert werden kann. Dies führt zu einem verbesserten
Laufzeitverhalten.
Parametric und Dual Network Simplex Algorithmen: Diese beiden Spielarten
des Network Simplex Algorithmus verletzen während der Optimierung für zwei ausgezeichnete Knoten die Flusserhaltungsbedingungen (Parametric) bzw. für einige Kanten
die Kapazitätsbedingungen (Dual), wobei die Optimalitätskriterien eingehalten werden.
Relaxation Algorithmus: Der Relaxation Algorithmus nimmt Anleihen an der aus
der ganzzahligen linearen Programmierung bekannten Technik der Lagrange Relaxierung
[2]. Dabei werden Nebenbedingungen, die die Lösung des Problems stark erschweren
(im konkreten Fall die Flusserhaltungsbedingungen), zunächst aus dem System entfernt,
deren Verletzung aber als Strafterm in die Zielfunktion aufgenommen. Da es das Ziel
ist, die Zielfunktion zu optimieren, müssen die Strafterme sukzessive auf Null gebracht
4
werden, was gleichzeitig der Einhaltung der zunächst entfernten Nebenbedingungen und
damit einer gültigen Lösung entspricht.
Etwas aus dem Rahmen fällt der Out-of-Kilter Algorithmus, denn dieser arbeitet
während der Optimierung zwar mit Pseudoflüssen, die die Kapazitätsbeschränkungen
(3) verletzen, hält allerdings die Optimalitätskriterien nicht ein. Wie der Name schon
andeutet, versucht er, ein Gleichgewicht herzustellen, allerdings nicht wie der Successive
Shortest Path Algorithmus zwischen Überschuss- und Defizitknoten, sondern bei den
reduzierten Kosten des Netzwerks, um gleichzeitig sowohl auf die Einhaltung der Kapazitätsgrenzen als auch des Complementary Slackness Optimalitätskriteriums (7)-(9)
hinzuarbeiten.
4 Worst Case Laufzeiten
Mann kann bei der theoretischen Analyse der Worst Case Laufzeiten folgende Unterscheidung treffen:
Pseudopolynomielle Laufzeit hängt polynomiell von der Größe (n und
m) und den Werten (C und U ) der Eingabeinstanzen ab.
Schwach polynomielle Laufzeit hängt polynomiell von der Größe und
den Logarithmen der Werte der Eingabeinstanzen ab.
Stark polynomielle Laufzeit hängt polynomiell ausschließlich von der
Größe der Eingabeinstanzen ab.
In Tabelle 1 sind die verschiedenen Min Cost Flow Algorithmen nach den oben beschriebenen Kategorien eingeteilt.
Die verschiedenen Varianten des Netzwerk Simplex Algorithmus können in polynomieller Laufzeit implementiert werden. Als Beispiel führen wir hier den dualen Netzwerk
Simplex Algorithmus von Plotkin und Tardos [4] an, welcher eine Worst Case Laufzeit
von O(m3 log n) aufweist. Der primale Netzwerk Simplex Algorithmus von Orlin [3] mit
einer Worst Case Laufzeit von O(min(n2 m log nC, n2 m2 log n)) war der erste stark polynomielle primale Netzwerk Simplex Algorithmus, welcher die lange Zeit ungelöste Frage
nach der Existenz eines solchen beantwortete.
5 Zusammenfassung - Beste Algorithmen in der Praxis
Wir haben gesehen, das es eine Vielzahl von Algorithmen zur Lösung des Min Cost Flow
Problems gibt, welche sich (bis auf einige wenige Ausnahmen) in zwei Klassen unterteilen
lassen: Feasible Flow Algorithmen und Optimal Infeasible Flow Algorithmen.
5
Pseudopolynomielle Laufzeit
Cycle canceling
O(nm2 CU )
Successive Shortest Path
O(nU (m + n log n))
Primal-Dual
O(min(nU, nC)(m + n log n)(M (n, m, U )))
Out-of-Kilter
O(mU (m + n log n))
Relaxation
schlechter als Cycle canceling
Capacity Scaling
Cost Scaling
Double Scaling
Schwach Polynomielle Laufzeit
O((m log U )(m + n log n))
O(n3 log(nC))
O(nm log U log(nC))
Stark Polynomielle Laufzeit
Minimum Mean Cycle Canceling O(n2 m3 log n)
Repeated Capacity Scaling
O((m2 log n)(m + n log n))
Enhanced Capacity Scaling
O((m log n)(m + n log n))
Tabelle 1: Worst Case Laufzeiten der vorgestellten Min Cost Flow Algorithmen, wobei
M (n, m, U ) für die Laufzeit eines Max-Flow Algorithmus steht.
Es existieren stark polynomielle Algorithmen zur Lösung des Min Cost Flow Problems.
In der Praxis haben sich vor allem die Netzwerk Simplex Algorithmen bewährt, wobei
nicht unerwähnt bleiben sollte, dass der Relaxation Algorithmus, trotz seines theoretisch
schlechten Worst Case Verhaltens, auf einigen Instanzklassen ebenbürtig oder zum Teil
sogar schneller ist.
Literatur
[1] R. K. Ahuja, T. L. Magnanti, and J. B. Orlin. Network flows: theory, algorithms,
and applications. Prentice-Hall, Inc., 1993.
[2] G. L. Nemhauser and L. A. Wolsey. Integer and Combinatorial Optimization. WileyInterscience, 1988.
[3] J. Orlin. A polynomial time primal network simplex algorithm for minimium cost
flows. Mathematical Programming, 78B:109–129, 1997.
[4] J. B. Orlin, S. A. Plotkin, and E. Tardos. Polynomial dual network simplex algorithms. Technical Report CS-TR-91-1374, 1991.
6
Herunterladen