Evakuierung und Netzwerkflüsse - Lehrstuhl für praktische Informatik

Werbung
Evakuierung und Netzwerkflüsse
Diplomarbeit
bei Prof. Dr. Martin Skutella
vorgelegt von Ingo Schulz
am Lehrstuhl für Diskrete Optimierung
der Universität Dortmund
Dortmund, 13. Oktober 2007
Für meinen Vater Wolfgang
Einleitung
Diese Diplomarbeit befasst sich mit dem Lösen von Evakuierungsproblemen. Dabei können wir uns zunächst ein Evakuierungsproblem vorstellen,
wie es in der Realität vorkommen kann. Ein sehr gutes Beispiel für solch ein
Problem ist die Flugzeugevakuierung, bei der es darum geht, dass in einem
gewissen Zeitrahmen alle Passagiere ihr Flugzeug verlassen haben müssen.
Ein Auftraggeber könnte uns einen Zeitrahmen nennen und von uns verlangen, einen Evakuierungsplan zu entwickeln, so dass alle Passagiere innerhalb
des Zeitrahmens das Flugzeug verlassen können. Was ist aber, wenn wir feststellen, dass der Zeitrahmen nicht ausreichend ist. Der Auftraggeber könnte
dann unser Problem vereinfachen und verlangen, dass wir einen Plan entwickeln, so dass so viele Passagiere wie möglich zu diesem Zeitrahmen ihr
Flugzeug verlassen können. Wie so oft im Leben können sich Aufträge in
letzter Minute ändern. Z. B. kann der Auftraggeber einen kleineren Zeitrahmen vorschreiben, bzgl. dessen wir einen Plan aufstellen müssen. Müssen
wir unseren alten Plan zu dem alten Zeitrahmen verwerfen?
Wenn wir das Problem mit Mitteln aus der diskreten Mathematik bzw.
theoretischen Informatik modellieren, die wir in dieser Diplomarbeit vorstellen werden, und den ersten Plan geschickt erstellt haben, so lautet die
Antwort: nein. Wir übersetzen das Problem in die Sprache der Flusstheorie
und modellieren das Flugzeug mit Netzwerken. Das mathematische Problem,
dessen Lösung uns hier Abhilfe schafft, ist das sogenannte Earliest Arrival
Transshipment Problem, welches wir in dieser Arbeit definieren werden und
für welches wir exakte und heuristische Lösungsmöglichkeiten aufzeigen.
Das erste Kapitel gibt eine Übersicht über die nötigen Grundlagen um
diese mathematischen Begriffe zu verstehen. Wir werden in diesem Kapitel
Graphen definieren und einige wichtige grundlegende Begriffe hervorheben.
Dazu werden wir auch grundlegende Probleme definieren und dabei Lösungen in Form von Algorithmen präsentieren.
Für Details zur Komplexität von Algorithmen verweisen wir auf [22] von
Ingo Wegener. Dort wird auch die Eingabegröße eines Algorithmus genau
definiert, in dessen Abhängigkeit wir die Laufzeit von Algorithmen messen
werden. In der Eingabe haben wir meist Graphen und gewisse Zahlen. Unsere Algorithmen arbeiten streng polynomiell, wenn die Laufzeit sich durch
ein Polynom, welches unabhängig von den eingegebenen Zahlen ist, in Abhängigkeit von der Anzahl der Knoten und Kanten abschätzen lässt. Unsere Algorithmen arbeiten pseudopolynomiell, wenn die Laufzeit polynomiell
von der Anzahl der Knoten und Kanten und zusätzlich von der größten dargestellten Zahl der Eingabe abhängt. Wenn aber die Laufzeit polynomiell
v
vi
von der Größe des Graphens und zusätzlich nur von der Eingabelänge der
größten vorkommenden Zahl abhängt, dann haben wir einen polynomiellen
Algorithmus.
Ferner geben wir im ersten Kapitel eine Einleitung in die Flusstheorie
statischer sowie dynamischer Netzwerke und werden uns dort mit klassischen Flussproblemen beschäftigen. Am Ende des Kapitels schlagen wir mit
dem Instrument des zeitexpandierten Graphen eine Brücke zwischen der
statischen und dynamischen Flusstheorie. Dieser Graph hilft uns gewisse
dynamische Probleme auf statische Probleme zu reduzieren.
Das zweite Kapitel beschäftigt sich mit dem Evakuierungsproblem, dem
Problem eine kleinste Zeitschranke zu finden, innerhalb welcher eine gewisse
Anzahl von Flusseinheiten von gegebenen Quellen zu einer Senke transportiert werden können. Wir zeigen auf, wie man mittels dynamischer Netzwerke dieses Problem definiert und wir geben an, wie bisher dieses Problem
behandelt wurde und wie es exakt und approximativ gelöst werden kann.
Wir definieren Flüsse, welche die Eigenschaft haben, dass sie zu jedem Zeitpunkt die bis dahin maximal mögliche Anzahl an Flusseinheiten von einer
Quelle zu einer Senke transportieren können. Wir beweisen die Existenz dieser Flüsse und geben exakte und approximative Lösungsmöglichkeiten an.
Schließlich untersuchen wir das Problem, welches wir am Anfang motiviert
haben. Wenn wir ein Netzwerk mit mehreren Quellen gegeben haben und
vorab bekannt ist, wieviele Flusseinheiten von diesen Quellen in eine Senke
fließen müssen, dann gibt es ebenfalls Flüsse, die zu jedem Zeitpunkt von
keinem anderen Fluss in der Anzahl der bis dahin transportierten Flusseinheiten geschlagen werden können. Diese Flüsse lösen das am Anfang motivierte Earliest Arrival Transshipment Problem und lösen insbesondere das
Evakuierungsproblem, wie es formal in der Mathematik und Informatik bekannt ist. Wir beweisen hier ebenfalls die Existenz dieser Flüsse und geben
eine exakte Lösungsmöglichkeit an.
Im letzten Kapitel stellen wir heuristische Lösungsansätze des Earliest
Arrival Transshipment Problem vor. Heuristiken sind in der Praxis interessant geworden, da bisher bekannte exakte Lösungsmöglichkeiten sehr unpraktikabel sind, d. h. bei einer sehr großen Instanz des Problems können wir
nicht mit einer praktisch befriedigenden Laufzeit rechnen. Die Heuristiken
dagegen sind einfach zu implementieren und besitzen eine praktisch schnelle
Laufzeit.
Wir werden drei Heuristiken beschreiben, welche im Rahmen der Flugzeugevakuierung entwickelt wurden. Wir werden sie dann auf einigen ausgewählten Instanzen, welche anhand von Flugzeugsitzplänen modelliert wurden, anwenden. Wir vergleichen die Lösungen der Heuristiken untereinander
und jeweils mit der exakten Lösung und geben eine Übersicht über die Qualität der berechneten Lösungen.
vii
Danksagung
Ich möchte mich an dieser Stelle sehr bei meinen Eltern Renate und Wolfgang bedanken, die mir das Studium ermöglicht haben und mich in jeder
erdenklichen Situation unterstützt haben. Schade ist nur, dass mein Vater
die Vollendung dieser Arbeit nicht mehr erleben kann. Ich widme ihm daher
diese Arbeit.
Bei meiner Schwester Silvia bedanke ich mich, da sie mich ebenfalls zu
jedem Zeitpunkt auf vielfältigste Weise unterstützt hat.
Weiterhin möchte ich mich bei meiner Freundin Katrin Thadeusz, sowie
bei den übrigen Mitgliedern der Familie Thadeusz bedanken, da sie mich
einerseits sehr gut unterstützt haben, aber auch deswegen, dass, wenn es
nötig war, sie mich von dieser Arbeit zum Ausgleich abgelenkt haben.
Für die fachliche Unterstützung möchte ich mich sehr bei meinem Betreuer Martin Skutella und seiner ehemaligen Assistentin Nadine Baumann
bedanken. Weiterhin möchte ich mich für konstruktive Ratschläge bei Daniel Dressler, Martin Gross, Katrin Kosfeld, Britta Peis, Daniel Plümpe,
Joachim Reichel, Thomas Rohkämper und Madeleine Theile bedanken.
Inhaltsverzeichnis
1 Graphentheoretische Grundlagen
1.1 Grundlegende Definitionen . . . . . .
1.2 Kürzeste Pfade . . . . . . . . . . . .
1.3 Flussprobleme . . . . . . . . . . . . .
1.3.1 Statische maximale s-t-Flüsse
1.3.2 statische Minimalkostenflüsse
1.4 dynamische Flussprobleme . . . . . .
1.5 Zeitexpandierte Graphen . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2 Evakuierungsprobleme
2.1 Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 Das Quickest Transshipment Problem . . . . . . . . . . . . .
2.3 Die Earliest Arrival Eigenschaft und dynamische Flüsse . . .
2.4 Earliest Arrival Flow Probleme mit einer Quelle und einer Senke
2.4.1 Existenz . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4.2 Verallgemeinerte Pfadzerlegungen . . . . . . . . . . .
2.4.3 Exakte Algorithmen . . . . . . . . . . . . . . . . . . .
2.4.4 Approximationsalgorithmen . . . . . . . . . . . . . . .
2.5 Earliest Arrival Transshipments . . . . . . . . . . . . . . . . .
2.5.1 Existenz . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5.2 Ein exakter Algorithmus für das Earliest Transshipment Problem . . . . . . . . . . . . . . . . . . . . . . .
1
1
4
6
8
11
16
27
33
33
34
42
44
44
49
50
55
58
58
60
3 Heuristiken
63
3.1 Die kürzeste Wege Heuristik . . . . . . . . . . . . . . . . . . . 66
3.2 Die Alternativausgang Unterheuristik . . . . . . . . . . . . . 69
3.3 Die Ausgangentlastungs-Heuristik . . . . . . . . . . . . . . . . 72
3.4 Die kürzeste Fahrzeit Heuristik . . . . . . . . . . . . . . . . . 77
3.5 Ein kleines Beispiel . . . . . . . . . . . . . . . . . . . . . . . . 80
3.5.1 Eine Pfadzerlegung eines Earliest Arrival Transshipments . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
3.5.2 Anwendung der kürzesten Wege Heuristik . . . . . . . 82
3.5.3 Anwendung der Ausgangentlastungs-Heuristik . . . . 84
3.5.4 Anwendung der kürzesten Fahrzeit Heuristik . . . . . 86
3.6 Die Heuristiken in der Praxis . . . . . . . . . . . . . . . . . . 88
3.6.1 Ergebnisse des exakten Algorithmus . . . . . . . . . . 90
3.6.2 Ergebnisse der Heuristiken . . . . . . . . . . . . . . . 91
ix
x
Inhaltsverzeichnis
3.6.3
3.6.4
Weitere Instanzen . . . . . . . . . . . . . . . . . . . .
Zusammenfassung und Ausblick . . . . . . . . . . . .
92
98
Liste der Algorithmen
103
Literaturverzeichnis
105
Erklärung
107
A Arrival Pattern
A-1
Kapitel 1
Graphentheoretische Grundlagen
Die im weiteren Verlauf dieser Diplomarbeit vorgestellten Probleme benötigen in ihren Instanzen den Begriff des Graphen. Dieser Begriff, sowie weitere
dazugehörige grundlegende Problemstellungen und Lösungsmethoden werden in diesem Kapitel, welches sich hauptsächlich nach dem Buch von Korte
und Vygen [15] richtet, behandelt. Zunächst werden die wichtigsten Definitionen und Notationen eingeführt. In weiteren Abschnitten werden die
wichtigsten Grundprobleme eingeführt.
1.1
Grundlegende Definitionen
Definition 1.1. Seien V, A endliche Mengen und ψ : A → {X ⊂ V : |X| = 2}
sowie φ : A → {(v, w) ∈ V × V : v 6= w} Abbildungen.
(1) Das Tripel (V, A, ψ) heißt ungerichteter Graph.
(2) Das Tripel (V, A, φ) heißt gerichteter Graph oder kurz Digraph.
(3) Ein Element v ∈ V heißt Knoten oder Ecke.
(4) Ein Element a ∈ A wird als Kante bezeichnet.
Definition 1.2. Seien G = (V, A, ψ) ein Graph und e sowie e0 ∈ A Kanten
mit e 6= e0 . Gilt ψ(e) = ψ(e0 ), so heißen e und e’ parallel. Graphen ohne
parallele Kanten werden schlicht oder einfach genannt.
Bemerkungen 1.3. (1) Im Folgenden identifizieren wir in einem Graphen G = (V, A, ψ) einfachheitshalber die Kanten mit ihren Bildern bzgl. ψ, so dass wir von nun an G = (V, A) schreiben mit
A ⊂ {X ⊂ V : |X| = 2}, wenn G ungerichtet ist bzw. A ⊂ V × V ,
sofern G gerichtet ist.
(2) Wenn im Folgenden ein Graph G nicht näher spezifiziert wird, wird
G = (V, A) angenommen und n := |V | und m := |E| gesetzt.
Definition 1.4. Seien G = (V, A) und e = {v, w} bzw. e = (v, w) eine
Kante. Dann ist v ein Nachbar von w (und umgekehrt) und die Knoten
v und w sind adjazent und heißen Endpunkte von e. Endpunkte einer
Kante e ∈ A werden als inzident zu e bezeichnet. Im gerichteten Fall sagen
wir, dass die Kante e den Knoten v verlässt und zum Knoten w führt.
Kanten die zumindest einen Endpunkt gemeinsam haben, heißen adjazent.
1
2
Graphentheoretische Grundlagen
Um später Sachverhalte einfacher darzustellen, führen wir noch häufig
vorkommende Notationen ein.
Definition 1.5. Sei G = (V, A) ein Graph und X ⊂ V .
(1) Wenn G ungerichtet ist, setzen wir
δ(X) := {{v, w} ∈ A : v ∈ X, w ∈ V \ X}
für die Menge aller Kanten, die zu einem Knoten außerhalb von X
führen. Falls X={v} gilt setzen wir δ(v) := δ({v}). Werden in einem Sachverhalt noch andere Graphen betrachtet, ergänzen wir in der
Schreibweise den Namen des Graphen und schreiben δG (X) statt δ(X).
(2) Sei G ungerichtet. Ein Schnitt (engl. cut) ist eine Kantenmenge C ⊂ A zu welcher es eine Knotenmenge X gibt, so dass C = δ(X)
gilt.
(3) Wenn G gerichtet ist, setzen wir
δ + (X) := {(v, w) ∈ A : v ∈ X, w ∈ V \ X}
für die Menge aller Kanten, welche aus X herausführen, und
δ − (X) := {(w, v) ∈ A : v ∈ X, w ∈ V \ X} für die Menge aller Kanten, welche nach x hineinführen. Werden in einem Sachverhalt noch
andere Graphen betrachtet, ergänzen wir in der Schreibweise den Na−
+
(X) statt
(X) statt δ + (X) und δG
men des Graphen und schreiben δG
−
δ (X).
(4) Seien G gerichtet und s, t ∈ V mit s 6= t. Ein gerichteter Schnitt ist
eine nichtleere Kantenmenge C ⊂ A zu welcher es eine Knotenmenge
X gibt, so dass C = δ + (X) gilt. Ein s-t Schnitt ist eine Kantenmenge
C ⊂ A zu zu welcher es eine Knotenmenge X gibt, so dass C = δ + (X),
s ∈ X und t ∈
/ X gelten.
X
(5) Sei c : A → R eine Funktion. Für F ⊂ A setzen wir c(F ) :=
c(e)
e∈F
und erweitern damit c zu einer Funktion c : 2A → R
(6) Seien G gerichtet und c : A → R und s, t ∈ V mit s 6= t zwei Ausgezeichnete Knoten. Dann wird das Tupel (G, c, s, t) als Netzwerk
bezeichnet.
Bemerkungen 1.6. Die Funktion c aus Punkt (6) der Definition 1.5 wird
in diesem Abschnitt, sowie im folgenden Abschnitt über kürzeste Wege als
Kosten- oder Längenfunktion betrachtet und auch als solche bezeichnet.
In späteren Abschnitten betrachten wir Netzwerke der Form (G, u, s, t), in
welchen wir u als Kapazitätsfunktion bezeichnen werden, welche eine obere Schranke für eine später gesuchte Funktion auf den Kanten darstellen soll.
1.1 Grundlegende Definitionen
3
Mit Hilfe der letzten Definition können wir nun das erste in dieser Diplomarbeit behandelte Graphenproblem definieren, das sogenannte MIN
CUT -Problem auf Netzwerken:
MIN CUT Problem
Instanz: Ein Netzwerk N = (G, c, s, t)
Gesucht: Ein s-t-Schnitt mit minimalen Kosten, d. h. gesucht ist eine
Menge X ⊂ V mit s ∈ X und t ∈ V \X welche den Ausdruck
c(δ + (X)) minimiert.
Dieses Problem wird an dieser Stelle zunächst noch nicht untersucht, da es
mit einem weiteren wichtigen Problem in der Flusstheorie zusammenhängt,
welches erst später in dieser Diplomarbeit im Rahmen der Flusstheorie behandelt wird.
Bis jetzt haben wir Graphen und einige Bezeichnungen und Notationen über Lageverhältnisse definiert. Im weiteren Verlauf werden Pfade in
Graphen eine wichtige Rolle spielen. Um diese zu definieren brauchen wir
zunächst den Begriff des Teilgraphen.
Definition 1.7. Sei G = (V, A) ein Graph.
(1) Ein Graph G0 = (V 0 , A0 ) heißt Teilgraph von G, falls V 0 ⊂ V und
A0 ⊂ A gilt. Wir sagen in diesem Fall, dass der Graph G den Graphen
G0 enthält.
(2) Seien V 0 ⊂ V und A0 := {(v, w) oder {v, w} ∈ A : v, w ∈ V 0 }.
G[V 0 ] := G0 = (V 0 , A0 ) heißt der von V 0 induzierte Teilgraph.
Nun können wir Wege und Pfade definieren.
Definition 1.8. Seien G = (V, A) ein Graph und W = (e1 , . . . , ep ) mit
ek = (vk , vk+1 ) oder ek = {vk , vk+1 } (1 ≤ k ≤ n − 1) eine Folge von
Kanten in G.
(1) W heißt Weg, falls ei 6= ej für alle 1 ≤ i < j ≤ p gilt.
(2) W heißt geschlossener Weg, wenn zu (1) zusätzlich ep = e1 gilt.
(3) Der Teilgraph P = ({v1 , . . . , vp+1 }, {e1 , . . . , ep }) von G heißt Pfad,
falls vi 6= vj für alle 1 ≤ i < j ≤ p + 1 gilt. P nennt man auch Pfad
von v1 nach vp+1 oder kurz v1 -vp+1 -Pfad.
(4) Sei P = (VP , AP ) ein v-w-Pfad. Dann bezeichnet P[x,y] den Teilgraphen von P welcher ein x-y-Pfad ist.
(5) Der Teilgraph P = ({v1 , . . . , vp+1 }, {e1 , . . . , ep }) von G heißt Kreis,
falls vi 6= vj für alle 1 ≤ i < j ≤ p und v1 = vp+1 gilt.
4
Graphentheoretische Grundlagen
Mit Hilfe des Pfadbegriffes kann man nun die Eigenschaft des Zusammenhangs in Graphen erklären. Im weiteren Verlauf werden die untersuchten
Graphen immer als zusammenhängend vorausgesetzt.
Definition 1.9. (1) Ein ungerichteter Graph G = (V, A) heißt zusammenhängend, wenn es für alle v, w ∈ V mit v 6= w einen v-w-Pfad
gibt.
(2) Ein gerichteter Graph G = (V, A) heißt zusammenhängend, wenn
der zu G zugrundeliegende ungerichtete Graph G0 (G0 := (V, A0 )
mit {v, w} ∈ A0 , falls (v, w) ∈ A oder (w, v) ∈ A gilt) zusammenhängend ist.
(3) Ein gerichteter Graph G = (V, A) heißt stark zusammenhängend,
wenn es für alle v, w ∈ V mit v 6= w einen v-w-Pfad und einen w-vPfad gibt.
1.2
Kürzeste Pfade
Kürzeste Pfade in Graphen zu bestimmen ist ein weiteres grundlegendes
Problem in der Graphentheorie. Dieses Problem tritt häufig auf, insbesondere in den später vorgestellten Heuristiken. Das Problem, in einem Graphen
zwischen zwei Knoten den kürzesten Pfad zu bestimmen, ist wie folgt definiert:
SHORTEST PATH PROBLEM
Instanz: Ein Netzwerk N = (G, c, s, t)
Gesucht: Ein kürzester s-t-Pfad mit minimaler Länge, d. h. gesucht ist
ein Pfad P = (VP , AP ) von s nach t, welcher den Ausdruck
c(AP ) minimiert, oder die Antwort, dass es keinen Pfad von
s nach t gibt.
Im Falle einer beliebigen Kostenfunktion c ist lt. [15] das Problem kürzeste
Pfade zu finden i. A. ein schweres Problem. Wenn wir aber zusätzliche Voraussetzungen an die Kostenfunktion stellen, z. B. dass c nicht negativ ist, ist
das Problem praktikabel und es existieren Algorithmen, von welchen zwei im
Folgenden vorgestellt werden. Bei den später betrachteten Graphen, werden
wir ausschließlich konservative Funktionen auf der Kantenmenge betrachten.
Definition 1.10. Seien G = (V, A) ein Graph und c : A → R eine Funktion.
c heißt konservativ, wenn es keinen Kreis in G gibt mit negativem Gewicht,
d. h. es gibt keinen Kreis C = (VC , AC ) in G mit c(AC ) < 0.
Der erste hier vorgestellte Algorithmus, welcher kürzeste Pfade von einem ausgezeichneten Knoten zu allen anderen Knoten im Graphen berech-
1.2 Kürzeste Pfade
5
net, ist der Algorithmus von Dijkstra. Er basiert auf dem Optimalitätsprinzip von Bellman, welches besagt, dass optimale Lösungen sich ausschließlich
aus optimalen Teillösungen zusammensetzen. Auf das kürzeste Wege Problem bezogen besagt es, falls P = (VP , AP ) ein kürzester s-t-Pfad ist, so ist
auch jeder Pfad P[s,v] mit v ∈ VP ein kürzester s-v-Pfad. Dieses Prinzip ist
die Grundlage der dynamischen Programmierung, welche im Algorithmus
von Dijkstra und einigen anderen kürzeste-Wege-Algorithmen angewendet
wird. Eine gute Einführung zur dynamischen Programmierung kann man in
[23] finden.
Theorem 1.11 (Optimalitätsprinzip von Bellman[15]). Seien G = (V, A)
ein gerichteter Graph und c : A → R eine konservative Kostenfunktion. Ferner seien k ∈ N, s, w ∈ V und P = (VP , AP ) ein s-w-Pfad
mit |AP | ≤ k Kanten und es gelte c(AP ) ≤ c(AP 0 ) für alle s-w-Pfade
P 0 = (VP 0 , AP 0 ) mit |AP 0 | ≤ k . Dann ist der Pfad P[s,v] für alle v ∈ VP \{w}
unter allen Pfaden mit höchstens k − 1 Kanten kostenminimal, d. h. für alle
s-v-Pfade P ∗ = (VP ∗ , AP ∗ ) mit |AP ∗ | ≤ k − 1 gilt c(AP[s,v] ) ≤ c(AP ∗ ).
Theorem 1.12 ([15]). Der Algorithmus von Dijkstra arbeitet korrekt und
hat eine Laufzeit von O(n2 ). Durch eine geschickte Wahl der Datenstrukturen, kann er aber auch eine Laufzeit von O(m + n log n) haben.
Der nächste kürzeste Wege Algorithmus, welcher nun vorgestellt wird,
ist der Algorithmus von Moore-Bellman-Ford. Dieser erwartet wie der Algorithmus von Dijkstra einen Graphen G, eine Kostenfunktion c und einen
ausgezeichneten Knoten s, von welchem aus alle kürzesten Wege zu allen
anderen Knoten berechnet werden. Der Vorteil des Algorithmus von MooreBellman-Ford ist der, dass c konservativ sein darf. Auch dieser Algorithmus
basiert auf der dynamischen Programmierung.
Theorem 1.13 ([15]). Der Algorithmus von Moore-Bellman-Ford arbeitet
korrekt und hat eine Laufzeit von O(n · m).
Mit Hilfe des Algorithmus von Moore-Bellman-Ford läßt sich auch überprüfen, ob eine gegebene Kostenfunktion konservativ ist. Dies funktioniert
mit dem Nachweis zulässiger Potentialfunktionen.
Definition 1.14. Sei G = (V, A) ein gerichteter Graph und c : A → R eine
Kostenfunktion. Weiterhin sei eine Funktion π : V → R gegeben.
(1) Bezüglich c und π nennen wir die Funktion cπ : A → R mit
cπ ((x, y)) := c((x, y)) + π(x) − π(y) reduzierte Kosten der Kante
(x, y).
(2) π heißt zulässiges Potential, wenn die reduzierten Kosten aller Kanten nichtnegativ sind, d. h. es gilt cπ (e) ≥ 0 für alle Kanten e ∈ A.
6
Graphentheoretische Grundlagen
input
: Ein Digraph G = (V, A), eine Kostenfunktion
c : A → R+ und ein Knoten s ∈ V
output : l(v) und p(v) für alle v ∈ V : l(v) für alle v ∈ V
bezeichnet die Länge eines kürzesten s-v Pfades bzgl. c
welcher aus einem kürzesten s-p(v)-Pfad und der Kante
(p(v), v) besteht. Somit bezeichnet p(v) den
Vorgängerknoten auf einem kürzesten s-v Pfad. Falls es
keinen s-v-Pfad gibt, wird l(v) = ∞ zurückgeliefert und
p(v) bleibt unbestimmt.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
l(s) := 0; R := ∅;
foreach v ∈ V \ {s} do
l(v) := ∞;
end
repeat
Bestimme v ∈ V \ R mit l(v) = min l(w);
w∈V \R
R := R ∪ {v};
foreach w ∈ V \ R mit (v, w) ∈ A do
if l(w) > l(v) + c((v, w)) then
l(w) := l(v) + c((v, w));
p(w) := v;
end
end
until V = R ;
Algorithmus 1.1 : Der Algorithmus von Dijkstra
Theorem 1.15 ([15]). Seien G = (V, A) ein gerichteter Graph und c : A →
R eine Kostenfunktion.
(1) Die Kostenfunktion c ist genau dann konservativ, wenn es bzgl. c ein
zulässiges Potential gibt.
(2) Mit Hilfe des Moore-Bellman-Ford Algorithmus kann man in O(nm)
Zeit überprüfen, ob es entweder einen negativen Kreis oder ein zulässiges Potential gibt.
1.3
Flussprobleme
In diesem Abschnitt stellen wir eine weitere Klasse von Problemen auf Graphen vor, nämlich die Klasse der Flussprobleme. Gegeben sei ein Netzwerk
N = (G, u, s, t). Ein Fluss ist i. A. eine Abbildung, die jeder Kante einen
positiven Wert zuweist und zusätzlich einige wichtige Eigenschaften erfüllen muss. Interpretiert man diese Abbildung als Flusseinheiten, welche sich
7
1.3 Flussprobleme
input
: Ein Digraph G = (V, A), eine konservative
Kostenfunktion c : A → R und ein Knoten s ∈ V
output : l(v) und p(v) für alle v ∈ V : l(v) für alle v ∈ V
bezeichnet die Länge eines kürzesten s-v Pfades bzgl. c
welcher aus einem kürzesten s-p(v)-Pfad und der Kante
(p(v), v) besteht. Somit bezeichnet p(v) den
Vorgängerknoten auf einem kürzesten s-v Pfad. Falls es
keinen s-v-Pfad gibt, wird l(v) = ∞ zurückgeliefert und
p(v) bleibt unbestimmt.
l(s) := 0;
foreach v ∈ V \ {s} do
3
l(v) := ∞;
4 end
5 for i := 1 → n − 1 do
6
foreach (v, w) ∈ A do
7
if l(w) > l(v) + c((v, w)) then
8
l(w) := l(v) + c((v, w));
9
p(w) := v;
10
end
11
end
12 end
Algorithmus 1.2 : Der Algorithmus von Moore-Bellman-Ford
1
2
in den Kanten befinden, so sprechen wir von einem statischen Fluss. Interpretiert man diese Werte als Flussraten und fügt noch eine zusätzliche
Zeitkomponente in die Instanz ein, so haben wir es mit einem dynamischen
Fluss zu tun. Zunächst behandeln wir statische Flussprobleme und werden
den Flussbegriff genauer spezifizieren:
Definition 1.16. Sei N = (G, u, s, t) ein Netzwerk.
(1) Ein Fluss ist eine Abbildung f : A → R+ , welche die Bedingung
f (e) ≤ u(e) für alle e ∈ A erfüllt. Man bezeichnet hier u als Kapazitätsfunktion.
(2) Ein Fluss f erfüllt die Flusserhaltungseigenschaft im Knoten v ∈
V falls,
X
X
exf (v) :=
f (e) −
f (e) = 0
e∈δ − (v)
e∈δ + (v)
gilt.
(3) Ein Fluss f heißt Zirkulation, falls exf (v) = 0 für alle v ∈ V gilt.
8
Graphentheoretische Grundlagen
(4) Ein Fluss f heißt s-t-Fluss, falls exf (s) < 0, exf (t) > 0 und in
allen anderen Knoten die Flusserhaltungseigenschaft, also exf (v) = 0
für alle v ∈ V \ {s, t} gilt. Der Flusswert (oder kurz: Wert) eines
s-t-Flusses f wird mit val(f ) := −exf (s) bezeichnet.
Die im Folgenden betrachteten Flussalgorithmen arbeiten auf Graphen,
welche gegenüber dem Ausgangsgraphen des Netzwerks leicht modifiziert
bzw. erweitert werden. Es handelt sich dabei um die Residualgraphen.
Definition 1.17. Seien G = (V, A) ein gerichteter Graph und u : A → R+
eine Kapazitätsfunktion.
↔
(1) G ist der Graph, der entsteht, indem für alle e = (v, w) ∈
←
A eine Rückwärtskante e := (w, v) zusätzlich eingefügt wird.
←
In diesem Fall heißt e die Rückwärtskante der Kante e, d. h.
↔
←
G := (V, A ∪˙ { e : e ∈ A}). Kanten e ∈ A werden zur Verdeutlichung auch Vorwärtskanten genannt.
(2) Sei f ein Fluss. Dann heißt die Funktion uf : A↔ → R+ mit uf (e) :=
G
←
u(e) − f (e) und uf ( e ) := f (e) für alle e ∈ A Residualkapazitäts↔
funktion und weist jeder Kante in G eine Residualkapazität zu.
(3) Der Residualgraph von G bzgl. des Flusses f ist der Graph Gf :=
(V, AGf ) := (V, {e ∈ A↔ : uf (e) > 0})
G
(4) Seien f ein Fluss, γ > 0 und P = (VP , AP ) ein Pfad in Gf . Augmentieren von f entlang P um γ bezeichnet folgenden Vorgang, durch
welchen man einen neuen Fluss f 0 erhält, sofern 0 ≤ f 0 (a) ≤ u(a) für
alle a ∈ A gilt:

←

a, a ∈
/ AP
f (a)
←
0
f (a) := f (a) + γ a ∈ AP , a ∈
/ AP

←

f (a) − γ a ∈ AP , a ∈
/ AP
(5) Sei f ein s-t-Fluss in G. Ein f -augmentierender Pfad bzw. flussvergrößender Pfad ist ein s-t-Pfad in Gf .
1.3.1
Statische maximale s-t-Flüsse
Mit Hilfe der vorangegangenen Definitionen können wir uns nun dem ersten
klassischen Flussproblem widmen, dem MAX FLOW Problem. Es besteht
darin bei einem gegebenen Netzwerk einen Fluss zu finden, dessen Flusswert
maximal ist.
1.3 Flussprobleme
9
MAX FLOW Problem
Instanz: Ein Netzwerk N = (G, u, s, t)
Gesucht: Ein s-t-Fluss mit maximalem Flusswert, d. h. gesucht ist ein
s-t-Fluss f mit val(f ) ≥ val(f 0 ) für alle s-t-Flüsse f 0 .
Dieses Problem kann mit Hilfe der Linearen Optimierung gelöst werden. In
der Theorie der linearen Optimierung ist das MAX FLOW Problem zu dem
MIN CUT Problem dual, beide besitzen also im Optimalitätsfall den gleichen Lösungswert. Diese Tatsache wird später hier durch das MAX FLOW MIN CUT Theorem festgestellt, welches ohne Lineare Programmierung bewiesen wird. Für weitere Details verweisen wir auf [15]. Die im Folgenden
betrachteten Algorithmen kommen ohne lineare Programmierung aus und
sind kombinatorisch.
Bevor wir den ersten Algorithmus vorstellen, halten wir noch einige Tatsachen fest.
Theorem 1.18 ([15]). Sei N = (G, u, s, t) ein Netzwerk.
(1) Der Nullfluss f ≡ 0 ist ein s-t-Fluss
(2) Seien f ein s-t-Fluss und P = (VP , AP ) ein f -augmentierender Pfad.
Ferner sei γ > 0 gegeben mit γ = mine∈AP uf (e) . Dann erhält man
durch Augmentieren um γ entlang P einen s-t-Fluss f 0 mit val(f 0 ) =
val(f ) + γ.
(3) Jeder s-t-Fluss f ist durch die Kapazität eines beliebigen s-t-Schnittes
beschränkt, d. h. für jeden s-t-Schnitt C gilt val(f ) ≤ u(C).
Weiterhin benötigen wir ein Kriterium um maximale Flüsse zu erkennen.
Dieses lautet wie folgt:
Theorem 1.19 ([15]). Sei f ein s-t-Fluss. Dann ist f genau dann maximal,
wenn es keinen f -augmentierenden Pfad gibt.
Mit dem Beweis von Theorem 1.19 wurde auch folgender wichtiger Sachverhalt in der Flusstheorie bewiesen
Theorem 1.20 (Max-Flow-Min-Cut Theorem). Sei (G, u, s, t) ein Netzwerk. Die Kapazität eines minimalen s-t-Schnittes entspricht dem Flusswert
eines maximalen s-t-Flusses.
Wir haben bis jetzt gesehen wie das Max Flow Problem mit dem Min
Cut Problem zusammenhängt. Nun sehen wir den ersten Algorithmus, welcher maximale Flüsse berechnet. Der erste Algorithmus den wir vorstellen
ist der Algorithmus von Ford & Fulkerson. Dieser beginnt mit dem Nullfluss
10
Graphentheoretische Grundlagen
und vergrößert diesen durch Augmentieren entlang beliebiger Flussvergrößender Pfade. Findet der Algorithmus keinen solchen Pfad mehr, bricht der
Algorithmus mit einem s-t-Fluss ab, welcher nach Theorem 1.19 maximal
ist.
input : Ein Netzwerk N = (G, u, s, t).
output : Einen maximalen s-t-Fluss f.
foreach e ∈ A do
f (e) := 0;
3 end
4 repeat
5
Bestimme einen f-augmentierenden Pfad P = (VP , AP ).;
6
if P 6= ∅ then
7
bestimme γ := mine∈AP uf (e);
8
augmentiere f um γ entlang P ;
9
else
10
γ := 0;
11
end
12 until γ = 0 ;
Algorithmus 1.3 : Der Algorithmus von Ford & Fulkerson
1
2
Theorem 1.21 ([15]). Sei N = (G, u, s, t) ein Netzwerk, wobei die Kapazitäten nur ganzzahlig sind. Dann arbeitet der Algorithmus von Ford & Fulkerson korrekt und terminiert. Insbesondere ist der berechnete Fluss ganzzahlig.
Beweis. Der Algorithmus startet mit dem Nullfluss, welcher nach Theorem 1.18(1) zulässig ist. Jedes Augmentieren vergrößert den Flusswert um
mindestens eine P
Flusseinheit, da die Kapazitäten ganzzahlig sind. Da der
Flusswert durch e∈δ+ (s) u(e) beschränkt ist, finden maximal genausoviele
Augmentierungen statt. Daher terminiert der Algorithmus, sobald es keinen
augmentierenden Pfad im Residualgraphen gibt. Der berechnete s-t-Fluss
ist ganzzahlig nach Theorem 1.19 maximal.
Dieser Algorithmus ist i. A. kein Polynomialzeitalgorithmus, d. h. in Abhängigkeit der Eingabelänge (hier: Kodierungslänge der größten vorkommenden Kapazität) kann der Algorithmus exponentiell viele Augmentierungen durchführen. Diese Tatsache beleuchtet die Abbildung 1.1.
Ausserdem terminiert der Algorithmus i. A. nicht, wenn das Netzwerk
über irrationale Kapazitäten verfügt.
11
1.3 Flussprobleme
1
M
0
M
1
3
M
M
2
Abbildung 1.1: In diesem kleinen Netzwerk kann der Algorithmus M Augmentierungen
benötigen, wenn der berechnete augmentierende Pfad jeweils die Kante (1, 2) bzw. dessen
Residualkante enthält. Man beachte dass die Eingabelänge von M nur log M beträgt.
1.3.2
statische Minimalkostenflüsse
In diesem Abschnitt betrachten wir weitere grundlegende Graphprobleme,
die sogenannten Minimalkostenflussprobleme in gerichteten Graphen, auf
die wir später im Rahmen der dynamischen Flüsse zurückgreifen werden.
Hier geht es darum, Flüße zu bestimmen, die kostenminimal sind. Dabei
ergeben sich die Kosten einer Kante aus dem Produkt des Flusswertes und
einer vorher gegebenen Kostenfunktion auf den Kanten. Die Gesamtkosten
ergeben sich durch die Summe aller Kantenkosten. Desweiteren müssen gewisse Anforderungen, die an die Knoten gestellt werden, erfüllt sein. Um das
Problem präziser formulieren zu können, führen wir zunächst b-Flüsse ein.
Definition 1.22. Seien G = (V, A) ein gerichteter Graph, u : A → R+
eine Kapazitätsfunktion
auf den Kanten und b : V → P
R eine FunktiP
on
mit
b(v)
=
0.
Ein
b-Fluss
ist
ein
Fluss
f
mit
v∈V
e∈δ + (v) f (e) −
P
f
(e)
=
b(v)
für
alle
v
∈
V
.
Die
Funktion
b
mit
diesen
Eigenschafe∈δ − (v)
ten wird auch Balancefunktion genannt.
Das erste Problem was sich nun ergibt ist nun herauszufinden, ob solch
ein b-Fluss existiert. Um festzustellen, ob zu einem Graphen mit einer gegebenen Kapazitäts- und Balancefunktion ein b-Fluss existiert, kann man
folgendes Kriterium überprüfen:
Theorem 1.23. Sei G = (V, A) ein gerichteter Graph, u : A → R+ eine
Kapazitätsfunktion
und b : V → R eine Balancefunktion auf den Knoten mit
P
b(v)
=
0.
Ein
b-Fluss existiert genau dann, wenn für alle X ⊂ V gilt:
v∈V
X
e∈δ + (X)
u(e) ≥
X
b(v).
v∈X
Beweis. Sei P := {v ∈ V : b(v) > 0} und N := {v ∈ V : b(v) < 0}. Sind
beide Mengen leer, so ist stets der Nullfluss ein b-Fluss. Betrachten wir nun
den Graphen G0 der aus G entsteht, indem man zwei neue Knoten s und
12
Graphentheoretische Grundlagen
t einfügt und neue Kanten (s, v) für alle v ∈ P und (v, t) für alle v ∈ N
einfügt. Hierbei definieren wir die Kapazität der Kanten von der Form (s, v)
mit u(s, v) := b(v) und die Kanten (v, t) mit u(v, t) := −b(v).PWir berechnen dann einen maximalen s-t Fluss f 0 auf G0 . Ist val(f 0 ) = e∈δ+ (s) u(e)
dann erhalten wir einen zulässigen b-Fluss f indem wir f 0 auf G bzw. A einschränken, da alle neu eingefügten Kanten nach Konstruktion saturiert sind,
d. h. sie haben Residualkapazität Null. Somit sind die Balancebedingungen
an allen Knoten erfüllt. Nachdem MaxFlow MinCut Theorem hat nun jeder
s-t-Schnitt in G0 eine Kapazität von mindestens
val(f 0 ). SeiPnun X ⊂ V .
P
Enthält X keine Knoten aus P , so gilt e∈δ+ (X) u(e) ≥ 0 ≥ v∈X b(v). Sei
G
P
+
nun C = X ∩ P . Nun gilt u(δG
u(e) = val(f 0 ).
+
0 (s ∪ X)) ≥
e∈δG
0 (s)
Weiter gilt:
X
X
+
+
+
0
u(δG
= u(δG
b(v) = u(δG
b(v)
0 (s ∪ X)
0 (X)) +
0 (X)) + val(f ) −
v∈C
v∈P \X
=
+
(X))
u(δG
−
X
X
0
b(v) + val(f ) −
v∈X∩N
b(v)
v∈C
X
+
(X)) + val(f 0 ) −
= u(δG
b(v).
v∈X
P
+
+
0
Wegen u(δG
0 (s ∪ X)) − val(f ) ≥ 0 gilt daher u(δG (X)) −
v∈X b(v) ≥ 0
P
+
(X)) ≥ v∈X b(v). P
bzw. u(δG
Ist andererseits val(f 0 ) < e∈δ+ (s) u(e) so existiert kein b-Fluss auf G,
da sich dieser sonst auf G0 zu einem s-t-Fluss erweitern liesse, wobei dessen
Wert den von f 0 übertreffen würde. Weiterhin muss es nach dem MaxFlow
+
0
MinCut Theorem eine Menge X ⊂ V geben mit u(δG
0 (s ∪ X)) = val(f ). Es
gilt:
X
X
+
u(δG
=
b(v) +
u(e)
0 (s ∪ X))
+
e∈δG
0 (X)
v∈P \X
=
X
u(e) −
e∈δ + (s)
X
X
+
b(v) + u(δG
(X)) −
v∈C
+
= u(δG
(X)) + val(f 0 ) −
b(v)
v∈X∩N
v∈C
> val(f 0 ) −
X
+
b(v) + u(δG
(X)) −
X
b(v)
v∈X∩N
X
b(v).
v∈X
+
P Es folgt 0 > u(δG (X)) −
v∈X b(v).
P
v∈X
+
b(v) und daher gilt schließlich u(δG
(X) <
Wenn die Frage geklärt ist, ob ein b-Fluss existiert, stellt sich die Aufgabe, einen b-Fluss mit minimalen Kosten zu ermitteln, d. h. einen b-Fluss f
1.3 Flussprobleme
13
P
zu bestimmen, der den Ausdruck e∈A c(e)f (e) minimiert, wobei c die gegebene Kostenfunktion ist. Genauer betrachten wir nun folgendes Problem:
MINIMUM COST FLOW PROBLEM
Instanz: Ein gerichteter Graph G, eine Kapazitätsfunktion u : A →
R+
P
eine Balancefunktion b : V → R mit v∈V b(v) = 0
und eine Kostenfunktion c : A → R
P
Gesucht: ein b-Fluss der den Ausdruck c(f ) := e∈A c(e)f (e) minimiert oder die Ausgabe, dass kein b-Fluss existiert.
Abkürzend notieren wir die o. g. Instanz als 4-Tupel (G, u, b, c). Wir weisen darauf hin, dass es in Instanzen auch möglich ist, dass unbegrenzte Kapazitäten vorkommen können. Das führt aber zu keinerlei Problemen, sofern
die Instanz beschränkt ist, d. h. dass in jeder Instanz, in welcher ein b-Fluss
existiert auch einer mit minimalen Kosten existiert. Unbeschränkte Instanzen werden aber im Rahmen dieser Diplomarbeit nicht weiter untersucht und
wir nehmen im Folgenden an, dass die Minimalkostenflussinstanzen stets beschränkt sind. In diesem Fall kann man unbeschränkte Kapazitäten durch
geeignete endliche Kapazitäten ersetzen.
Ähnlich wie im Kapitel über maximale s-t-Flüsse arbeiten wir hier auch
mit dem Konzept der Residualgraphen nach Definition 1.17. Wir erweitern
diese Definition um das Augmentieren entlang Kreisen, da Kreise mit negativen Kosten eine sehr wichtige Rolle spielen.
Definition 1.24. Sei G = (V, A) ein gerichteter Graph und u : A → R+
eine Kapazitätsfunktion.
(1) Seien c : A → R eine Kostenfunktion in einer MINIMUM COST
←
FLOW PROBLEM Instanz. Dann erweitern wir c auf A↔ mit c( e ) :=
G
−c(e) für alle e ∈ A.
(2) Seien f ein Fluss, γ > 0 und C = (VC , AC ) ein Kreis in Gf . Augmentieren von f entlang C um γ bezeichnet folgenden Vorgang, durch
welchen man einen neuen Fluss f 0 erhält, sofern 0 ≤ f 0 (a) ≤ u(a) für
alle a ∈ A gilt:

←

a, a ∈
/ AC
f (a)
←
0
f (a) := f (a) + γ a ∈ AC , a ∈
/ AC

←

f (a) − γ a ∈ AC , a ∈
/ AC
(3) Sei f ein Fluss in G. Ein f -augmentierender Kreis ist ein Kreis
in Gf .
14
Graphentheoretische Grundlagen
Ein wichtiges Kriterium, um die Minimalkosteneigenschaft eines Flusses
zu zeigen, ist das, dass es es in dem entsprechenden Residualgraphen keinen
augmentierenden Kreis mit negativen Gesamtgewicht gibt.
Theorem 1.25 ([15]). Sei (G, u, b, c) eine MINIMUM COST FLOW PROBLEM Instanz. Dann ist f ein kostenminimaler b-Fluss genau dann, wenn
es in Gf keinen Kreis C gibt mit c(C) < 0.
Ein zweites Kriterium, um die Minimalkosteneigenschaft eines Flusses
zu zeigen, ist die Existenz eines zulässigen Potentials für alle Knoten.
Theorem 1.26 ([15]). Sei (G, u, b, c) eine MINIMUM COST FLOW PROBLEM Instanz. Dann ist f genau dann ein kostenminimaler b-Fluss, wenn
in Gf bzgl. c ein zulässiges Potential existiert.
Beweis. Nach Theorem 1.25 ist f nicht kostenminimal, wenn es einen Kreis
C gibt mit c(C) < 0. Dies ist aber genau dann der Fall, wenn c nicht konservativ in Gf ist. Letzteres ist nach Theorem 1.15 genau dann gültig, wenn
es in Gf kein zulässiges Potential gibt.
.
Nachdem wir nun wissen, wann ein b-Fluss optimal ist, werden wir kurz
zwei Algorithmen zeigen, welche kostenminimale b-Flüsse bestimmen können. Der erste hier vorgestellte Algorithmus ist der Successive Shortest Path
Algorithmus. Das Prinzip des Algorithmus besteht darin, dass das Augmentieren eines kostenminimalen b-Flusses entlang eines Pfades von einem Knoten s ∈ V mit b(s) > 0 zu einem Knoten t ∈ V mit b(t) < 0 zu einem
kostenminmalen b0 -Fluss bzgl. einer neuen Balancefunktion b0 führt.
Folgender Sachverhalt liefert die Korrektheit des Successive Shortest
Path Algorithmus von Seite 15.
Theorem 1.27 (Ford und Fulkerson [7]). Seien (G, u, b, c) eine Instanz des
Minimalkostenflussproblems und f ein b-Fluss mit minimalen Kosten. Seien
s, t ∈ V und P ein kürzester Pfad bzgl. c. Sei f 0 der entstehende Fluss, wenn
man f entlang P um höchstens der Minimalresidualkapazität auf dem Pfad
augmentiert. Dann gilt:
(1) Der Fluss f 0 ist ein Minimalkostenfluss bzw. b0 -Fluss mit minimalen
Kosten für eine entsprechendes Balancefunktion b0 .
(2) Für alle v ∈ V gilt: distGf (s, v) ≤ distGf 0 (s, v) und distGf (v, t) ≤
distGf 0 (v, t). Dabei bezeichne distG (v, w) die Kosten eines billigsten
Pfades von v nach w in G.
Dieses Theorem liefert die Korrektheit des Algorithmus, da der Algorithmus mit dem Nullfluss beginnt und dieser minimal ist für b ≡ 0, weil die
Kostenfunktion konservativ ist. Jeder dazwischen berechnete Fluss ist für
1.3 Flussprobleme
15
input
: Ein gerichteter Graph G = (V, A), eine
Kapazitätsfunktion u : A → R+ konservative Kosten
cP: A → R, eine Balancefunktion b : V → R mit
v∈V b(v) = 0
output : Einen b-Fluss mit minimalen Kosten, oder die Ausgabe,
dass kein b-Fluss existiert.
b0 := 0;
2 foreach e ∈ A do
3
f (e) := 0;
4 end
5 while b0 6= 0 do
6
Bestimme einen Knoten s mit b(s) > 0;
7
Bestimme einen Knoten t mit b(t) < 0, so dass es einen
s-t-Pfad in Gf gibt;
8
if ∃t ∈ V mit b(t) < 0, so dass es einen s-t-Pfad in Gf gibt
then
9
bestimme einen kostenminimalen s-t-Pfad P bzgl. c;
10
bestimme γ := min{mine∈AP {uf (e), b0 (s), −b0 (t)}};
11
b0 (s) := b0 (s) − γ;
12
b0 (t) := b0 (t) + γ;
13
augmentiere f um γ entlang P ;
14
else
15
Ausgabe: Es gibt keinen b-Fluss;
16
STOPP;
17
end
18 end
Algorithmus 1.4 : Der Successive Shortest Path Algorithmus
1
das jeweils aktuelle b auch minimal. Somit ist auch der am Ende resultierende b-Fluss für die b Funktion aus der Eingabeinstanz minimal.
Die Laufzeit des Algorithmus beträgt O(nmB), wobei B :=
1P
v∈V |b(v)| ist, sofern alle Bedarfe und Kapazitäten ganzzahlig sind. Da
2
B der Menge der Flusseinheiten entspricht, um die höchstens augmentiert
werden kann, ist die Anzahl der Augmentierungen durch B beschränkt. Bei
jeder Iteration ist die Kürzeste Wege Berechnung die teuerste Operation.
Da aber negative Kosten auftreten können, kommt der Moore Bellman Ford
Algorithmus zur Anwendung, der eine Laufzeit von O(nm) hat. Mit einer
Verbesserung, die darin besteht, ab der 2. Iteration die Kosten c mithilfe
eines Knotenpotentials durch reduzierte Kosten zu ersetzen, lässt sich die
Laufzeit O(nm + B(m + n log n)) erreichen, da diese reduzierten Kosten
nichtnegativ sind und somit den Einsatz des Dijkstra Algorithmus ermöglichen. Diese Laufzeit ist pseudopolynomiell, da B eine wesentliche Größe ist,
16
Graphentheoretische Grundlagen
welche sich aber durch O(log B) vielen Bits darstellen lässt.
Wir erwähnen noch kurz eine Verbesserung des Successive Shortest Path
Algorithmus durch die Capacity Scaling Technik, wenn die Knotenbalancen ganzzahlig sind. Der Capacity Scaling Algorithmus für das Minimalkostenflussproblem besteht aus mehreren Phasen, den sogenannten ScalingRunden. In jeder Runde wird eine untere Schranke festgesetzt, um wieviele Flusseinheiten ein augmentierender Pfad den Fluss mindestens vergrößern muss. Diese untere Schranke wird Scaling Faktor genannt. Um dem
Scaling Faktor gerecht zu werden, werden die Augmentierenden Pfade in
Gf (∆) := (V, {a ∈ AGf : uf (a) ≥ ∆}) bestimmt. Augmentiert wird dann
wieder in Gf .
Theorem 1.28 ([15]). Der Capacity Scaling Algorithmus arbeitet korrekt
und benötigt eine Laufzeit von O(n(m + n log n) · log bmax ).
Wichtig zu erwähnen ist, dass es auch streng polynomielle Algorithmen für das Minimalkostenflussproblem gibt, auf welche wir hier nicht weiter eingehen. Wir werden später im Rahmen der Heuristiken im Kapitel 3
Minimalkostenfluss-Instanzen betrachten, in welchen B = O(n) gelten wird.
In diesem Falle ist der Sucessive Shortest Path Algorithmus laut [15] der
bisher bekannte schnellste.
1.4
dynamische Flussprobleme
In diesem Abschnitt, welcher sich an die Vorlesung Ausgewählte Kapitel der
”
Kombinatorischen Optimierung“ [21] lehnt, geht es um dynamische Flussprobleme. Wie bei den statischen Flussproblemen haben wir wieder ein Netzwerk, bestehend aus einem gerichteten Graphen, ausgezeichneten Knoten
(Quellen und Senken) und einer Kapazitätsfunktion auf der Kantenmenge.
Im Unterschied zu den statischen Flussproblemen spielt der Faktor Zeit eine
sehr wichtige Rolle, d. h. es wird nun auch die Zeit mit einbezogen, welche verbraucht wird, um Fluss von gewissen Knoten zu anderen Knoten zu
schicken. Zu diesem Zweck werden dynamische Netzwerke eingeführt, die
zusätzlich Fahrzeitinformationen für jede Kante beinhalten, also die Zeit,
die eine Flusseinheit benötigt, um vom Start- zum Endknoten der Kante zu
gelangen.
Da wir hier auch wieder über einen Fluss sprechen werden, müssen wir
den Flussbegriff für unsere dynamischen Netzwerke erweitern bzw. ändern.
Wir werden unter einem dynamischen Fluss in einer Kante eine zeitabhängige Flussrate verstehen, mit welcher Fluss in die Kante hineinfließt.
Mit Hilfe der dynamischen Netzwerke und dynamischen Flüsse lassen
sich u. a. auch Evakuierungsprobleme untersuchen, da hier nun der Faktor
Zeit berücksichtigt werden kann. Bevor wir zu dem Evakuierungsproblem
gelangen werden, definieren wir u. a. den Begriff des dynamischen Flusses ge-
1.4 dynamische Flussprobleme
17
input
: Ein gerichteter Graph G = (V, A), eine
Kapazizätsfunktion u : A → R+ konservative Kosten
c : A → N0 , eine Balancefunktion b : V → R mit
P
v∈V b(v) = 0
output : Einen b-Fluss mit minimalen Kosten, oder die Ausgabe,
dass kein b-Fluss existiert
b0 := b;
2 foreach e ∈ A do
3
f (e) := 0;
4 end
5 bmax := max{b(v) : v ∈ V };
6 ∆ := 2blog bmax c ;
7 while b0 6= 0 do
8
Bestimme einen Knoten s mit b(s) ≥ ∆;
9
Bestimme einen Knoten t mit b(t) ≤ ∆, so dass es einen
s-t-Pfad in Gf (∆) gibt;
10
if ∃t ∈ V mit b(t) ≤ γ, so dass es einen s-t-Pfad in Gf (∆)
gibt then
11
bestimme einen kostenminimalen s-t-Pfad P bzgl. c;
12
b0 (s) := b0 (s) − ∆;
13
b0 (t) := b0 (t) + ∆;
14
augmentiere f in Gf um ∆ entlang P ;
15
else
16
if ∆ = 1 then
17
Ausgabe: Es gibt keinen b-Fluss;
18
STOPP;
19
else
20
∆ := ∆/2;
21
end
22
end
23 end
Algorithmus 1.5 : Ein Capacity Scaling Algorithmus für das Minimalkostenfluss Problem
1
nauer und betrachten vorher ein grundlegendes Problem, welches uns später
bei der Analyse unterstützen wird.
Definition 1.29. Seien G = (V, A), u : A → R+ eine Kapazitätsfunktion,
· −⊂V
τ : A → R eine Fahrzeitfunktion und T ∈ R+ . Weiterhin seien S + ∪S
+
Mengen ausgezeichneter Knoten. Dann heißt das Tupel (G, u, τ, S , S − ) dynamisches Netzwerk. Ein dynamischer Fluss mit Zeithorizont T ist
eine integrierbare Abbildung f : A × [0, T ) → R+ , welche folgende Eigenschaften erfüllt:
18
Graphentheoretische Grundlagen
(1) Für alle a ∈ A und θ ∈ [0, T ) gilt f (a, θ) ≤ u(a) (Kapazitätsbedingung).
· − und Y ∈ [0, T ) gilt :
(2) Für alle v ∈ V \ (S + ∪S
Z
exf (v, Y ) :=
Y
(
0
X
a∈δ − (v)
f (a, θ − τ (a)) −
X
f (a, θ))dθ ≥ 0
a∈δ + (v)
(Flusserhaltungsbedingung).
(3) Die Flusserhaltungsbedingung (2) muss für Y = T mit Gleichheit erfüllt werden.
(4) Für alle a ∈ A und θ > T − τ (a) gilt f (a, θ) = 0.
Die Definition erscheint auf den ersten Blick etwas gewöhnungsbedürftig,
wenn man sich zuvor nur mit statischen Flüssen beschäftigt hat. Die Kapazitätsbedingung ist analog zu den statischen Flüssen einfach zu verstehen.
Die Flusserhaltungsbedingung bedarf einer kleinen Erklärung.
Wenn f ein dynamischer Fluss ist und a = (x, y) ∈ A eine Kante, dann
gibt der Wert f (a, θ) die Flussrate an, wieviele Flusseinheiten pro Zeiteinheit in die Kante fliessen. Der Wert τ (a) gibt die Fahrzeit an, welche jede
Flusseinheit benötigt um von x nach y zu gelangen. Daher erreicht eine
Flusseinheit den Knoten y über a erst nach θ + τ (a) Zeiteinheiten. Umgekehrt, wenn nun eine Flusseinheit zum Zeitpunkt θ den Knoten y über die
Kante a erreicht, hat sie zum Zeitpunkt θ − τ (a) den Knoten x verlassen.
Diese Erkenntnis führt zum besseren Verständnis der Flusserhaltungsbedingung. Wenn wir nun zu einem Zeitpunkt θ ermitteln, wieviele Flusseinheiten
pro Zeiteinheit über eine Kante a in den Knoten v fließen, muss wir uns die
Flussrate zu dem zeitpunkt ansehen, zu welchem die betreffenden Flusseinheiten in die Kante a einfließen. Dieses passiert zum Zeitpunkt θ − τ (a) und
somit ist die Flussrate der Flusseinheiten, die über die Kante a in den Knoten
w gelangt, gleich dem Wert f (a, θ − τ (a)). Summieren wir diesen Ausdruck
entsprechend über alle Kanten aus δ − (v), so erhalten wir die Flussrate, die
in den Knoten v zum Zeitpunkt θ fließt. Daher liegt es nun auf der Hand,
analog zu den statischen Flüssen, die Anzahl der Flusseinheiten, die bis zum
Zeitpunkt θ in den Knoten v fließen, mit der Anzahl an Flusseinheiten zu
vergleichen, welche den Knoten v bis zum Zeitpunkt θ verlassen haben.
Die Flusserhaltungsbedingung besagt nun, dass nicht mehr Flusseinheiten zum Zeitpunkt θ den Knoten verlassen haben können, als ihn bis dahin
erreicht haben. Dies muss für alle Zeitpunkte θ mit θ < T gelten. Insbesondere ist es hier möglich, dass ein nicht ausgezeichneter Knoten Flusseinheiten
speichern kann. Würde in der Bedingung ein Gleichheitszeichen stehen, wäre
keine Flussspeicherung in Knoten erlaubt.
19
1.4 dynamische Flussprobleme
Die letzten beiden Bedingungen besagen, dass sich keine Flusseinheit
nach dem Zeithorizont T in einem Knoten (4) befinden darf und dass keine
Kante a ∈ A nach dem Zeitpunkt T − τ (a) Flusseinheiten befördern darf.
Somit ist sichergestellt, dass jede Flusseinheit nach dem Zeithorizont T das
Netzwerk verlassen hat bzw. sich in einer Senke befindet.
Zunächst geben wir für den Graphen aus Abbildung 1.4 einen Beispielfluss
mit Zeithorizont 2 an. Die einzige Kante im Graph verfügt über Einheitsfahrzeit und Einheitskapazität. Wir betrachten den Fluss f mit f ((s, t), θ) = 1
für alle θ ∈ [0, 1). Für θ ∈ [1, 2) setzen wir f ((s, t), θ) = 0. Somit fließt
genau eine Flusseinheit von s nach t. Nach einer Zeiteinheit befindet sich
diese Flusseinheit komplett in der Kante (s, t). Nach einer weiteren Zeiteinheit, hat sie die Kante vollständig verlassen und hat über den Knoten t das
Netzwerk verlassen. Somit besitzt f den Zeithorizont 2.
1/1
s
t
Abbildung 1.2: Ein einfaches dynamisches Netzwerk
Zunächst betrachten wir dynamische Flüsse auf Netzwerken mit zwei ausgezeichneten Knoten und befassen uns dann danach mit dem Problem, wie
man innerhalb einer vorgegebenen Zeit T den Flusswert, den wir ebenfalls
noch definieren müssen, maximiert. Dieses gelingt immer, wie wir später
sehen werden, mit einem dynamischen Fluss aus einer einfachen Klasse dynamischer Flüsse.
Definition 1.30. Sei (G, u, τ, S + , S − ) ein dynamisches Netzwerk mit
T ∈ R+ .
(1) Ein dynamischer S + -S − -Fluss f ist ein dynamischer Fluss gemäß Definition 1.29, wobei v ∈ S + als Quellknoten, d. h. exf (v, T ) ≤ 0, und
v ∈ S − als Senkeknoten, d. h. exf (v, T ) ≥ 0, die ausgezeichneten Knoten sind.
(2) Der Wert eines dynamischen S + -S − -Flusses wird mit |f | bezeichnet
und beträgt:
|f | := −
X
ex(s, T )
s∈S +
=
X Z
s∈S +
0
T
(
X
a∈δ + (s)
f (a, θ) −
X
a∈δ − (s)
f (a, θ − τ (a)))dθ.
20
Graphentheoretische Grundlagen
Zur Vereinfachung bezeichnen wir das dynamische Netzwerk mit einer
Quelle und einer Senke mit (G, u, τ, s, t) und den Fluss als dynamischen
s-t-Fluss.
Bemerkungen 1.31. Mit unserer Definition dynamischer Flüsse haben wir
sogenannte kontinuierliche Flüsse definiert. Die Flussrate einer Kante ist dabei bzgl. jeden reellen Zeitintervalls eine messbare Funktion. In der Literatur
werden auch sogenannte diskrete dynamische Flüsse betrachtet, da die Diskretisierung eine Reduktion vieler dynamischer Flussprobleme auf statische
Flussprobleme mittels zeitexpandierter Graphen, welche wir in Abschnitt 1.5
einführen, zulässt. In dieser Diplomarbeit werden wir ebenfalls diskrete dynamische Flüsse betrachten und nur solche als Lösung von unseren Problemen
in den Kapiteln 2 und 3 zulassen. Wir schränken uns dabei auf ganzzahlige
Fahrzeiten τ und Zeithorizonte T ∈ N ein. Wir teilen dann den Zeithorizont
T in Intervalle [θ, θ+1) mit θ ∈ N0 und θ < T ein. Ein diskreter dynamischer
Fluss f ist dann eine Abbildung f : A × N0 → R+ . Die Kapazitätsbedingung
wird analog zu Definition 1.29 zu jedem ganzzahligen Zeitpunkt formuliert
und die Flusserhaltungsbedingung zum Zeitpunkt Y sowie der Ausdruck exf
für dynamische Flüsse wird analog zu Definition 1.29 mittels einer diskreten
Summe von 0 bis Y − 1 statt eines Integrals von 0 bis Y formuliert. Zum
Zeitpunkt T muss diese mit Gleichheit erfüllt sein. Weiterhin darf es keine
Kante a ∈ A nach dem Zeitpunkt θ > T − τ (a) mit f (a, θ) > 0 geben.
Einen diskreten Fluss f können wir als kontinuierlichen Fluss f˜ auffassen, indem wir in jede Kante a ∈ A zu jedem Zeitpunkt Y ∈ [θ, θ + 1)
f (a, θ) Fluss in die Kante a schicken, d. h. wir setzen f˜(a, Y ) := f (a, θ) für
alle Y ∈ [θ, θ + 1). Umgekehrt können wir jeden dynamischen Fluss f˜ mit
ganzzahligen Fahrzeiten und ganzzahligem Zeithorizont als diskreten Fluss f
auffassen, indem wir zu jedem diskreten Zeitpunkt θ der Kante a die Menge
an Flusseinheiten zuweisen, die mittels f˜ innerhalb des Zeitraumes [θ, θ + 1)
R θ+1
in die Kante a hineinfließen, d. h. wir setzen f (a, θ) = θ f˜(a, κ)dκ. Für
weitere Details verweisen wir auf den Abschnitt 1.3.4 in [16].
Ein wichtiges Problem, welches wir nun betrachten, ist das dynamische
Max Flow Problem, bei dem es darum geht innerhalb des gegebenen Zeithorizontes einen dynamischen Fluss zu ermitteln, dessen Flusswert maximal
ist. Wir können das Problem auf Netzwerke mit einer Quelle und einer Senke
reduzieren, indem wir jeweils eine Superquelle und eine Supersenke einführen und entsprechend sie mit den Quellen bzw. Senken mit Kanten, die eine
Fahrzeit von Null besitzen und über geeignet viel Kapazität verfügen, verbinden.
21
1.4 dynamische Flussprobleme
dynamisches MAX FLOW Problem
Instanz: Ein dynamisches Netzwerk N = (G, u, τ, s, t) und ein T ∈
R+
Gesucht: Ein dynamischer s-t-Fluss mit maximalem Flusswert und
Zeithorizont T , d. h. gesucht ist ein dynamischer s-t-Fluss f
mit |f | ≥ |f 0 | für alle s-t-Flüsse f 0 mit Zeithorizont T .
Dieses klassische Problem wurde bereits von Ford und Fulkerson [7] untersucht und gelöst. Die Lösung ist immer in einer einfachen Klasse dynamischer s-t-Flüsse zu finden, wie wir später noch zeigen werden. Desweiteren
lässt sich das Problem auf eine statische Minimalkostenflussberechnung zurückführen. Bevor wir nun aber den Algorithmus von Ford und Fulkerson
für dieses Problem vorstellen, müssen wir noch einige Vorbereitungen treffen. Wir führen zunächst die o. g. einfache Klasse dynamischer s-t-Flüsse ein,
die sogenannten zeitlich wiederholten Flüsse, die durch eine Pfadzerlegung
statischer s-t-Flüsse induziert werden.
Theorem 1.32 ([15]). Seien (G, u, s, t) ein Netzwerk und x ein statischer st-Fluss. Dann existiert eine Menge P mit s-t-Pfaden, eine Menge
X C mit Kreisen und eine Abbildung w : P → R+ mit x(a) =
w(P )
P =(VP ,AP )∈P∪C:a∈AP
und val(f ) =
X
w(P ). Falls x ganzzahlig ist, kann die Abbildung w auch
P ∈P
ganzzahlig gewählt werden.
Definition 1.33. Es seien (G, u, τ, s, t) ein dynamisches Netzwerk und x
ein statischer s-t-Fluss, die Mengen P und C und die Abbildung w wie in
Theorem 1.32.
(1) Die Abbildung w heißt Flusszerlegung von x.
(2) Falls C = ∅ ist, heißt w auch Pfadzerlegung von x.
(3) Seien T ∈ R+ und w eine Pfadzerlegung von x, so dassP
für alle Pfade
P = (VP , AP ) mit P ∈ P und w(P ) > 0 gilt: τ (P ) := a∈AP τ (a) ≤
T . Dann induziert x wie folgt einenX
dynamischen s-t-Fluss f T :
T
f ((v, w), θ) :=
w(P ).
P ∈P:(v,w)∈AP und θ∈[τ (P[s,v] ),T −τ (P )+τ (P[s,v] ))
fT
heißt zeitlich wiederholter Fluss.
Zeitlich wiederholte Flüsse werden also dadurch induziert, indem wir
entlang jeden Pfades P der Pfadzerlegung w(P ) Flusseinheiten in die Quelle
im Zeitraum [0, T −τ (P )) schicken. Wir schreiben daher bei einer gegebenen
Pfadzerlegung der Pfade P1 , . . . , Pk auch [P1 , . . . , Pk ]Tw um den induzierten
zeitlich wiederholten Fluss zu beschreiben.
22
Graphentheoretische Grundlagen
Theorem 1.34 ([21]). Sei (G, u, τ, s, t) ein dynamisches Netzwerk und f T
ein zeitlich wiederholter Fluss der durch einen statischen s-t-Fluss x induziert wird. Dann ist f T ein zulässiger
dynamischer Fluss mit Zeithorizont T
X
und es gilt: |f | = T ·val(x)−
τ (a) · x(a). Insbesondere hängt der Flusswert
a∈A
nicht von der gewählten Pfadzerlegung ab.
Beweis.
Die Kapazitätsbedingungen werden erfüllt, da f T (a, θ) ≤
P
P ∈P:a∈AP w(P ) = x(a) ≤ u(a) wegen der Zulässigkeit von x gilt.
Der Zeithorizont beträgt T , da nach Konstruktion der längste Pfad der
Pfadzerlegung nicht länger als T bzgl τ ist.
Die Flusserhaltungsbedingung in einem Knoten v ∈ V \ {s, t} wird erfüllt, da entlang jeden Pfades P , auf welchem v liegt w(P ) Flusseinheiten
verschickt werden. D. h. nach Konstruktion wenn zum Zeitpunkt θ Flusseinheiten mit Flussrate w(P ) verschickt werden, wurden zum Zeitpunkt θ−τ (a)
(sei a Vorgängerkante in P von v) auch w(P ) Flusseinheiten verschickt. Es
tritt somit auch keine Flussspeicherung in den Knoten auf.
Der Wert des Flusses beträgt:
Z T X
Z T X
X
T
T
f (a, θ) dθ =
w(P )dθ
|f | =
0
0
a∈δ + (s)
a∈δ + (s) P ∈P:a∈AP und θ∈[0,T −τ (P ))
Z T
X
X
=
w(P )dθ =
w(P ) · (T − τ (P ))
0
= T·
P ∈P
P ∈P:θ∈[0,T −τ (P ))
X
X
w(P ) −
P ∈P
= T · val(x) −
a∈A
= T · val(x) −
w(P ) ·
P ∈P
X
X
X
τ (a)
a∈AP
X
τ (A) ·
P ∈P
und
w(P )
a∈AP
τ (a) · x(a).
a∈A
Ford und Fulkerson erkannten damals bereits, dass man das dynamische
Max Flow -Problem mit Hilfe der zeitlich wiederholten Flüsse lösen kann.
Wir stellen den Algorithmus nun vor.
Der Algorithmus 1.6 von Seite 23 berechnet einen maximalen dynamischen Fluss mit Zeithorizont T , indem er zunächst einen maximalen zeitlich
wiederholten Fluss berechnet. Später werden wir sehen, dass dieser Fluss
sogar maximal unter allen dynamischen s-t-Flüssen ist. Um dieses einzusehen beweisen wir die Korrektheit in mehreren Schritten. Dazu werden wir
auch den Begriff des dynamischen Schnittes benutzen, welchen wir später
23
1.4 dynamische Flussprobleme
input
: Ein dynamisches Netzwerk N = (G, u, τ, s, t) und ein
T ∈ R+
output : Ein dynamischer s-t-Fluss mit maximalen Flusswert und
Zeithorizont T , d. h. gesucht ist ein dynamischer
s-t-Fluss f mit |f | ≥ |f 0 | für alle s-t-Flüsse f 0 mit
Zeithorizont T .
Füge eine Kante (t, s) mit Fahrzeit −T und unbeschränkter
Kapazität in den Graphen G ein. Berechne auf dem neuen
Graphen eine Minimalkostenzirkulation, d. h. einen
Minimalkostenfluss bzgl. τ , welchem eine Balancefunktion b ≡ 0
zugrunde liegt.;
2 Berechne eine Pfadzerlegung w von x in G.;
3 Konstruiere den zeitlich wiederholten Fluss f gemäß Def. 1.33.;
Algorithmus 1.6 : Der Algorithmus von Ford & Fulkerson für das
dynamische Max-Flow-Problem
1
s
s
t
T /−∞
t
Abbildung 1.3: Die Modifikation des Ausgangsgraphen im Algorithmus 1.6
links: Das Ausgangs Netzwerk N .
rechts: Das Netzwerk nach einfügen der speziellen Kante (t, s) mit Fahrzeit -T und unbeschränkter Kapazität
definieren. Zum Schluss werden wir in Analogie zu den statischen Flüssen
ein Max Flow-Min Cut Theorem für dynamische Flüsse beweisen.
Zunächst stellen wir fest:
Theorem 1.35 ([21]). Der durch den Algorithmus berechnete dynamische
s-t-Fluss f ist maximal unter allen zeitlich wiederholten Flüssen mit Zeithorizont T .
Beweis. Die Laufzeit Zunächst ist festzustellen, dass der berechnete zeitlich
wiederholte Fluss mit Zeithorizont T zulässig ist. Zunächst können wir annehmen, das Punkt 1 einen statischen Fluss berechnet, der eine kreisfreie
Pfadzerlegung besitzt. Ansonsten entfernen wir die Kreise in der Flusszerlegung in Punkt 2. Dies würde sich nicht auf den Wert des statischen Flusses
auswirken. Weiterhin ist kein s-t-Pfad länger als T , da sonst die Minimalkostenzirkulation nicht optimal wäre. Man könnte entlang der Residualkanten
des entsprechenden Pfades und der Residualkante von (t, s) einen negativen
Kreis finden.
24
Graphentheoretische Grundlagen
P Die berechnete Minimalkostenzirkulation x besitzt
PKosten −T · val(x) +
a∈A τ (a) · x(a). Daher ist der Ausdruck T ·val(x)−
a∈A τ (a) · x(a) maximal, welcher dem Flusswert des berechneten zeitlichen wiederholten Flusses
entspricht.
Bemerkungen 1.36. (1) Die Laufzeit wird durch die Berechnung des Minimalkostenflusses dominiert.
(2) Wenn die gegebene Instanz ganzzahlig ist, entspricht der berechnete
Fluss einem diskreten dynamischen Fluss, in dem wir die zeitliche
Wiederholung gemäss Definition 1.33(3) nur für alle ganzzahligen Zeitpunkte θ durchführen. (Vgl. auch Bemerkung 1.31). Mit diesen Überlegungen erweist sich der berechnete diskrete Fluss als maximal, wenn
der berechnete kontinuierliche Fluss maximal ist.
Nun werden wir sehen, dass der berechnete Fluss sogar maximal unter allen dynamischen s-t-Flüssen ist. Dazu führen wir nun den Begriff des
dynamischen Schnittes ein.
Definition 1.37. Seien (G, u, τ, s, t) ein dynamisches Netzwerk und T ∈ R+
.
(1) Sei X : [0, T ) → 2V mit s ∈ X(θ), t ∈
/ X(θ) für alle θ ∈ [0, T ) und
mit X(θ1 ) ⊂ X(θ2 ) für θ1 ≤ θ2 . Dann heißt X dynamischer s-tSchnitt.
(2) Seien X ein dynamischer s-t-Schnitt und αv ∈ R für alle v ∈
V gegeben mit αv := inf{θ : v ∈ X(θ)} für v ∈ V \ {t}
und αt := T . Falls v in keiner Menge X(θ) für alle θ ∈
[0, T ) enthalten ist, setzen wir stattdessen av := T . Dann ist
die KapazitX
ät des dynamischen s-t-Schnittes gegeben durch
cap(X) :=
u(a) · max{0, αw − τ (a) − αv }.
(v,w)∈A
Diese Definition bedeutet veranschaulicht, dass, wenn man die α-Werte
als Zeitpunkte auffasst, eine Kante (v, w) zwischen dem Zeitpunkt αv und αw
zum Schnitt gehört. Allerdings erreicht nur Fluss, welcher in dem Intervall
αw − τ (a) − αv in die Kante geschickt wird, den Knoten w während (v, w)
im Schnitt liegt.
Weiterhin, wenn βv gegeben sind, mit βs = 0 und βt = T , dann definieren
sie einen dynamischen s-t-Schnitt X durch X(θ) := {v ∈ V : βv ≤ θ}. Die
β Werte stimmen dann mit den α Werten aus Definition 1.37(2) überein.
Dass die Mengen eine Inklusionskette bilden ist leicht einzusehen, da für
v ∈ X(θ1 ) und θ1 ≤ θ2 sofort βv ≤ θ2 gilt, also v ∈ X(θ2 ). Weiterhin gilt
αv = βv für alle v ∈ V , da αv = inf{θ : v ∈ X(θ)} = inf{θ : βv ≤ θ} = βv
25
1.4 dynamische Flussprobleme
gilt. Desweiteren ist s ∈ X(0) und t ∈
/ X(θ) für alle θ < T . Im Weiteren
identifizieren wir einfachheitshalber die α-Werte mit dem Schnitt, den sie
darstellen, und bezeichnen den Schnitt mit α und die Kapazität des Schnittes
mit cap(α).
Zunächst stellen wir fest, dass, wie im statischen Falle, die Kapazität
eines dynamischen s-t-Schnittes immer größer als der Flusswert eines dynamischen s-t-Flusses ist.
Theorem 1.38. Seien (G, u, τ, s, t) ein dynamisches Netzwerk, f ein dynamischer s-t-Fluss mit Zeithorizont T und ein Schnitt α durch αv ∈ [0, T )
für v ∈ V \ {t} mit αs = 0 und α(t) = T gegeben. Dann gilt |f | ≤ cap(α).
Beweis. Definiere für v ∈ V die Variable
T
X Z
∆(v) :=
f (a, θ)dθ −
αv
a∈δ + (v)
X Z
a∈δ − (v)
T
f (a, θ − τ (a))dθ.
αv
Zunächst stellen wir fest, dass ∆(s) = |f | gilt, da in diesem Fall ∆(s) der
Flusserhaltungsbedingung im Knoten s, also dem Flusswert entspricht. Wegen αt = T sind die Integralgrenzen gleich im Ausdruck von ∆(t) und daher
gilt ∆(t)=0. Für alle anderen Knoten v gilt ∆(v) ≥ 0, da nach dem Zeitpunkt
αv nicht mehr Fluss ein- als ausfließen kann. Bei Erreichen des Zeithorizontes
T müssen die Knoten entleert sein. Es folgt nun:
|f | = ∆(s) ≤
X
∆(v) =
∗
Z
X
αw −τ (a)
f (a, θ)dθ
αw −τ (a)
X
f (a, θ)dθ ≤
a=(v,w)∈A:
αv ≤αw −τ (a)
=
Z
a=(v,w)∈A αv
v∈V
≤
X
X
αv
a=(v,w)∈A:
Z
αw −τ (a)
u(a)dθ
αv
αv ≤αw −τ (a)
(αw − τ (a) − αv ) · u(a)
a=(v,w)∈A:
αv ≤αw −τ (a)
=
X
(max{0, αw − τ (a) − αv )} · u(a) = cap(α).
a=(v,w)∈A
Bemerkung: die Ungleichung (*) gilt, da bei den restlichen Summanden die
untere Integralgrenze größer als die obere wäre. Somit wurden nur negative
Summanden weggelassen.
Um nun zu zeigen, dass der Algorithmus 1.6 von Ford und Fulkerson
einen maximalen dynamischen s-t-Fluss berechnet, genügt es zu zeigen, dass
der Flusswert der Kapazität eines Schnittes entspricht.
26
Graphentheoretische Grundlagen
Theorem 1.39 ([21]). Sei (G, u, τ, s, t) ein dynamisches Netzwerk und T ∈
R+ . Weiterhin sei x der statische s-t-Fluss, w seine Flusszerlegung und f der
zeitlich wiederholte Fluss, welche der Algorithmus von Ford und Fulkerson
berechnet. Dann ist f ein maximaler dynamischer s-t-Fluss mit Zeithorizont
T.
Beweis. Wir konstruieren einen dynamischen s-t-Schnitt α. Wir setzen
αs = 0 und αt = T . Für alle anderen Knoten v setzen wir αv auf
die Länge des kürzesten Weges von s nach v im Residualgraphen von x.
Nun betrachten wir eine Kante a = (v, w) ∈ A:
Falls die Kante im dynamischen Schnitt liegt, also αv < αw − τ (a) gilt,
dann gilt x(a) = u(a), da andernfalls die Kante a im Residualgraphen Gx
existiert und somit nach Wahl der α-Werte αw ≤ αv + τ (a) gelten würde,
was aber zu einem Widerspruch führt.
Weiterhin muss f (a, θ) = u(a) im Falle αv < αw − τ (a) für alle θ ∈
[αv , αw − τ (a)) gelten. Angenommen, das sei nicht der Fall, so existiert ein
θ ∈ [αv , αw − τ (a)) mit f (a, θ) < u(a). Ferner existiert dann ein Pfad P ∈ P
mit a ∈ P und w(P ) > 0. Dann gilt
(1) τ (P[s,v] ) > αv oder
(2) τ (P[w,t] ) > T − αw .
Im Fall (1) existiert dann in Gx ein v-s-Pfad P 0 der Länge τ (P 0 ) < −αv
in Gx , welcher mit dem kürzesten s-v-Pfad der Länge αv zusammen einen
negativen Kreis ergibt, im Widerspruch zur Optimalität von x.
Im Fall (2) existiert ein t-w-Pfad P 00 in Gx mit einer Länge von τ (P 00 ) <
−T + αw . Zusammen mit der Residualkante von (t, s) erhalten wir einen
s-w-Pfad der kürzer als αw ist. Dies steht im Widerspruch zur Konstruktion
der α-Werte.
Da beide Fälle nicht eintreten können, gilt somit f (a, θ) = u(a) für alle
θ ∈ [αv , αw − τ (a)).
Falls die Kante a nicht zum Schnitt gehört, also αw − τ (a) < αv gilt,
so ist x(a) = 0 und somit f (a, θ) = 0 für alle θ ∈ [0, T ), da andernfalls die
←
←
Kante a in Gx existieren würde. Somit hätte dann der s-v-Pfad, der über a
←
und den kürzesten s-w-Pfad führt, eine Länge von αw + τ ( a ) = αw − τ (a).
Da der kürzeste s-v-Pfad die Länge αv hat, wäre dies ein Widerspruch. Für
27
1.5 Zeitexpandierte Graphen
den Wert des dynamischen Flusses folgt:
X
|f | = T · val(x) −
τ (a) · x(a) = T · val(x) −
X
a∈A
τ (a) · u(a)
a=(v,w)∈A
αw −τ (a)−αv ≥0
X
= T·
X
w(P ) −
P ∈P
τ (a) · u(a)
a=(v,w)∈A
αw −τ (a)−αv ≥0


=
X
w(P ) · 
P ∈P
X
X
(αw − αv ) −
a=(v,w)∈P
τ (a) · u(a)
a=(v,w)∈A
αw −τ (a)−αv ≥0

=
X
X

(αw − αv ) · 
w(P ) −
a=(v,w)∈A
=
X

X
P ∈P
a∈P
αw −τ (a)−αv ≥0
X
(αw − αv ) · x(a) −
a=(v,w)∈A
τ (a) · u(a)
a=(v,w)∈A
τ (a) · u(a)
a=(v,w)∈A
αw −τ (a)−αv ≥0
X
=
=
X
(αw − αv ) · u(a) −
a=(v,w)∈A
a=(v,w)∈A
αw −τ (a)−αv ≥0
αw −τ (a)−αv ≥0
X
τ (a) · u(a)
max{0, αw − αv − τ (a)} · u(a)
a∈A
= cap(α).
Also stimmt der Wert des Flusses mit der Kapazität des Schnittes α überein. Mit Theorem 1.38 folgt, dass kein anderer dynamischer s-t-Fluss einen
größeren Wert besitzen kann. Daher ist der berechnete zeitlich wiederholte
Fluss maximal.
Es folgt dadurch das Max Flow - Min Cut-Theorem für dynamische
Netzwerke
Theorem 1.40 (Ford und Fulkerson [7]). Sei (G, u, τ, s, t) ein dynamisches
Netzwerk und T ∈ R+ . Dann stimmt der Wert eines maximalen dynamischen s-t-Flusses mit der Kapazität eines dynamischen s-t-Schnittes überein.
1.5
Zeitexpandierte Graphen
Zeitexpandierte Graphen ermöglichen eine Reduktion von diskreten dynamischen Flussproblemen auf statische Flussprobleme. Wir werden daher uns
hier nur mit diskreten dynamischen Flüssen beschäftigen.
Allerdings haben zeitexpandierte Graphen den Nachteil, dass ihre
Knoten- und Kantenmengen im Verhältnis zu dem Ausgangsgraphen, auf
28
Graphentheoretische Grundlagen
welchem sie basieren, zu groß sind, d. h. dass sie i. A. eine exponentielle
Größe haben. Dennoch helfen sie uns, Existenzbeweise und Algorithmen für
unsere dynamischen Flussprobleme im nächsten Kapitel zu finden. Da wir
auch Flüsse mit mehreren Quellen untersuchen werden, müssen wir den statischen Flussbegriff für den Fall, dass wir mehrere Quellen gegeben haben,
erweitern.
Definition 1.41. Gegeben seien ein Graph G = (V, A) und eine Kapazitätsfunktion u : A → N0 . Desweiteren seien eine Menge von Quellen
∅ 6= S + ⊂ V und eine Menge von Senken ∅ 6= S − ⊂ V mit S + ∩ S − = ∅
gegeben.
(1) Ein S + -S − -Flussist ein Fluss mit exf (s) ≤ 0 für alle Quellen s ∈
−
S + und exf (t) ≥ 0 für alle
P Senken t ∈ S . Der Flusswert wird mit
+
val(f ) := −exf (S ) := − s∈S + exf (s) bezeichnet.
(2) Das Tupel (G, u, S + , S − ) wird als Netzwerk bezeichnet.
(3) Ein maximaler S + -S − -Fluss ist ein Fluss f , der den Ausdruck val(f )
maximiert.
Zuerst sehen wir ein, dass die S + +S − -Flussdefinition sich mit der Definition von s-t-Flüssen verträgt, da die Definition im Falle S + = {s} und
S − = {t} mit der bisherigen Definition der s-t-Flüsse übereinstimmt. Gewöhnliche Maximalflussberechnungen können hier auch auf s-t- Flussberechnungen reduziert werden, indem man eine Superquelle s und eine Supersenke
t einführt und diese entsprechend in den Graphen einbindet. Daher ist die
Existenz maximaler Flüsse gesichert, da einerseits hier auch wieder der Nullfluss zulässig ist, und andererseits der Flusswert nach oben beschränkt ist.
Nun können wir die zeitexpandierten Netzwerke definieren:
Definition 1.42. Seien N = (G, u, τ, S + , S − ) ein dynamisches Netzwerk
und T ∈ N ein Zeithorizont.
(1) Dann wird der zugehörige zeitexpandierte Graph GT = (V T , AT )
wie folgt definiert:
VT
A
T
:= {vθ : v ∈ V, θ ∈ {0, 1, . . . , T − 1}} und
:= {aθ = (vθ , wθ+τ (a) ) : a = (v, w) ∈ A, θ ∈ {0, 1, . . . , T − 1 − τ (a)}}
∪
{(vθ , vθ+1 ) : v ∈ V, θ ∈ {0, 1, . . . , T − 2}}}.
(2) Das zugehörige zeitexpandierte Netzwerk N T wird wie folgt definiert: N T := (GT , uT , S +(T ) , S −(T ) ) mit uT (aθ ) = u(a) für alle
θ ∈ {0, 1, . . . , T − 1 − τ (a)} und uT (vθ , vθ+1 ) = ∞. Desweiteren ist
S +(T ) := {sθ ∈ V T : s ∈ S + , 0 ≤ θ < T } und S −(T ) := {tθ ∈ V T : 0 ≤
θ < T }.
29
1.5 Zeitexpandierte Graphen
Bemerkungen 1.43. (1) Das zeitexpandierte Netzwerk enthält für jede
Zeitschicht [i, i + 1) für alle ganzzahligen 0 ≤ i < T jeweils eine Kopie aller Knoten aus G. Kanten (v, w) ∈ A entsprechen Kanten in AT , die von allen Knotenkopien von v aus der Zeitscheibe
[i, i + 1) zu der Knotenkopie in [i + τ ((v, w)), i + τ ((v, w)) + 1) für
alle 0 ≤ i ≤ T − τ ((v, w)) − 1 führen. Daher enthält der Graph O(T · n)
Knoten und O(T · m) Kanten. Flussberechnungsalgorithmen, die das
zeitexpandierte Netzwerk konstruieren müssen, sind daher bestenfalls
pseudopolynomiell.
(2) Die Kanten (vi , vi+1 ) ∈ AT für 0 ≤ i < T − 1 werden Übertrags- oder
Holdoverkanten genannt. Diese können, wie wir im nächsten Theorem sehen werden, für die Flussspeicherung im Knoten v im Zeitraum
[i, i+1) von einem statischen s0 -tT −1 -Fluss, welcher durch einen dynamischen s-t-Fluss mit Zeithorizont T induziert wird, benötigt werden.
(3) Im weiteren Verlauf werden wir u statt uT schreiben, da wir uT als
Erweiterung von u auf AT auffassen werden.
3
1
2
1
3
2
3
4
Zeitschicht: 3
1
2
3
4
Zeitschicht: 2
1
2
3
4
Zeitschicht: 1
1
2
3
4
Zeitschicht: 0
4
1
1
1
3
Abbildung 1.4: links: ein Graph G (auf den Kanten sind nur die Fahrzeiten angegeben)
rechts: der zeitexpandierte Graph G4
Wir erläutern nun den Zusammenhang zwischen einem dynamischen
Netzwerk und seinem zugehörigen zeitexpandierten Netzwerk.
Theorem 1.44. Seien N = (G, u, τ, S + , t) ein dynamisches Netzwerk, T ∈
N und N T das zugehörige zeitexpandierte Netzwerk. Dann induziert jeder
diskrete dynamische S + -t-Fluss f mit Wert |f | einen statischen S +(1) -tT −1 Fluss x mit Wert val(x) = |f | und umgekehrt.
Beweis. Sei x ein statischer S +(1) -tT −1 -Fluss auf GT . Für alle a ∈ A wird
der S + -t-Fluss f durch f (a, θ) = x(aθ ) induziert. Nach Konstruktion des
zeitexpandierten Netzwerkes erfüllt f die Kapazitätsbedingung. Wir zeigen
nun, dass in jedem Knoten außer den Knoten s ∈ S + und t und zu jedem
Zeitpunkt die Flusserhaltungsbedingung gilt. Dazu sei Y ∈ [0, T ] ganzzahlig
und v ∈ V \ S + \ {t}. Es gilt:
30
Graphentheoretische Grundlagen
YX
−1 θ=0
=
=
X
f ((v, w), θ − τ (a)) −
(v,w)∈δ − (v)
YX
−1 X
(w,v)∈δ − (v)
YX
−1
θ=0
−
(v,w)∈δ + (v)
x((wθ−τ (w,v) , vθ )) −
θ=0
f ((v, w), θ)
X
X
X
x((vθ , wθ+τ (v,w) ))
(v,w)∈δ + (v)
x((wκ , vθ )) − x(vθ−1 , vθ )
(wκ ,vθ )∈δ − (vθ )
X
!
x((vθ , wθ+τ (v,w) )) − x(vθ , vθ+1 )
(vθ ,wκ )∈δ + (vθ )
=
YX
−1 θ=0
=
YX
−1 exx (vθ ) −x(vθ−1 , vθ ) + x(vθ , vθ+1 )
| {z }
=0
−x(vθ−1 , vθ ) + x(vθ , vθ+1 )
θ=0
=x(vY −1 , vY ) ≥ 0.
Wir beachten, dass die letzte Zeile eine Teleskopsumme ist. Da wir nichtdefinierte Ausdrücke auf Null setzen, erhalten wir im Fall Y = T in der
letzten Zeile Gleichheit. Somit haben wir die Flusserhaltungsbedingungen
gezeigt.
31
1.5 Zeitexpandierte Graphen
Der Wert |f | beträgt
T
−1
X
X
θ=0 (w,t)∈δ − (t)
=
T
−1
X
=
X
f ((t, w), θ)
(t,w)∈δ + (s)
x((wθ−τ ((w,t)) , tθ )) −
θ=0 (w,t)∈δ − (t)
T
−1
X
X
f ((w, t), θ − τ ((w, t))) −
x((tθ , wθ+τ ((t,w)) ))
X
(t,w)∈δ + (t)
x((wκ , tθ )) − x(tθ−1 , tθ )
X
(wκ ,tθ )∈δ − (tθ )
θ=0
−
!
x((tθ , wθ+τ ((s,w)) )) + x(Tθ , tθ+1 )
X
(tθ ,wκ )∈δ + (tθ )
=
=
T
−1
X
θ=0
T
−2
X
exx (tθ ) − x(tθ−1 , tθ ) + x(tθ , tθ+1 )
−x(tθ−1 , tθ ) + x(tθ , tθ+1 ) + exx (tT −1 ) − x(tT −2 , tT −1 ) + t(tT −1 , tT )+
θ=0
=val(x) +
T
−1 X
−x(tθ−1 , tθ ) + x(tθ , tθ+1 ) .
|i=0
{z
=0
}
Somit ist f zulässig und besitzt den gleichen Flusswert wie x. Wir beachten
dabei, dass wir x(vθ , wκ ) = 0 setzen, falls dieser Ausdruck nicht definiert ist,
d. h. es gilt θ oder κ ∈
/ [0, T − 1].
Umgekehrt sei f ein dynamischer S + -t-Fluss welcher ohne Flussspeicherung in Knoten auskommt. Der entsprechende statische S +(1) -tT −1 -Fluss x
wird durch x(aθ ) = f (a, θ) induziert. Die Kapazitätsbedingung für x ist
nach Konstruktion des Netzwerkes erfüllt. Wir zeigen nun für jeden Knoten
vθ ∈ V T \ S +(T ) \ {t}T , dass die Flusserhaltungsbedingung erfüllt ist. Es gilt:
X
X
x((wκ , vθ ))) −
x((vθ , wκ ))
(wκ ,vθ )∈δ − (vθ )
X
=
(wκ ,vθ
=
X
f ((w, v), θ − τ ((w, v)) −
)∈δ − (v
X
(vθ ,wκ )∈δ + (vθ )
θ)
f ((w, v), θ − τ ((w, v)) −
(w,v)∈δ − (v)
(vθ ,wκ
)∈δ + (v
X
f ((v, w), θ)
θ)
f ((v, w), θ)
(v,w)∈δ + (v)
=exf ((v, θ + 1)) − exf ((v, θ))
=0.
Ist f ein dynamischer Fluss mit Flussspeicherung in Knoten, so lässt sich
32
Graphentheoretische Grundlagen
entsprechend der Fluss auf den Holdoverkanten definieren, damit die oberen
Berechnungen analog durchführbar bleiben.
Desweiteren müssen die Holdoverkanten der Quelle und Senke noch geeignet definiert werden, damit |f | = val(x) gilt. Dies ist aber durchführbar,
wenn der statische Fluss x auf den nicht-Holdoverkanten berechnet ist. Dies
gelingt mit analoger Anwendung der Holdoverkanten-Konstruktion in Theorem 2.17 im nachfolgenden Kapitel, wenn wir x als S +(T ) -S −(T ) -Fluss (mit
S − = {t}) auffassen.
Durch das letzte Theorem erhalten wir eine weitere Möglichkeit maximale dynamische Flüsse mit Hilfe zeitexpandierter Graphen zu berechnen.
Allerdings ist es i. A. kein effiziente Möglichkeit, da das zeitexpandierte Netzwerk im Vergleich zu dem zugrunde liegenden Netzwerk eine exponentielle
Größe haben kann.
Kapitel 2
Evakuierungsprobleme
2.1
Einführung
In diesem Kapitel befassen wir uns mit Evakuierungsproblemen. Man stelle
sich ein brennendes Gebäude oder ein brennendes Flugzeug vor, welches
kurz davor steht zu explodieren. Die im Gebäude oder Flugzeug befindlichen
Personen müssen so schnell wie möglich in Sicherheit gebracht werden. Eine
Panik kann schnell zu Engpässen auf den Fluchtwegen und damit zu einer
Katastrophe führen. Damit es nicht zu einer Katastrophe kommt, werden bei
der Konstruktion von Gebäuden und Flugzeugen Evakuierungspläne erstellt,
an welche man sich im Ernstfall halten soll, um so schnell wie möglich in
Sicherheit zu gelangen.
Bei diesen Problemen bietet sich es an, das zu evakuierende Objekt durch
ein dynamisches Netzwerk zu modellieren, da die Zeit die wichtigste Komponente ist. In diesem Kapitel werden wir uns auf ganzzahlige Netzwerke
und Berechnung diskreter dynamischer Flüsse beschränken. Daher, wenn
nichts anderes angemerkt wird, verstehen wir in diesem Kapitel unter einem
dynamischen Fluss immer einen diskreten dynamischen Fluss.
Bisher haben wir das dynamische Max Flow Problem kennengelernt. An
sich ist dieses Problem für die Berechnung einer Evakuierung ungeeignet, da
es als Eingabe auch einen Zeithorizont erwartet. Wenn man eine gegebene
Menge an Personen evakuieren möchte ist zunächst nicht klar innerhalb welchen Zeitraumes dies möglich ist. Auf das dynamische Netzwerk übertragen
bedeutet das, dass man vorab Kenntnis über den Zeithorizont haben sollte. Ein ähnliches Probleme schafft hier Abhilfe. Es handelt sich dabei um
das Quickest Transshipment Problem, bei welchem es bei einer gegebenen
Balancefunktion darum geht, einen dynamischen Fluss zu finden, der die
Bedarfe erfüllt und den kleinstmöglichen Zeithorizont besitzt. Berlin [2] und
Chalmet [4] et al. untersuchten das Problem auf Netzwerken mit mehreren
Quellen und einer Senke. Jarvis und Ratliff [13] untersuchten zwar das Problem auf Netzwerken mit einer Quelle und einer Senke, aber ihre Ergebnisse
sind auch auf Netzwerke mit mehreren Quellen übertragbar. Sie stellten fest,
dass drei Eigenschaften eines dynamischen Flusses, der die gegebenen Bedarfe erfüllen soll, gleichzeitig erreichbar sind. Die erste Eigenschaft ist die,
dass der gesuchte Fluss einen minimalen Zeithorizont haben soll. Die zweite
Eigenschaft besagt, dass die Anzahl der Flusseinheiten, die zu jedem Zeitpunkt θ ≥ 0 das Netzwerk verlassen, maximal ist. Die dritte Eigenschaft
33
34
Evakuierungsprobleme
besagt, dass die durchschnittliche Zeit, welche Flusseinheiten benötigen, um
das Netzwerk zu verlassen, minimal ist. Dynamische Flüsse, welche die erste
Eigenschaft haben, werden Quickest Transshipments genannt. Dynamische
Flüsse welche die zweite, und somit auch offensichtlich die dritte Eigenschaft erfüllen, werden Earliest Arrival Transshipments genannt, welche in
Abschnitt 2.5 eingehender untersucht werden. Desweiteren ist jedes Earliest
Arrival Transshipment ein Quickest Transshipment. Die Umkehrung ist aber
i. A. falsch. Dies kann man z. B. daran sehen, dass Earliest Arrival Transshipments auf Netzwerken mit mehreren Senken nicht existieren, obwohl es
auf diesen Netzwerken immer ein Quickest Transshipment gibt. Dazu geben
wir im weiteren Verlauf des Kapitels ein Beispiel an.
Wir geben nun an, wie im folgenden Hoppe und Tardos das Quickest
Transshipment Problem untersucht und gelöst haben. Wir definieren das
Quickest Transshipment Problem und weitere Teilprobleme, die auf dem Weg
zur Lösung benötigt werden. Eine schöne Eigenschaft des Problems ist, dass
stets ganzzahlige Flüsse bei gegebenen ganzzahligen Instanzen existieren.
2.2
Das Quickest Transshipment Problem
Quickest Flow Problem
Beim Quickest Flow Problem geht es darum, den kleinsten Zeithorizont zu
bestimmen, innerhalb dessen es möglich ist, eine gegebene Menge an Flusseinheiten von einer Quelle zu einer Senke zu befördern.
Quickest Flow Problem
Instanz: Ein dynamisches Netzwerk (G, u, τ, s,P
t),
eine Balancefunktion b : V → N mit v∈V b(v) = 0
Gesucht: Ein minimaler Zeithorizont T ∈ N, so dass es einen dynamischen s-t-Fluss gibt mit |f | = b(s).
Dieses Problem lässt sich auf das dynamische Max Flow Problem mittels
binärer Suche lösen. Der gesuchte Zeithorizont muss sich im Intervall [0, n ·
τ ∗ + b(t)] befinden, wobei τ ∗ := max{τ (a) : a ∈ A} das Maximum aller
Fahrzeiten der Kanten von A bezeichnet. Für jede Überprüfung eines gerade
betrachteten Zeithorizontes T wird dann eine gewöhnliche dynamische Max
Flow Berechnung durchgeführt und getestet ob bzgl. des maximalen Flusses
fT die Beziehung |fT | < b(t) gilt. Der gesuchte Zeithorizont T 0 ist derjenige,
für welchen |fT 0 −1 | < b(t) und |fT 0 | ≥ b(t) gilt.
Effizientere bzw. strengpolynomielle Algorithmen haben Burkard, Dlaska
und Klinz in [3] aufgezeigt.
Das Quickest Flow Problem ist ein Spezialfall, wenn wir das nun folgende
Quickest Transshipment Problem auf eine Quelle und eine Senke einschrän-
2.2 Das Quickest Transshipment Problem
35
ken.
Quickest Transshipment Problem
+ , S − ),
Instanz: Ein dynamisches Netzwerk (G, u, τ, SP
eine Balancefunktion b : V → N mit v∈V b(v) = 0
Gesucht: Ein minimaler Zeithorizont T ∈ N, so dass es einen dynamischen s-t-Fluss gibt mit |f | = b(S + )
Auf dem Weg zur Lösung des Quickest Transshipment Problems werden
wir das Transshipment Problem benötigen, da wir dieses Problem bei Kenntnis des minimalen Zeithorizontes auf das Transshipment Problem reduzieren
werden.
Transshipment Problem
Als Evakuierungsproblem wird in der kombinatorischen Optimierung die
Erweiterung des Quickest Flow Problems auf mehrere Quellen und einer
Senke verstanden. Wir sprechen dann von einem Quickest Transshipment
Problem. Zunächst untersuchen wir das Transshipment Problem, welches
bei der Untersuchung des Quickest Transshipment Problems eine wichtige
Rolle einnimmt.
Definition 2.1. Sei (G, u, τ, S + , S − ) ein dynamisches
P Netzwerk, T ∈ N ein
Zeithorizont, b : V → N eine Balancefunktion mit v∈V b(v) = 0 und es sei
b(v) > 0 für alle v ∈ S + und b(v) < 0 für alle v ∈ S − und b(v) = 0 sonst.
Ein dynamisches Transshipment mit Zeithorizont T ist ein dynamischer S + -S − -Fluss f , welcher die Balancefunktion b respektiert, d. h. es
muss gelten:
(1) exf (v, T ) = −b(v) für alle v ∈ V ,
(2) −exf (s, Y ) ≤ b(s) für alle s ∈ S + und alle Y < T .
Bemerkungen 2.2. Die Bedingung (2) besagt, dass eine Quelle nicht mehr
als b(v) Flusseinheiten losschicken darf. Somit darf sie nicht mehr losschicken, als sie zur Verfügung hat. In der meisten Literatur ist diese Bedingung
nicht explizit enthalten. Die später vorgestellten Algorithmen basieren darauf und würden falsche Resultate liefern, wenn wir (2) ignorieren würden.
In Abbildung 2.1 sehen wir ein Netzwerk (Die Zahlen an den Knoten geben
ihren Bedarf an und die Zahlen an den Kanten geben nacheinander Fahrzeit
und Kapazität an), auf welchem wir ein Transshipment f betrachten könnten, welches zum Zeitpunkt 0 aus dem Knoten s1 zwei Flusseinheiten über
die Kante (s1 , t) und eine Flusseinheit über die Kante (s2 , s1 ) versendet. Zu
anderen Zeitpunkten werden keine weiteren Flusseinheiten versendet.
36
Evakuierungsprobleme
Die zwei Flusseinheiten, welche in s1 gestartet sind, benötigen genau
zwei Zeiteinheiten, um vollständig die Senke t zu erreichen. Die Flusseinheit, die in s2 gestartet ist nach drei Zeiteinheiten komplett im Knoten s1
enthalten und wird nicht weiter verschickt. In diesem Fall, da unser Netzwerk nur ausgezeichnete Knoten besitzt, wird die Flusserhaltungsbedingung
trivialerweise erfüllt. Weiterhin wird die Kapazitätsbedingung offensichtlich
eingehalten. Wir haben somit einen zulässigen dynamischen {s1 , s2 }-t-Fluss
beschrieben mit exf (t, 3) = |f | = 2 und Zeithorizont 3.
Wir betrachten nun den Ausdruck exf (s1 , 3). Da zwei Flusseinheiten entlang (s1 , t) versendet wurden und innerhalb des Zeithorizontes eine Flusseinheit den Knoten über (s2 , s1 ) erreicht hat, gilt exf (s1 , 3) = −1 = −b(s1 ).
Da in s2 nur eine einzige Flusseinheit gestartet ist, gilt exf (s2 , 3) = −1 =
−b(s2 ). Wenn wir auf die Bedingung (2) in der letzten Definition verzichten
würde, hätten wir ein zulässiges b-Transshipment vorliegen.
Aber nun betrachten wir den Ausdruck exf (s1 , 1). Es gilt exf (s1 , 1) =
f ((s2 , s), 0 − 2) − f ((s1 , t), 0) = −2 < −1 = −b(s1 ). Somit ist die Bedingung
|
{z
} |
{z
}
:=0
=2
(2) verletzt. Desweiteren ist auch kein anderes Transshipment mit Zeithorizont 3 möglich, da Flusseinheiten, die in die Kante (s1 , t) betreten wollen,
spätestens zum Zeitpunkt 1 diese Kante betreten müssen. Desweiteren darf
die Kante (s2 , t) wegen ihrer Fahrzeit nie benutzt werden. Die Kante (s2 , s1 )
dagegen müsste benutzt werden, da sonst die Bedingung (1) verletzt wäre.
-2
t
1/2
s1
1
10/1
2/1
s2
1
Abbildung 2.1: Eine kleine Netzwerkinstanz, zu welcher zum Zeithorzont 3 kein zulässiges b-Transshipment mit b(s1 ) = b(s2 ) = 1 existiert.
Das Problem, zu einem gegebenen Zeithorizont, Balancefunktion und
einem Netzwerk ein dynamisches Transshipment zu finden, wird als Transshipment Problem bezeichnet.
Transshipment Problem
+
−
Instanz: Ein dynamisches Netzwerk N = (G, u,
Pτ, S , S ),
eine Balancefunktion b : V → N mit v∈V b(v) = 0,
ein Zeithorizont T ∈ N0
Gesucht: Ein dynamischer S + -S − -Fluss mit Zeithorizont der die Balancefunktion b respektiert, oder die Aussage, dass kein solches Transshipment existiert.
2.2 Das Quickest Transshipment Problem
37
Definition 2.3. Sei (N, b, T ) eine Instanz des Transshipment Problems.
Dann heißt diese Instanz zulässig, falls diese Instanz eine Lösung besitzt.
Wenn wir eine zulässige Instanz vorliegen haben, werden wir später kurz
erläutern, wie Hoppe und Tardos in [10] und [11] dieses Problem auf das
dynamische lexikographische Max Flow Problem reduzieren. Danach werden
wir uns kurz mit der Zulässigkeit des Transshipment Problems befassen.
Dynamische lexikographisch maximale Flüsse
Definition 2.4. Seien N = (G, u, τ, S + , S − ) ein dynamisches Netzwerk,
b eine Balancefunktion und T ∈ N ein Zeithorizont. Desweiteren existiere
eine Anordnung der Knoten aus S + ∪ S − durch das Tupel (s0 , . . . , sl ), wobei
|S + | + |S − | = l gilt.
(1) Ein dynamischer lexikographischer maximaler S + -S − -Fluss
ist ein dynamischer S + -S − -Fluss, der die Menge an Flusseinheiten,
welche die Knoten (s0 , . . . , sl ) verlassen, bzgl. der gegebenen Ordnung
maximiert.
(2) Wir definieren Si := {s0 , . . . , si−1 } für 0 ≤ i ≤ l, wobei S0 := ∅ gelten
soll und C := {Si : 0 ≤ i ≤ l}.
(3) W T (Si ) bezeichne die maximal mögliche Anzahl an Flusseinheiten,
welche ein dynamischer Fluss mit Zeithorizont T von Quellen aus S + ∩
Si zu Senken aus S − \ Si versenden kann.
Analog verstehen wir im statischen Fall bzgl. der Anordnung {s0 , . . . , sl }
unter einem lexikographischen maximalen S + -S − -Fluss, einen Fluss, der
bzgl. der gegebenen Anordung die Menge an Flusseinheiten, welche jeden
Knoten verlässt, maximiert. Wir beachten dabei sowohl im dynamischen
als auch im statischen Fall, dass wir unter dem Verlassen einer Senke das
Verlassen des Netzwerks, d. h. das Betreten dieser Senke verstehen. Somit
verstehen wir unter Maximierung der Anzahl an Flusseinheiten welche eine
Senke verlässt die Minimierung der Flusseinheiten welche die Senke betreten
soll.
Nach Minieka und Megiddo ist bekannt, dass statische lexikographische
Flüsse existieren, die jeweils simultan für alle 0 ≤ i ≤ l die Anzahl der Flusseinheiten maximieren, welche die Menge Si verlassen. Mit dieser Eigenschaft
werden wir in Abschnitt 2.4 die statischen lexikographisch maximalen Flüsse, welche wir später als technisches Hilfsmittel benötigen, einführen und definieren. Dabei beleuchten wir den Existenzbeweis statisch lexikographisch
38
Evakuierungsprobleme
maximaler von Minieka welcher der o. g. Beobachtung von Megiddo und
Minieka zugrunde liegt.
Durch den Zusammenhang dynamischer und zeitexpandierter Netzwerke
erhalten wir durch die Existenz statisch lexikographischer Flüsse die Existenz dynamischer lexikographischer Flüsse.
dynamisches lexikographisches Max Flow Problem
Instanz: Ein dynamisches Netzwerk N = (G, u, τ, S + , S − )
Eine Anordnung C der Knoten S + ∪ S − = {s0 , . . . , sl }
ein Zeithorizont T ∈ N0 , so dass die Instanz (N, b, T ) zulässig
ist
Gesucht: Ein dynamischer lexikographischer maximaler S + -S − -Fluss.
Über das dynamische lexikographische maximale Max Flow Problem ist
folgende Aussage bekannt:
Theorem 2.5. (Minieka[19] und Megiddo[17]) Sei N = (G, u, τ, S + , S − )
ein dynamisches Netzwerk, eine Anordnung der Quell- und Senkeknoten
S + ∪ S − = {s0 , . . . , sl } und T ein Zeithorizont. Sei f ein dynamischer S + S − -Fluss mit Zeithorizont T , welcher dynamisch
Pilexikographisch maximal
ist. Dann gilt für alle 0 ≤ i ≤ l: −exf (Si , T ) = − j=0 exf (sj , T ) = W T (Si )
Dieses Problem lässt sich auf einem modifizierten Netzwerk lösen. Sei T
ein Zeitpunkt, zu welchem (N, C, T ) zulässig ist. Wir beschreiben nun die
Netzwerkmodifikation und den Algorithmus, den Hoppe und Tardos [10] und
[11] beschrieben haben. Zu erwähnen ist, dass Fleischer und Tardos in [5]
dieses Resultat auf kontinuierliche Flüsse übertragen haben.
Sei N = (G, u, τ, S + , S − ). Dann fügen wir eine Superquelle ψ und Kanten
(ψ, sk ) für alle sk ∈ S + mit Fahrzeit Null und unbegrenzter Kapazität ein.
Den so entstandenen Graphen bezeichnen wir mit G(l + 1). Weiter sei fl+1
der statische Nullfluss auf G(l + 1).
Wir untersuchen nun nacheinander die Knoten si in umgekehrter Anordnung, d. h. für i = l, . . . , 0.
Falls si ∈ S + , dann entfernen wir die Kante (ψ, si ) und erhalten so
den Graphen G(i). Auf Gfi+1 (i) berechnen wir einen statischen maximalen ψ-si -Fluss gi mit minimalen Kosten, indem wir τ als Kostenfunktion
interpretieren. Wir setzen dann fi := fi+1 + gi .
Falls si ∈ S − , dann fügen wir eine Kante si , ψ mit unbegrenzter Kapazität und Kostenfaktor −T ein, um so den Graphen G(i) zu erhalten.
Auf Gfi+1 (i) berechnen wir nun eine Minimalkostenzirkulation gi und setzen dann fi := fi+1 + gi .
Diesen Vorgang iterieren wir bis der letzte Knoten untersucht wurde.
Wenn wir nach einer Iteration i den Fluss fi berechnet haben, berechnen wir
2.2 Das Quickest Transshipment Problem
39
eine Standard Pfadzerlegung, wobei wir den zugrundeliegenden Residualgraphen als Ausgangsgraphen betrachten. Wenn wir die Pfade der Pfadzerlegung zeitlich wiederholen, erhalten wir einen dynamischen lexikographischen
Fluss. Man beachte, dass die Pfade bzgl. des Ausgangsgraphen G Rückwärtskanten enthalten können. Somit handelt es sich um einen sogenannten
verallgemeinerten zeitlich wiederholten Fluss bzgl. einer sogenannten verallgemeinerten Pfadzerlegung. Verallgemeinerte Pfadzerlegungen werden wir
in Abschnitt 2.4.2 definieren und erläutern. Für weitere Details verweisen
wir auf Hoppe und Tardos [10] und [11].
Zusammenfassend haben wir folgenden Sachverhalt:
Theorem 2.6 (Hoppe und Tardos [10], [11]). Sei (N, C, T ) eine Instanz
des dynamischen lexikographischen Max Flow Problems. Dann liefert der
soeben beschriebene Algorithmus einen dynamischen lexikographisch maximalen Fluss in strengpolynomieller Zeit.
T
Pi Wenn für die Mengen Si ∈ C die Beziehung W (Si ) = b(Si ) =
j=1 b(si ) gilt, könnte man sofort das Transshipment Problem mit einer
dynamischen lexikographischen Max Flow Berechnung lösen. Nun gilt aber
diese Beziehung nicht im Allgemeinen. Wir zeigen nun auf wie Hoppe und
Tardos die gegebene Instanz (N, b, T ) des Transshipment Problems in eine
äquivalente Instanz (N, C 0 , T ) des dynamischen lexikographischen Max Flow
Problems überführen, so dass W T (Si0 ) = b(Si0 ) für alle Si0 ∈ C 0 gilt.
Definition 2.7. Sei N = (G, u, τ, S + , S − ) ein dynamisches Netzwerk. Eine
Menge X ∈ S + ∪ S − heißt strikt, wenn W T (X) = b(X) gilt.
Sei nun (N, b, T ) eine Instanz des Transshipment Problems. Der Algorithmus von Hoppe und Tardos fügt für jeden Knoten s ∈ S + ∪ S − einen
Knoten s0 ein. Gilt s ∈ S + , so fügt er die Kante (s0 , s) in das Netzwerk ein.
Andernfalls fügt er die Kante (s, s0 ) ein. Die neuen Kanten besitzen jeweils
Fahrzeit Null und unbeschränkte Kapazität. Wir erhalten mit den neuen
Knoten entsprechend neue Mengen S 0+ und S 0− . Die ursprünglichen ausgezeichneten Knoten werden nun als Zwischenknoten betrachtet. Wir führen
daher eine neue Balancefunktion b0 ein mit b0 (s0 ) = b(s) für alle s ∈ S + ∪ S −
und b0 (v) = 0 für alle v ∈ V sonst.
Nun konstruiert der Algorithmus iterativ eine Menge C 0 strikter Mengen,
die in S 0 := S + ∪ S − enthalten sind. Am Anfang setzt er C 0 = {∅, S 0 }.
Diese Mengen sind trivialerweise strikt. Der Algorithmus erweitert nun —
ausgehend von diesem neuen Netzwerk— die Menge C 0 um weitere strikte
Mengen ˜(S) ⊂ S 0 solange bis |C 0 | = |S 0 | + 1 gilt. In diesem Fall stellt C 0 eine
vollständige Anordnung der Knoten aus S 0 da. Da alle Teilmengen aus S 0
dann strikt sind, wären wir fertig.
Um dieses Ziel zu erreichen betrachtet der Algorithmus in jeder Iteration
zwei adjazente Mengen Q und R mit |R \ Q| > 1 aus C 0 . Adjazent bedeutet
40
Evakuierungsprobleme
hier, dass es keine Menge X ∈ C 0 mit Q ( X ( R gibt. Der Algorithmus
fügt nun weitere strikte Teilmengen Q0 mit Q ( Q0 ( R in C 0 ein, indem
S 0 um weitere ausgezeichnete Knoten erweitert wird. Eine Invariante des
Algorithmus ist, dass R \ Q mit mehr als einem Element immer einen ausgezeichneten Knoten aus S + ∪ S − enthält. Die neuen ausgezeichneten Knoten
werden jeweils mit dem ursprünglichen ausgezeichneten Knoten mittels einer
Kante mit nichtnegativer Kapazität und nichtnegativer Fahrzeit verbunden.
Ferner wird der originale b-Wert eines Knotens s aus S + ∪ S − auf neue Knoten aus S 0 verteilt, die per Kante mit neuen Knoten s0 , . . . ∈ S 0 adjazent
sind.
Nach jeder Iteration erhalten wir eine neue Instanz (N 0 , b0 , T ) die zu allen
vorher entstandenen Instanzen des Transshipment Problems äquivalent ist.
Weiterhin vergrößert sich die Differenz |C 0 | − |S 0 | um genau eins.
Der Algorithmus terminiert, wenn |C 0 | = |S 0 | + 1 gilt. Die berechnete Instanz des Transshipment Problem ist zu unserer Ausgangsinstanz äquivalent
und lässt sich wegen Theorem 2.5 durch eine dynamische lexikographische
Maximalfluss Berechnung lösen, indem wir die Instanz (N 0 , C 0 , T ) lösen.
Für weitere Details verweisen wir auf [10] und [11]. Wir halten weiter
fest:
Theorem 2.8 (Hoppe und Tardos [10][11]). Sei (N, b, T ) eine zulässige
Instanz des Transshipment Problems. Der soeben beschriebene Algorithmus
kann in streng polynomieller Zeit eine äquivalente Instanz (N 0 , b0 , T ) und
eine Menge C 0 berechnen, so dass diese Instanz in streng polynomieller Zeit
durch eine dynamische lexikographische Max Flow Berechnung lösbar ist.
Zulässigkeit des Transshipment Problems
Theorem 2.9 (Klinz [14]). Eine Instanz (N, b, T ) des Transshipment Problems ist genau dann zulässig, wenn W T (X) ≥ b(X) für alle X ⊂ S + ∪ S −
gilt.
Eine erste Möglichkeit die Zulässigkeit einer Instanz zu testen, wäre die
Enumeration aller Teilmengen von S = S + ∪ S − . Eine weitere Möglichkeit
legten Hoppe und Tardos in [10] und [11] dar. Sie betrachteten die Funktion
f : 2S → R mit f (X) = W T (X)−b(X) und stellten fest, dass f sub-modular
ist, d. h. es gilt für alle X, Y ∈ 2S : f (X)+f (Y ) ≥ f (X ∪Y )+f (X ∩Y ). Wenn
wir eine Menge X ∈ 2S finden, so dass f(X) minimal ist und f(X)<0 gilt,
so ist die betrachtete Instanz nach Theorem 2.9 unzulässig. Nach Grötschel,
Lovász und Schrijver [9] ist es möglich f in streng polynomieller Zeit zu
minimieren.
Wir halten fest:
Theorem 2.10. Die Zulässigkeit einer Instanz (N, b, T ) des Transshipment
Problems kann in streng polynomieller Zeit ermittelt werden.
2.2 Das Quickest Transshipment Problem
41
Nun stehen uns alle Resultate zur Verfügung, um das Quickest Transshipment Problem lösen zu können.
Lösung des Quickest Transshipment Problems
Um das Quickest Transshipment Problem lösen zu können, muss man den
minimalen Zeithorizont T kennen, so dass man die Instanz (N, b) durch
eine Transshipment Problem Instanz (N, b, T ) ersetzt und diese löst. Eine
triviale obere Schranke ist analog wie bei dem Quickest Flow Problem ein
Zeithorizont von T ∗ := n · τ (A) + b(S + )]. Mittels binärer Suche und 2.10
können wir nun jede Instanz (N, b, T ) für 0 ≤ T 0 ≤ T ∗ auf Zulässigkeit
testen. Eine weitere Möglichkeit, die Hoppe und Tardos aufzeigen, um in
streng polynomieller Zeit den minimalen Zeithorizont zu finden, ergibt sich
mittels Megiddos parametrischer Suche. Hierzu verweisen wir auf [18].
Zusammenfassend haben wir folgendes Theorem:
Theorem 2.11 (Hoppe und Tardos [10], [11]). Die Instanz (N, b) des
Quickest Transshipment Problem kann in streng polynomieller Zeit gelöst
werden. Es kann auch in Zeit O(|S| · log(n · u(A) · b(S + ) · T ∗ ) · RUNTIME(FEAS))
gelöst werden, wobei T ∗ die triviale obere Zeitschranke und RUNTIME(FEAS) die Laufzeit der Zulässigkeitsberechnung der Transshipment
Problem Instanz (N, b, T ∗ ) bezeichnet.
Bemerkungen 2.12. In der Praxis ist die beschriebene exakte Lösung des
Quickest Transshipment Problems sehr schlecht anwendbar. Eine weitere exakte Lösung erhalten wir durch die Benutzung eines leicht modifizierten zeitexpandierten Graphen, den wir für alle T ≤ T ∗ auf der Suche nach dem
kleinsten Zeithorizont mittels binärer Suche erstellen können. Dort können
wir das Transshipment Problem durch eine statische Max Flow Berechnung
finden. Dieser Ansatz ist leider pseudopolynomiell, da die betrachteten Netzwerke im Vergleich zum Ausgangsnetzwerk exponentiell viele Knoten und
Kanten enthalten können. Dennoch erhalten wir durch diesen Ansatz und
Theorem 1.21 die Einsicht, dass ganzzahlige Instanzen des TransshipmentProblems ganzzahlige Flüsse als Lösung ermöglichen.
Eine Verkleinerung des zeitexpandierten Graphen macht sich der (1 + ε)Approximationsalgorithmus von Fleischer und Skutella [6] zunutze. Bei Erstellen des zeitexpandierten Graphen werden dabei gewisse Zeitschichten
ausgelassen und Kantenkapazitäten von Kanten zwischen Knoten zweier
Zeitschichten modifiziert. Dieser verkleinerte Graph wird zeitkondensierter
Graph genannt. Dabei sei ∆ ein gemeinsames Vielfaches der Fahrzeiten auf
den Kanten, so dass es in Abhängigkeit der Eingabe polynomial ist. Mit
N T /∆ bezeichnen wir den zeitkondensierten Graphen, bei welchem dT /∆e
Zeitscheiben abgedeckt werden. Die Kantenkapazitäten werden mit ∆ multipliziert. Wenn kein gemeinsames Vielfaches ∆ existiert, werden die Kantenkapazitäten geeignet aufgerundet, um solch ein Vielfaches zu erhalten.
42
Evakuierungsprobleme
Mit Hilfe der zeitkondensierten Graphen ist es nun möglich, das Quickest
Transshipment Problem mit einer Güte von (1 + ε) (d. h. der berechnete
Zeithorizont ist um den Faktor (1 + ε) größer als der optimale Zeithorizont)
zu lösen.
2.3
Die Earliest Arrival Eigenschaft und dynamische Flüsse
Dieser Abschnitt beschreibt das Kernproblem, welches in dieser Diplomarbeit vorgestellt wird. Weiterhin werden dafür in einem späteren Abschnitten
eine exakte Lösung präsentieren. Das Kernproblem ist die Berechnung sogenannter Earliest Arrival Transshipments. Motiviert werden diese Art dynamischer Netzwerkflüsse durch Evakuierungsprobleme in der Realität. Ziel
ist es später, die exakten Lösungen mit den später vorgestellten Heuristiken
aus dem nachfolgenden Kapitel vergleichen zu können.
Wir weisen noch einmal darauf hin, dass wir, soweit nichts anderes erwähnt wird, annehmen, dass wir ausschließlich ganzzahlige Instanzen und
diskrete dynamische Flüsse in den folgenden Problemen untersuchen werden.
+
Definition 2.13. Gegeben seien eine Netzwerkinstanz (G, u,
Pτ, S , t), ein
Zeithorizont T ∈ N und eine Balancefunktion b : V → N mit v∈V b(v) = 0
und b(v) > 0 für v ∈ S + , b(t) < 0 und b(v) = 0 für alle v ∈ V \ S + ∪ {t}.
(1) Sei f ein dynamischer S + -t-Fluss. Dann heißt die Abbildung p : N → N
mit p(θ) := exf (t, θ) Arrival Pattern. Wenn im Kontext nicht klar
ist, auf welchen Fluss sich p bezieht, schreiben wir pf statt p.
(2) Ein Earliest Arrival Flow ist ein dynamischer Fluss f , der zu jedem
Zeitpunkt 0 ≤ θ ≤ T maximal ist, d. h. für alle anderen dynamischen
S + -t-Flüsse f 0 gilt pf (θ) ≥ pf 0 (θ) für alle 0 ≤ θ ≤ T . Das Arrival
Pattern heißt in diesem Falle Earliest Arrival Pattern. Wir sagen
auch, dass f die Earliest Arrival Eigenschaft besitzt.
(3) Ein Earliest Arrival Transshipment ist ein dynamisches bTransshipment f , welches zu jedem Zeitpunkt 0 ≤ θ ≤ T maximal ist, d. h. für alle anderen dynamischen b-Transshipments f 0 gilt
pf (θ) ≥ pf 0 (θ) für alle 0 ≤ θ ≤ T . Das Arrival Pattern bezeichnen
wir in diesem Fall auch als Earliest Arrival Pattern. Wir sagen an
dieser Stelle auch, dass f die Earliest Arrival Eigenschaft besitzt.
Es stellt sich die Frage ob Flüsse mit der Earliest Arrival Eigenschaft
existieren. Wenn ein Netzwerk mehrere Senken besitzt und wir bzgl. einer
Balancefunktion ein Earliest Arrival Transshipment suchen, so existiert i. A.
kein solcher Fluss. Baumann und Skutella [1] zeigten folgendes Beispiel, in
welchem kein b-Transshipment existiert:
In der nachfolgenden Abbildung 2.2 sehen wir ein Netzwerk mit einer
Quelle und zwei Senken. Wir haben an allen Kanten eine Kapazität von
2.3 Die Earliest Arrival Eigenschaft und dynamische Flüsse
43
Eins und haben eine Fahrzeit von Null auf allen Kanten außer auf der Kante (v, t2 ). Dort haben wir eine Fahrzeit von Eins. Weiterhin haben wir an
den Senken jeweils einen Einheitsbedarf. Betrachten wir nun einen Fluss
f1 mit f1 ((s, v), 0) := f1 ((v, t1 ), 0)) = 1. Somit kann zum Zeitpunkt 1 eine
Flusseinheit die Senke t1 vollständig erreichen. Aus Kapazitätsgründen und
Fahrzeitsgründen kann keine weitere Flusseinheit die Senke t2 zum Zeitpunkt
1 vollständig erreichen. Eine weitere Flusseinheit, die die Senke t2 erreichen
muss, kann aber hier erst Zeitpunkt 1 in s und in Knoten v starten. Wir
setzen weiter f ((s, v), 1) = 1 und f ((v, t2 ), 1) = 1. Diese Flusseinheit kann
aber erst zum Zeitpunkt 3 die Senke vollständig erreichen. Der Fluss f ist offensichtlich ein zulässiges Transshipment mit Zeithorizont 3, wobei wir f an
den bisher nicht definierten Paaren von Kanten und Zeitpunkt auf Null setzen. Wenn wir das Arrival Pattern für Flüsse auf Netzwerken mit mehreren
Senken definieren würden, würden wir hier pf (θ) := exf (t1 , θ) + exf (t2 , θ)
setzen. Allgemein würden wir über alle exf Ausdrücke bzgl. jeder Senke
summieren, was mit obiger Definition im Falle einer Senke verträglich ist,
da dann die Summe dann nur noch aus einem Summanden besteht und mit
obiger Definition übereinstimmt.
Wenn wir das Arrival Pattern von f betrachten, so haben wir pf (1) =
1, pf (2) = 1 und pf (3) = 2. Betrachten wir nun einen Fluss f 0 mit
f 0 ((s, v), 0) = 1 und f 0 ((v, t2 ), 1) = 1. Hier fließt zuerst eine Flusseinheit
von s nach t2 welche erst nach zwei Zeiteinheiten vollständig in t2 enthalten
ist. Setzen wir weiterhin f10 ((s, v), 1) := f10 ((v, t1 ), 1)) = 1, so erhalten wir
anschaulich eine weitere Flusseinheit, die zum Zeitpunkt Eins in s startet
und erst nach zwei Zeiteinheiten vollständig in t1 angekommen ist. Weiterhin setzen wir f 0 auf den bisher nicht betrachtet Paaren von Kanten und
Zeitpunkten auf Null. Somit ist f 0 ein zulässiges Transshipment mit Zeithorizont 2. Betrachten wir nun auch hier das spezielle Arrival Pattern. Wir
haben pf 0 (1) = 0 und pf 0 (2) = 2.
Wenn es nun ein Earliest Arrival Transshipment f ∗ mit Zeithorizont 3
geben würde, so müsste zumindest pf ∗ (1) = 1 und pf ∗ (2) = 2 gelten. So
einen Fluss kann es aber nicht geben, da f das einzige Transshipment ist,
welches pf (1) = 1 erfüllt. Dieses Transshipment ist aber wegen pf (2) = 1
kein Earliest Arrival Transshipment.
2
s
0
v
0
1
-1
t1
t2
-1
Abbildung 2.2: Ein Gegenbeispiel zur Existenz von Earliest Arrival Flows auf Netzwerken mit zwei Senken. Die Zahlen an den Knoten beschreiben den Bedarf und die Zahlen
auf den Kanten beschreiben die Fahrzeit. Die Kapazitäten sind einheitlich.
44
Evakuierungsprobleme
Dagegen existiert beim Vorhandensein einer einzigen Senke immer ein Earliest Arrival Transshipment, was im Abschnitt 2.5 gezeigt wird.
Im nachfolgenden Abschnitt widmen wir uns den Earliest Arrival Flows.
Im Falle S + = {s} also wenn das Netzwerk nur genau eine Quelle und eine Senke besitzt, kann eine spezielle Variante des Sucessive Shortest Path
Algorithmus eingesetzt werden. Die Lösung kann zwar i. A. nicht mehr mit
zeitlich wiederholten Flüssen, die auf einer üblichen Pfadzerlegung eines statischen Flusses basieren gelöst werden, aber mit Flüssen, die auf einer verallgemeinerten Pfadzerlegung basieren. Dieses Prinzip werden wir ebenfalls
im nachfolgenden Abschnitt erläutern und dann den Algorithmus einführen
und seine Korrektheit beweisen. Wenn wir Earliest Arrival Flows für Netzwerke mit einer Quelle und Senke berechnen können, können wir auch auf
Netzwerken mit mehreren Quellen einen Earliest Arrival Flow berechnen,
indem wir eine Superquelle einführen und sie mit allen anderen Quellen verbinden. Dieser Vorgang funktioniert nicht mehr, wenn wir Earliest Arrival
Transshipments, deren Existenz wir ebenfalls beweisen werden, ermitteln
möchten. Dieses Problem wird als Earliest Arrival Transshipment Problem
bezeichnet und von uns in Abschnitt 2.5 untersucht. Falls der kleinste Zeitpunkt bekannt ist (z. B. durch Lösung des Quickest Transshipment Problem),
in dem alle Bedarfe erfüllt werden können, stellen wir einen exakten Algorithmus vor, welcher das Problem löst. Dieser Algorithmus basiert auf der
Verwendung zeitexpandierter Graphen und wird die Grundlage für den Vergleich der Lösungen sein, welche die Heuristiken im nächsten Kapitel liefern.
2.4
Earliest Arrival Flow Probleme mit einer Quelle und
einer Senke
In diesem Abschnitt untersuchen wir Netzwerke mit nur einer Quelle und
einer Senke und zeigen, dass zu einem Zeithorizont T stets ein Earliest Arrival Flow existiert. Desweiteren zeigen wir, wie man einen solchen Fluss
berechnen kann.
2.4.1
Existenz
Zunächst ist nicht klar ob ein Earliest Arrival Flow existiert. Gale [8] zeigte
schon 1957, dass Earliest Arrival Flows existieren. Grundlegend für seinen
Beweis ist das Theorem 1.23 über die Zulässigkeit von Balancefunktionen b
auf der Suche nach b-Flüssen. Er konstruierte auf dem zeitexpandierten Graphen eine zulässige Balancefunktion, welche nur durch einen lexikographisch
maximalen (statischen) Fluss bzgl. der Zeitkopien der Senke respektiert werden konnte. Weiterhin kannte er aber keinen Algorithmus, um einen solchen
Fluss zu berechnen, vermutete aber, dass man den Algorithmus zur Berechnung maximaler dynamischer Flüsse leicht modifizieren muss. Erst Minieka
2.4 Earliest Arrival Flow Probleme mit einer Quelle und einer Senke
45
[19] und Wilkinson [24] zeigten solche Modifikationen. Minieka gab weiterhin einen neuen Existenzbeweis für Earliest Arrival Flows an, welcher ohne
Theorem 1.23 auskommt. Grundlegend für diesen Beweis ist die Existenz
lexikographisch maximaler (statischer) Flüsse. Wir werden uns dabei aber
auf ganzzahlige Flüsse beschränken, da wir im Beweis einfachheitshalber mit
dem statischen Max Flow Algorithmus von Ford und Fulkerson argumentieren werden, welcher nicht notwendigerweise bei reellen Eingaben terminiert.
Desweiteren betrachten wir später auch nur ganzzahlige statische Flüsse, so
dass dieses Vorgehen für unsere Zwecke keine Einschränkung darstellt.
Zu erwähnen sei noch, dass es entsprechend im Bereich der kontinuierlichen Flüsse Earliest Arrival Flows gibt. Diese Existenz zeigte Philpott [20].
Lexikographisch maximale Flüsse. Wir werden nun einige Bezeichnungen einführen und lexikographisch maximale (statische) Flüsse definieren und dann später ihre Existenz beweisen. Wir werden dabei nach Minieka
[19] vorgehen.
Definition 2.14. Gegeben seien ein Graph G = (V, A) und eine Kapazitätsfunktion u : A → N0 . Desweiteren seien eine Menge von Quellen
∅ 6= S + ⊂ V und eine Menge von Senken ∅ 6= S − ⊂ V mit S + ∩ S − = ∅
gegeben.
(1) Sei S 0 ∈ S + . Dann bezeichnet W (S 0 )die größte Anzahl an Flusseinheiten, die S 0 in einem Fluss verlassen können. Falls S 0 = {s} gilt,
schreiben wir W (s) statt W ({s}).
(2) Sei S 0 ∈ S − . Dann bezeichnet W (S 0 )die größte Anzahl an Flusseinheiten, die S 0 in einem Fluss erreichen können. Falls S 0 = {t} gilt,
schreiben wir W (t) statt W ({t}).
(3) Seien S1 ⊂ S2 ⊂ . . . Sk ⊂ S − gegeben. Ein maximaler Fluss f , bei
welchem W (Si ) Flusseinheiten in alle Mengen Si fließen, heißt lexikographisch maximaler Fluss.
Zunächst ist nicht klar, dass lexikographisch maximale Flüsse existieren.
Die Existenz dieser Flüsse werden wir im weiteren Verlauf dieses Abschnitts
zeigen.
Bevor wir nun die Existenz eines lexikographischen maximalen Flusses
nachweisen, zeigen wir noch eine kleine Behauptung, welche im Existenzbeweis benötigt wird.
Theorem 2.15 (Minieka [19]). Seien N = (G, u, S + , S − ) ein Netzwerk und
S 0 ⊂ S − . Dann existiert ein maximaler Fluss f mit −exf (S 0 ) = W (S 0 ).
Beweis. Wir betrachten das Netzwerk N 0 = (G, u, S + , S 0 ) und ermitteln
dort einen maximalen S + -S 0 -Fluss. Diesen berechnen wir durch eine herkömmliche s-t-Fluss Berechnung. Wir führen eine Superquelle s und eine
46
Evakuierungsprobleme
Supersenke t ein. Wir fügen Kanten (s, s+ ) mit hinreichend großer Kapazität (z. B. u((s, s+ )) := U := u(A)) für alle s+ ∈ S + und Kanten (s0 , t)
mit ebenfalls hinreichend großer Kapazität für alle s0 ∈ S 0 in das Netzwerk ein und erhalten so einen erweiterten Graphen G0 und das Netzwerk
N 00 = (G0 , u, s, t).
Durch die Flusserhaltungsbedingungen sehen wir sofort, dass die maximal möglichen Flusswerte in N 0 und N 00 übereinstimmen. Der maximal
mögliche Flusswert entspricht nach Konstruktion dem Ausdruck W (S 0 ). Wir
berechnen nun einen maximalen s-t-Fluss f auf N 00 und schränken ihn auf N 0
ein. Dieser ist nach unserer Vorüberlegung ebenfalls auf N 0 maximal. Dann
berechnen wir einen maximalen Fluss auf N mit dem Algorithmus von Ford
und Fulkerson, wobei wir wieder die gleiche Konstruktion anwenden, um
den Fluss durch eine s-t-Flussberechnung zu erhalten. Dabei konstruieren
wir analog zu N 00 ein Netzwerk N ∗ , wobei aber nun für alle s− ∈ S − eine
Kante (s− , t) mit hinreichend großer Kapazität in G eingefügt wird. Mit
gleicher Vorüberlegung gilt auch hier, dass die maximalen Flusswerte in N
und N ∗ gleich sein müssen.
Nun starten wir den Algorithmus von Ford und Fulkerson zur Berechnung eines maximalen s-t-Flusses auf N ∗ . Allerdings starten wir den Algorithmus nicht mit dem Nullfluss sondern mit f . Auf den Kanten (s− , t)
für alle s− ∈ S − \ S 0 gelte zu Anfang f ((s− , t)) = 0. Jeder augmentierende s-t-Pfad, wird Knoten aus S 0 vermeiden, da sonst f nicht maximal in
N 0 bzw. N 00 gewesen wäre. Falls es nämlich einen s-t-Pfad P in Gf gibt
mit s0 ∈ S 0 und s0 ∈ VP , gibt es auch einen augmentierenden s-t-Pfad P 0
in Gf mit (s0 , t) ∈ AP 0 . Der Pfad P 0 ist aber auch bzgl N 00 in Gf ein f augmentierender Pfad. Dies ist aber ein Widerspruch und daher enthält kein
f -augmentierender Pfad in Gf bzgl. N ∗ Knoten aus S 0 . Deswegen verändert
sich bis zum Terminieren des Algorithmus die Anzahl der Flusseinheiten, die
S 0 erreichen, nicht. Der zuletzt berechnete Fluss hat dann die gewünschte
Eigenschaft.
Nun folgt die eigentliche Existenzaussage über lexikographisch maximale
Flüsse, dessen Beweis auf Minieka zurückzuführen ist.
Theorem 2.16 (Minieka [19]). Seien N = (G, u, S + , S − ) ein Netzwerk und
Mengen S1− ⊂ S2− ⊂ . . . ⊂ Sl− ⊂ S − gegeben. Dann existiert ein maximaler
Fluss f mit exf (Si− ) = W (Si− ) für alle 0 ≤ i ≤ k.
Beweis. Der Beweis erfolgt durch vollständige Induktion über k. Zum Induktionsanfang betrachten wir die Menge S1− . Nach Theorem 2.15 gilt die
Behauptung für k = 1.
Die Induktionsannahme besteht darin, dass es einen maximalen Fluss f
mit exf (Si ) = W (Si− ) für 0 ≤ i ≤ k − 1 < l gibt. Wir konstruieren nun
2.4 Earliest Arrival Flow Probleme mit einer Quelle und einer Senke
47
einen maximalen Fluss F , der die Beziehung exF (Si− ) = W (Si− ) auch für
i = k erfüllt.
Zu diesem Zweck bauen wir uns ein modifiziertes Netzwerk, indem wir
den Graphen G zu einem Graphen G0 erweitern. Dazu benutzen wir eine
ähnliche Modifikation wie in Theorem 2.15. Wir fügen wieder einen Knoten
s als Superquelle und einen Knoten t als Supersenke ein. Weiter fügen wir
für alle s0 ∈ S + die Kante (s, s0 ) ein. Für alle t0 ∈ S − \ Sk− fügen wir die
Kante (t0 , s) und für alle t0 ∈ Sk− die Kante (t0 , t) ein. Alle diese zusätzlichen
Kanten haben Kapazität u(A).
Sk−
...
S+
t
...
...
S − \ Sk−
...
s
Abbildung 2.3: Die Modifikation des Graphen G mittels der Superquelle s und der
Supersenke t.
Wir erweitern nun den Fluss f auf diesem neuen Netzwerk zu einem
Fluss f 0 . Es sei f 0 ((t0 , t)) := exf (t0 ) für t0 ∈ Sk− , f 0 ((s, s0 )) := −exf (s0 ) für
s ∈ S + und f 0 ((t0 , s)) := exf (t0 ) für t0 ∈ S − \ Sk− . Durch diese Konstruktion
ist f 0 ein zulässiger s-t-Fluss, da die ehemaligen Quellen und Senken nun
die Flusserhaltungsbedingung einhalten. Weiterhin gilt exf 0 (t) = exf (Sk− ),
da wir nur den Fluss von Sk− nach t weitergeleitet haben.
Starten wir nun den Ford und Fulkerson Algorithmus mit f 0 als Startfluss, um einen maximalen s-t-Fluss f 00 zu bestimmen, kann kein augmentierender Pfad in G0f 0 von s nach t über Knoten aus S + gesendet werden,
da sonst f nicht maximal gewesen wäre. Weiterhin kann auch kein Fluss
−
über Knoten aus Sk−1
geschickt werden, da sonst die Induktionsannahme
verletzt wäre. Also werden nur Pfade als augmentierende Pfade vorkommen,
48
Evakuierungsprobleme
−
die über Knoten aus Sk− \ Sk−1
geführt werden. Somit ändert sich nicht die
−
Anzahl der Flusseinheiten, welche die Knotenmenge Sk−1
erreichen.
Wenn der Algorithmus terminiert, dann hat er einen maximalen s-tFluss f 00 konstruiert. Diesen nennen wir F , wenn wir ihn auf das Original Netzwerk N einschränken. Nach obigen Betrachtungen gilt weiter
−
−
exF (Sk−1
) = W (Sk−1
) und exF (Sk− ) = W (Sk− ), da es nun keinen augmentierenden Pfad von S + nach Sk− gibt. Ferner ist F maximal in N , da
exF (S + ) = exf (S + ) gilt, da kein augmentierender Pfad Knoten aus S + enthalten hatte. Also ist F ein lexikographisch maximaler Fluss für die Schachtelung S1− ⊂ S2− ⊂ . . . ⊂ Sk− ⊂ S − .
Damit ist nun die Existenz lexikographischer maximaler Flüsse gezeigt.
Mittels lexikographisch maximaler Flüsse zeigen wir im Folgenden die Existenz der Earliest Arrival Flows.
Theorem 2.17. Seien N = (G, u, τ, s, t) ein dynamisches Netzwerk und
T ∈ N. Dann existiert ein dynamischer s-t-Fluss mit Zeithorizont T , der
die Earliest Arrival Eigenschaft besitzt.
Beweis. Wir betrachten das zugehörige zeitexpandierte Netzwerk N T . In
GT existiert nach Theorem 2.16 ein lexikographisch maximaler S +(T ) -S −(T ) Fluss f für {t0 } = S −(1) ⊂ S −(2) ⊂ . . . ⊂ S −(T −1) ⊂ S −(T ) . Wir konstruieren
einen s0 -tT −1 -Fluss fT , indem wir f auf den Holdoverkanten der Quell- und
Senkeknoten modifizieren. Wir wollen erreichen, dass die Anzahl an Flusseinheiten, welche beim Fluss fT den Knoten s0 verlassen, gleich ist mit der
Anzahl an Flusseinheiten, welche beim Fluss f die Knoten aus S +(T ) verlassen. Analog wird die Anzahl der Flusseinheiten, welche beim Fluss fT
die Senke tT −1 erreichen soll, der Anzahl an Flusseinheiten entsprechen,
welche beim Fluss f die Menge S −(T ) erreicht. Um dieses Ziel und die Flusserhaltung in den Zwischenknoten zu erreichen, müssen wir geeignet Fluss
zwischen den Zeitscheiben auf den o. g. Holdoverkanten transferieren. Wir
definieren denneuen Fluss fT wie folgt:
−(i) )

a = (ti−1 , ti ) und 1 ≤ i < T
exf (S
+(T
)
+(i)
fT (a) := −exf (S
) + exf (S
) a = (si−1 , si ) und 1 ≤ i < T Es


f (a)
sonst.
gilt für s0 :
exfT (s0 ) = exf (s0 ) + exf (S +(T ) ) − exf (S +(1) )
= exf (S +(T ) ).
Für alle restlichen Quellknotenkopien gilt Flusserhaltung:
exfT (si ) = exf (si ) + exf (S +(T ) ) − exf (S +(i+1) ) − exf (S +(T ) ) + exf (S +(i) )
= exf (si ) − exf (si )
= 0.
2.4 Earliest Arrival Flow Probleme mit einer Quelle und einer Senke
49
Analog gilt für die Knoten aus S −(T −1) Flusserhaltung und für tT −1 gilt:
exfT (tT −1 ) = exf (tT −1 ) + exf (S −(T −1) ) = exf (S −(T ) ) = val(f ).
...
...
h2
x2
x1
t2
x2
h1
t1
x0
h2 + x0 + x1 + x2
h0
t0
x1
x0
t2
h 1 + x0 + x1
t1
h 0 + x0
t0
Abbildung 2.4: Eine beispielhafte Veranschaulichung der Holdoverkantenkonstruktion
(hier: an den Knotenkopien der Senke). Die Ausdrücke auf den fettgedruckten Pfeilen
bezeichnen jeweils die Anzahl der Flusseinheiten, welche vom restlichen Netzwerk in die
Senken t0 , t1 und t2 fließen. Die normalgedruckten Pfeile stellen Holdoverkanten dar. Die
Ausdrücke an diesen Kanten bezeichnen jeweils die Anzahl der fließenden Flusseinheiten
in den entsprechenden Kanten. In der linken Hälfte beziehen sich diese Ausdrücke auf den
Fluss f und in der rechten Hälfte auf den Fluss fT .
Durch diese Holdoverkantenkonstruktion erhalten wir einen s0 -tT −1 Fluss fT mit val(fT ) = val(f ) = W (S +(T ) ). Wenn wir diese Konstruktion für 1 ≤ i ≤ T ebenfalls durchführen erhalten wir Flüsse fi mit
val(fi ) = W (S −(i) ). Nun entspricht fT nach Theorem 1.44 einem maximal dynamischen s-t-Fluss F auf N mit Zeithorizont T . Sei nun 1 ≤ i ≤ T .
Wenn wir nun ermitteln, wieviele Flusseinheiten bis zum Zeitpunkt i in t
angekommen sind, müssen wir den Zeithorizont auf i beschränken und müssen uns den Fluss fi auf N i ansehen. Da bis zum Zeitpunkt i die Pfade
von fi und fT gleich sind, entspricht fi dem Fluss F , wenn man ihn mit
Zeithorizont i betrachtet. Daher sind bis zum Zeitpunkt i genau W (S −(i) )
Flusseinheiten in t angekommen. Würde es einen dynamischen Fluss geben,
der bis zu diesem Zeitpunkt mehr Flusseinheiten nach t befördern könnte,
dann müsste der entsprechend statische Fluss auf N i einen größeren Flusswert aufweisen, was aber im Widerspruch zur lexikographischen Maximalität
zu f stehen würde. Somit ist F zu jedem Zeitpunkt maximal und besitzt
daher die Earliest Arrival Eigenschaft.
2.4.2
Verallgemeinerte Pfadzerlegungen
Im Abschnitt über maximale dynamische s-t-Flüsse wurden diese mit Hilfe von Pfadzerlegungen von statischen Minimalkostenflüssen berechnet. Die
bisher bekannten gewöhnlichen Pfadzerlegungen benutzen Pfade, deren Kanten vorwärts gerichtet sind. Earliest Arrival Flows lassen sich leider nicht
i. A. mit Hilfe von gewöhnlichen Pfadzerlegungen berechnen. Allerdings,
50
Evakuierungsprobleme
wenn man den Pfadbegriff erweitert und Rückwärtskanten in den Pfaden
zulässt, kann man dynamische Flüsse durch eine Zerlegung eines statischen
Flusses in solche Pfade gewinnen. Eine solche Pfadzerlegung nennen wir verallgemeinert. Dann gelingt es uns, durch zeitliche Wiederholung wie in Definition 1.33 (vgl. auch Bemerkung 1.36), den gesuchten dynamischen Fluss
zu konstruieren. Flüsse die durch eine verallgemeinerte Pfadzerlegung gewonnen werden, nennen wir verallgemeinerte zeitlich wiederholte Flüsse.
Definition 2.18. Seien (G, u, s, t) ein Netzwerk, f ein s-t-Fluss und c :
A → R eine Kostenfunktion.
↔
(1) Ein verallgemeinerter Pfad in G ist ein s-t-Pfad auf G.
←
(2) Auf einem verallgemeinerten Pfad erweitern wir f für alle e mit e ∈ A
←
durch f ( e ) := −f (e). Die Kostenfunktion c wird wie im Abschnitt über
←
Minimalkostenflüsse auf c( e ) := −c(e) gesetzt.
↔
(3) Sei P die Menge aller s-t-Pfade auf G. Eine verallgemeinerte
PfadP
zerlegung
von f ist eine Abbildung z : P → R mit P ∈P:a∈AP z(P ) −
P
←
z(P ) = f (a) für alle a ∈ A und val(f ) := val(f|G ) =
PP ∈P: a ∈AP
P ∈P z(P ). Beachte: der Flusswert wird nur durch Kanten aus A ermittelt.
Wir werden später das dynamische Netzwerk als statisches Netzwerk interpretieren, bei dem die Fahrzeiten τ den Kosten entsprechen. Desweiteren
werden wir durch eine verallgemeinerte Pfadzerlegung einen dynamischen
s-t-Fluss induzieren, indem wir z(P ) Flusseinheiten entlang jeden Pfades P
im Zeitraum [0, T − τ (P ) − 1] schicken. Weiter beachten wir, dass ein einzelner verallgemeinerter Pfad i. A. kein zulässiger Fluss ist, da u. U. negative
Flusswerte auftreten können. Damit aber verallgemeinerte Pfade als Pfadzerlegung eines gültigen Fluss genannt werden können, muss Fluss auf einer
Rückwärtskante (w, v) auf einem Pfad P stets ausgelöscht werden, d. h. es
muss einen anderen Pfad P 0 in der Zerlegung geben, der die entsprechende
Vorwärtskante enthält und mindestens die gleiche Menge an Fluss wie die
0
Rückwärtskante transportiert. Wichtig dabei ist, dass τ (P[s,v]
) ≤ τ (P[s,v] )
gilt. Somit wird sichergestellt, dass es in der zeitlichen Wiederholung keinen Zeitpunkt gibt, zu welchem Flusseinheiten die Rückwärtskante (w, v)
erreichen und zu welchem bisher keine Flusseinheit die Kante (v, w) erreicht
hat.
2.4.3
Exakte Algorithmen
Wir stellen nun einen Algorithmus vor, welcher einen Earliest Arrival Flow
auf einem dynamischen Netzwerk berechnet. Dieser ist eine Variante des
2.4 Earliest Arrival Flow Probleme mit einer Quelle und einer Senke
51
Successive Shortest Path Algorithmus und berechnet einen statischen Minimalkostenfluss und seine verallgemeinerte Pfadzerlegung, indem jeder augmentierende Pfad zu der Pfadzerlegung hinzugefügt wird. Durch zeitliche
Wiederholung wird aufgrund dieser Pfadzerlegung ein verallgemeinerter zeitlich wiederholter Fluss induziert, welcher unser gesuchter Fluss sein wird.
Wir müssen dann noch zeigen, dass dieser Fluss zulässig ist und die Earliest
Arrival Eigenschaft hat. Diesen Beweis werden wir, wie Hoppe [12] es getan
hat, durchführen. Danach skizzieren wir noch den Snapshot-Algorithmus,
welchen Hoppe in seiner Dissertation [12] untersuchte.
Der Sucessive Shortest Path Algorithmus als Lösung des Earliest
Arrival Problems
Wir stellen nun die spezielle Variante des Successive Shortest PathAlgortihmus vor, welche das Earliest Arrival Flow Problem exakt löst.
input : Ein Netzwerk (G, u, τ, s, t), ein Zeithorizont T
output : Eine verallgemeinerte Pfadzerlegung z und eine Liste
von Pfaden L = [P1 , . . . , Pk ] mit P ∈ L ⇔ z(P ) > 0
x := 0;
z := 0;
3 i := 0;
4 L := [∅];
5 while distGx (s, t) ≤ T do
6
i := i + 1;
7
Pi := shortestpathGx (s, t);
8
γ := min{ux (a) : a ∈ AGx };
9
Augmentiere x um γ entlang Pi ;
10
z(Pi ) := γ;
11
L := L + [Pi ]
12 end
13 return (z, L);
Algorithmus 2.1 : Die spezielle Variante des Successive Shortest
Path Algorithmus zur Lösung des Earliest Arrival Flow Problem
1
2
Theorem 2.19 (Hoppe [12]). Seien (G, u, τ, s, t) ein dynamisches Netzwerk
und T ∈ N. Dann berechnet die spezielle Variante des Sucessive Shortest
Path Algorithmus eine verallgemeinerte Pfadzerlegung z, welche durch zeitliche Wiederholung einen dynamischen s-t-Fluss F mit Zeithorizont T und
der Earliest Arrival Eigenschaft induziert.
Beweis. Wir zeigen zunächst die Zulässigkeit von F . Wir nehmen an, dass
der Algorithmus nacheinander entlang der Pfade P1 , . . . , Pl aus L augmen-
52
Evakuierungsprobleme
tiert. Daher ist automatisch die Flusserhaltungsbedingung erfüllt. Nach
Theorem 1.27 gilt τ (Pi ) ≤ τ (Pi+1 ). Daher kann man 0 ≤ k ≤ l so wählen, dass τ (Pk ) ≤ T und (falls k < l gilt) τ (Pk+1 ) > T gilt. Sei z(Pi ) der
Wert, um welchen jeweils augmentiert wurde. Daher ist z die verallgemeinerte Pfadzerlegung des berechneten statischen Minimalkostenflusses, den
wir mit x bezeichnen. Wir bezeichnen mit xi den statischen Fluss, der durch
Augmentieren entlang der Pfade P1 bis Pi entsteht. Der verallgemeinerte
zeitlich wiederholte Fluss entsteht dadurch, dass nacheinander, beginnend
mit P1 , z(Pi ) Flusseinheiten im Zeitraum T − τ (Pi ) − 1 für alle 0 ≤ i ≤ k
in die Quelle entlang Pi geschickt werden. D. h. es gilt F = [P1 , . . . , Pk ]Tz .
Analog sei f i := [P1 , . . . , Pi ]Tz .
Wir zeigen nun die Zulässigkeit (es ist nur noch die Kapazitätsbedingung
zu zeigen) durch Induktion. Der Fluss f 0 = [∅]Tz entspricht dem dynamischen
Nullfluss und ist damit zulässig. Sei nun als Induktionsannahme f i−1 zulässig. Nach Konstruktion gilt [P1 , . . . , Pi−1 ]Tz + [Pi ]Tz = f i .
Wir betrachten nun die Kante a = (v, w) und einen Zeitpunkt θ und
zeigen, das die Kapazitätsbedingung nicht verletzt ist. Gilt [Pi ]Tz (a, θ) = 0,
so folgt mit der Induktionsannahme sofort die Zulässigkeit des Flusses auf
dieser Kante zum Zeitpunkt θ.
Nun sei [Pi ]Tz (a, θ) 6= 0. Es gilt daher distGf i−1 (s, y) ≤ θ und θ ≤ T −
1 − distGf i−1 (y, t). (Der Ausdruck distGf i−1 (v, w) bezeichne dabei die Entfernung von v nach w in Gf i−1 , d. h. die Kosten eines billigsten Weges bzgl.
τ als Kostenfunktion). Nach Theorem 1.27 steht fest, dass distGf i−1 (y, t)
sowie distGf i−1 (y, t) monoton steigend sind. Daher gilt, falls ein Pfad Pj
für (j < i) die Kante (v, w) oder deren Rückwärtskante enthält, dass der
Pfad Pj z(Pj ) bzw. −z(Pj ) Flusseinheiten zum dynamischen Fluss f i in
der Kante (v, w) zum Zeitpunkt θ beiträgt. Also gilt für den Flusswert
f i−1 ((v, w), θ) = [P1 , . . . , Pi−1 ]Tz = xi−1 (v, w). Daher ist die Kapazitätsbedingung von (v, w) zum Zeitpunkt θ von f i nicht verletzt, da der Fluss
x0 : A↔ → R mit x0 (a) = z(Pi ) in Gxi−1 ein zulässiger Fluss ist. Daher ist
G
insgesamt F zulässig.
Um zu zeigen, dass F zu jedem Zeitpunkt maximal ist, betrachten wir
einen beliebigen Zeitpunkt
0 ≤ θ ≤ T und
P
P die Menge Γ := {Pi : τ (Pi ) ≤ θ}.
Ferner sei xΓ (a) := P ∈Γ:a∈P z(P ) − P ∈Γ:←
z(P ) der statische Fluss,
a ∈P
der entstanden ist, nachdem nacheinander entlang der Pfade aus Γ augmentiert wurde. Dieser ist nach Theorem 1.27 ein Minimalkostenfluss. Wenn wir
nun eine Kante (t, s) in den Graphen mit τ ((t, s)) = −θ einfügen, entspricht
xΓ einer Minimalkostenzirkulation auf dem erweiterten Graphen, da negative Kreise bzgl. τ nicht möglich sind. Nach Theorem 1.39 entspricht der
Fluss durch analoge zeitliche Wiederholung gemäß Definition einem maximalen dynamischen Fluss mit Zeithorizont θ. Da Pfade Pi mit τ (Pi ) > θ sich
erst nach dem Zeitpunkt θ auf F durch zeitliche Wiederholung auswirken,
ist F zum Zeitpunkt θ maximal.
2.4 Earliest Arrival Flow Probleme mit einer Quelle und einer Senke
53
Bemerkungen 2.20. Der soeben vorgestellte Algorithmus hat wie der gewöhnliche Successive Shortest Path Algorithmus pseudopolynomielle Laufzeit. Zadeh [25] stellte Instanzen vor, in welchem der Algorithmus exponentiell viele Augmentierungen durchführt.
Bemerkungen 2.21. Wenn die gegebene Instanz des Earliest Arrival Flow
Problems ganzzahlig ist, berechnet der Algorithmus auch eine ganzzahlige
Lösung.
Der Snap-Shot-Algorithmus
Der exakte Algorithmus aus Abschnitt 2.4.3 ist i. A. wegen Bemerkung
2.20 kein Polynomialzeitalgorithmus. Hoppe stellte in seiner Dissertation
[12] einen Algorithmus vor, welcher polynomielle Laufzeit hat. Allerdings
beschränkt er sich darauf nur zu einem gegebenen Zeitpunkt θ und einer
gegebenen Kante a den Flusswert f (a, θ) eines gewissen Earliest Arrival
Flusses f zu berechnen. O. B. d. A. schränkt Hoppe die zu untersuchenden
Netzwerke dahingehend ein, dass es im Netzwerk keine Kreise mit Kosten
bzw. Gesamtfahrzeit Null geben darf. Wenn ein Netzwerk diese Anforderung
nicht erfüllen kann, beschreibt Hoppe, wie er mit einer modifizierten Kostenbzw. Fahrzeitfunktion die gewünschte Eigenschaft herstellen kann. Wichtig
zu beachten ist, dass die Graphen, die Hoppe betrachtet, die Residualkanten
immer enthalten. Weiterhin, dürfen dürfen seine betrachteten Graphen keine parallelen Kanten enthalten. Daher bezieht sich die Forderung mit den
←
→
Kreisen auf G , wobei G schlicht sein muss.
Daher betrachten wir im Rahmen des Snap-Shot-Algorithmus nur dynamische Netzwerke, welche die o. g. (von Hoppe geforderte) Eigenschaft hat.
Mit dieser Eigenschaft ist ein Earliest Arrival Flow eindeutig bestimmt.
Theorem 2.22 (Hoppe [12]). Seien N = (G, u, τ, s, t) ein dynamisches
Netzwerk und b eine Balancefunktion. Dann gilt:
(1) f ist genau dann eindeutiger Minimalkostenfluss bzgl. τ als Kostenfunktion und b, wenn Gf keine Kreise C mit τ (C) = 0 enthält.
←
→
(2) G enthalte keine Kreise C mit τ (C) = 0. Weiter sei T ein Zeithorizont. Dann die Lösung des Earliest Arrival Flow Problems zu einem
Zeithorizont T eindeutig bestimmt.
Der nun folgende Algorithmus berechnet auf einem gegebenen Netzwerk
mit der o. g. Eigenschaft und einem gegebenen Zeithorizont T ∈ N0 zu einer gegebenen Kante a = (v, w) ∈ A und einem gegebenen Zeitpunkt θ
den Flusswert f (a, θ) des eindeutig bestimmten Earliest Arrival Flow f mit
Zeithorizont T .
54
Evakuierungsprobleme
input
: Ein Netzwerk (G, u, τ, s, t), ein Zeithorizont T ,
(v, w) ∈ A und 0 ≤ θ < T
output : f (a, θ), wobei f ein Earliest Arrival Flow ist
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
x := 0;
if distx (s, v) > θ oder distx (v, t) > T − 1 − θ then
return 0;
else
L := 0;
x :=maximaler Minimalkostenfluss;
if distx (s, v) ≤ θ und distx (v, t) ≤ T − 1 − θ then
return x((v, w));
else
H := val(x);
while (H − L) > 1 do
x :=Minimalkostenfluss mit Wert d(H + L)/2e;
if distx (s, v) > θ oder distx (v, t) > T − 1 − θ then
H := val(x);
else
L := val(x);
end
end
x :=Minimalkostenfluss mit Wert H;
return x((v, w));
end
end
Algorithmus 2.2 : Der Snap-Shot-Algorithmus
Das Prinzip, welches dem Snap-Shot-Algorithmus zugrunde liegt, besteht darin, dass nicht mehr jeder einzelne verallgemeinerte Pfad aus der
verallgemeinerten Pfadzerlegung von f bekannt sein muss, sondern, dass es
reicht, nur noch die Summe an Flusseinheiten, welche die Pfade einer verallgemeinerten Pfadzerlegung führen, welche Fluss zu dem Zeitpunkt θ in die
Kante a führen, zu ermitteln. Weiterhin ist diese Summe von der gewählten
Pfadzerlegung unabhängig.
Sei z eine verallgemeinerte Pfadzerlegung von f . Der Flusswert z(P ) > 0
−
eines verallgemeinerten s-t-Pfades P = (VP , AP ) mit a ∈ AP oder ←
a ∈ AP
wird genau dann in der Summe für die Berechnung von f (a, θ) berücksichtigt, wenn τ (AP[s,v] ) ≤ θ und τ (AP[v,t] ) ≤ T − 1 −
Pθ gilt. Sei Pθ die
Menge
aller
Pfade
mit
dieser
Eigenschaft.
Dann
gilt
P ∈Pθ :a∈AP z(P ) −
P
←
−
z(P
)
=
f
(a,
θ).
Da
nach
Theorem
1.27
distG (s, v) und
P ∈Pθ : a ∈AP
distG (v, t) nach jedem Augmentiervorgang monoton steigt, kann man z,
wenn wir z auf Pθ einschränken, als Pfadzerlegung eines eindeutigen Mini-
2.4 Earliest Arrival Flow Probleme mit einer Quelle und einer Senke
55
malkostenflusses auffassen. Dieser ist aber unabhängig von dieser Zerlegung.
Wenn es einen statischen Minimalkostenfluss x bzgl. τ als Kostenfunktion gibt, so dass distGx (s, v) ≤ θ ≤ T −1−distGx (v, t) gilt, gilt x(a) < f (a, θ),
da es einen augmentierenden Pfad aus Pθ gibt. Wir können nämlich solange
entlang kürzesten Pfaden mit z(P ) > 0 bezüglich f den Nullfluss augmentieren, bis wir einen Minimalkostenfluss x0 mit val(x0 ) = val(x) erhalten.
Wegen der Eindeutigkeit gilt x = x0 .
Ist eine der beiden Ungleichungen verletzt, so gilt x(a) ≥ f (a, θ). Diese
Einsicht macht sich der Algorithmus zunutze. Er sucht einen Minimalkostenfluss x mit distGx (s, v) > θ oder θ > T − 1 − distGx (v, t), so dass für
den eindeutig bestimmten Minimalkostenfluss x0 mit val(x0 ) = val(x) − 1
die Bedingung distGx0 (s, v) ≤ θ ≤ T − 1 − distGx0 (v, t) gilt. Dabei benutzt
er die binäre Suche bzgl. aller möglichen Flusswerte und prüft, ob eine der
beiden Ungleichungen verletzt ist. Wenn ja, muss er einen Minimalkostenfluss mit einem niedrigeren Flusswert testen und merkt sich den aktuellen
Wert als obere Schranke, wenn nein, wird er einen Minimalkostenfluss mit
einem höheren Flusswert testen und merkt sich den aktuellen Flusswert als
untere Schranke. Dabei merkt sich der Algorithmus jeweils den Suchraum in
Form eines Intervalls [L, H]. L ist dabei die bisher gefundene größte untere
Schranke und H ist dabei die bisher berechnete kleinste obere Schranke.
Der Algorithmus terminiert, wenn H = L + 1 gilt. Für den Fluss x̃ mit
val(x̃) = H gilt dann x̃(a) = f (a, θ). Die gesamt Laufzeit ist polynomial, da
log(nU ) oft eine Minimalkostenflussberechnung durchgeführt werden muss
(U ist dabei die grösste vorkommende Kapazität bzgl u).
Wir haben damit folgendes Theorem gezeigt:
Theorem 2.23. Sei f ein Earliest Arrival Flow auf (G, u, τ, s, t) und es
gebe keine Kreise C in G mit τ (C) = 0. Seien weiterhin T ∈ N0 ein
Zeithorizont. Sei a ∈ A und 0 ≤ θ < T . Dann berechnet der Snap-ShotAlgorithmus f (a, θ) in polynomieller Zeit O(log(n·U )·RU N T IM E(M CF )).
RU N T IM E(M CF ) bezeichne dabei die Laufzeit des Polynomialzeit - Algorithmus für das Minimalkostenflussproblem.
Bemerkungen 2.24. Fleischer und Tardos [5] haben ein entsprechendes
Resultat auf kontinuierliche Flüsse übertragen.
2.4.4
Approximationsalgorithmen
In diesem Unterabschnitt beschreiben wir den PTAS -Algorithmus von Hoppe [12], welcher zu jedem ε > 0 und einer Instanz des Earliest Arrival Problems, bestehend aus einem dynamischen Netzwerk und einem Zeithorizont
T ∈ N0 , einen dynamischen Fluss f mit Zeithorizont T berechnet, dessen
Arrival Pattern zu jedem Zeitpunkt höchstens um einen Faktor (1 + ε) vom
Arrival Pattern eines Earliest Arrival Flow mit Zeithorizont T abweicht.
56
Evakuierungsprobleme
input : Ein Netzwerk N = (G, u, τ, s, t) und ein Zeithorizont T
output : Eine verallgemeinerte Pfadzerlegung eines Earliest
Arrival Flow f mit Zeithorizont T
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
x := 0;
ũ := u;
∆ := 1;
Γ := [∅];
σ := 0;
while (σ < m∆/ε) und (∃s-t-Pfad P in (Gx , ũx , s, t) mit
τ (AP ) ≤ T − 1) do
P :=shortest Path in (Gx , ũ, s, t);
γ := min{ũx (a) : a ∈ AP };
Augmentiere x um γ entlang P ;
Γ := Γ + [P ];
σ := σ + γ;
end
∆ := 2 · ∆;
foreach a ∈ A do
ũ(a) := ũ(a) − (ũx (a) mod ∆);
end
return Γ;
Algorithmus 2.3 : Der (1 + ε)-Approximationsalgorithmus von
Hoppe für das Earliest Arrival Problem
Der Algorithmus benutzt die Capacity Scaling Methode. Klassisch angewandt, wie im beim Capacity Scaling Algorithmus 1.5 fängt die Capicaty
Scaling Methode mit einem großen Scaling Faktor ∆ an und versucht pro
Scaling Runde bei jedem Augmentiervorgang um mindestens ∆ Flusseinheiten zu augmentieren. Nach jeder Scaling Runde wird der Scaling Faktor
verkleinert (Beim Capacity Scaling im Algorithmus 1.5 wird er halbiert).
Die Idee die zugrunde liegt ist, dass bei statischen Flussberechnungen Kanten mit sehr großer Kapazität eine wichtigere Rolle spielen, als Kanten mit
niedrigerer Kapazität.
Der Algorithmus von Hoppe weicht vom klassischen Capacity Scaling
Vorgang ab. Die dem Algorithmus zugrundeliegende Idee besteht nun darin,
dass Kanten mit sehr kurzen Fahrzeiten und kleinen Kapazitäten in einem
dynamischen Fluss wichtiger als Kanten mit langen Fahrzeiten und großen
Kapazitäten sind, da die Kanten mit den kurzen Fahrzeiten u. U. mehr Flusseinheiten transportieren werden. Mit dieser Idee wird nun der Scaling Vorgang umgekehrt betrieben, d. h. wir beginnen mit kleinen Scaling Faktoren
und vergrößern sie nach jeder Runde durch verdoppeln. Der Algorithmus
wird bzgl. eines modifizierten Successive Shortest Path Algorithmus verall-
2.4 Earliest Arrival Flow Probleme mit einer Quelle und einer Senke
57
gemeinerte Pfade im Rahmen einer statischen Flussberechnung berechnen,
die durch zeitliche Wiederholung einen dynamischen Fluss induzieren. In
jeder Scaling Phase wird jeder augmentierende Pfad den statischen Fluss
um mindestens ∆ Flusseinheiten augmentieren, wobei ∆ der aktuelle Scaling Faktor der Scaling Runde ist, da der Algorithmus sicherstellt, dass die
Residualkapazitäten immer ein Vielfaches von dem aktuellen ∆ sind. Das
wiederum liegt daran, dass der Algorithmus nach Abschluss einer Scaling
Phase mit Scaling Faktor ∆ die Kantenkapazitäten so entsprechend abrundet, dass die residualen Kantenkapazitäten ein Vielfaches von 2 · ∆, dem
Scaling Faktor der nächsten Runde, sind. Weil jeder Augmentiervorgang
um mindestens ∆ Flusseinheiten den statischen Fluss augmentiert, ist die
Anzahl der Augmentiervorgänge durch O(m/ε) beschränkt, da eine Scaling
Phase abgebrochen wird, wenn in dieser um wenigstens m · ∆/ε Flusseinheiten augmentiert wurde. Da es höchstens log(U ) mit U = max{u(a) : a ∈ A}
Scalingphasen gibt, arbeitet somit der Algorithmus in polynomieller Zeit
bzgl. der Kodierungslänge der Eingabeinstanz.
Weiterhin stellt Hoppe fest, dass die durch das Runden gewonnene verallgemeinerten Pfade trotzdem noch einen zulässigen verallgemeinerten zeitlich
wiederholten Fluss induzieren. Das Aufwärts Capacity Scaling in Verbindung mit dem geschickten Runden sorgt schließlich dafür, dass die Abweichung des Arrival Patterns von ΓT zum Zeitpunkt 0 ≤ θ < T nur höchstens
um einen Faktor (1 + ε) von dem Earliest Arrival Pattern p(θ) beträgt. Für
weitere technische Details verweisen wir auf [12].
Zusammenfassend halten wir fest:
Theorem 2.25 (Hoppe [12]). Sei N = (G, u, τ, s, t) ein dynamisches Netzwerk und T ∈ N0 ein Zeithorizont und p das Earliest Arrival Pattern. Dann
berechnet der Approximationsalgorithmus von Hoppe einen dynamischen st-Fluss f mit Zeithorizont T und p(θ) ≤ (1+ε)exf (t, θ). Die Laufzeit beträgt
O(m · ε−1 · (m + n log n) log U ) (U ist dabei die größte vorkommende Kantenkapazität).
Bemerkungen 2.26. Der soeben vorgestellte Algorithmus von Hoppe ist
nur ein P T AS-Algorithmus. Für jedes fixe ε ist dieser Algorithmus ein Polynomialzeitalgorithmus. Es gibt nach Fleischer und Skutella [6] einen 1 + εFPTAS, d. h. die Laufzeit ist zusätzlich polynomiell in 1/ε, der auf dem
Prinzip zeitkondensierter Netzwerke basiert. Allerdings sind dazu die in der
Bemerkung 2.12 erwähnten zeitkondensierten Netzwerke weniger geeignet,
da ihre Größe einen Faktor 1/ε enthält. Fleischer und Skutella betrachten
dabei eine nichtuniforme Variante der zeitkondensierten Graphen. Nichtuniform bedeutet, dass die Zeitpunkte, für welche eine Zeitschicht aus dem
zeitexpandierten Graphen übernommen wurde, nicht äquidistant im Gesamtzeitintervall verteilt sind. Sie konstruieren sogenannte geometrische zeitkondensierte Netzwerke, wobei die Zeitpunkte der aus dem zeitexpandierten Graphen übernommenen Zeitschichten, in gewisser Weise einem geometrischem
58
Evakuierungsprobleme
Wachstum unterliegen. Auf diesen Graphen induziert dann ein lexikographisch maximaler Fluss einen dynamischen Fluss, dessen Arrival Pattern
sich höchstens um (1 + ε) von dem eines Earliest Arrival Flows unterscheidet. Für Details verweisen wir auf [6].
2.5
Earliest Arrival Transshipments
In diesem Abschnitt betrachten wir dynamische Netzwerke mit einer gegebenen Balancefunktion auf den Knoten und einem gegebenen Zeithorizont und
fragen uns, ob es unter diesen Bedingungen einen dynamischen Fluss gibt,
welcher zu jedem Zeitpunkt maximal ist und die Bedarfe an den Knoten
erfüllt. Dieses Problem lösen wir näherungsweise später auch mit den vorgestellten Heuristiken und vergleichen sie mit dem Ergebnis des in diesem
Abschnitt später vorgestellten Algorithmus.
Motiviert wird dieses Problem durch die beschriebenen Evakuierungsprobleme in der Einleitung zu diesem Kapitel. Speziell vorhandene Bedarfsfunktionen können wir dadurch motivieren, dass vor dem Evakuierungsvorgang die zu evakuierende Anzahl von Personen bekannt ist. Ein Problem
kann darin bestehen, dass der gewählte Zeithorizont zu kurz sein kann und
es dann kein Evakuierungsfluss bzw. zulässiges dynamisches Transshipment
gibt. Den kleinsten Zeitpunkt, zu welchem ein zulässiges Transshipment existiert, lässt sich mit dem Quickest Transshipment Problem bestimmen. Vgl.
Abschnitt 2.2.
2.5.1
Existenz
In diesem Unterabschnitt zeigen wir die Existenz von dynamischen Transshipments mit der Earliest Arrival Eigenschaft. Die Existenz solcher Flüsse
basiert auch wie im Abschnitt 2.4 auf der Existenz lexikographisch maximaler Flüsse. Falls wir eine zulässige Instanz haben, d. h. zu dem gegebenen Netzwerk, Balancefunktion und Zeithorizont existiert ein dynamisches
Transshipment, konstruieren wir zuerst eine Variante des zeitexpandierten
Netzwerkes, in welcher statische Flüsse dynamischen Transshipments im Ursprungsnetzwerk entsprechen und zeigen dann, dass ein lexikographisch maximaler Fluss in diesem speziellen zeitexpandierten Netzwerk einem Earliest
Arrival Transshipment entspricht.
Theorem 2.27. Seien N = (G, u, τ, S + , t) ein dynamisches Netzwerk,
T ∈ N und b eine Balancefunktion. Dann existiert ein statisches Netzwerk
NbT , in welchem jedes dynamische Transshipment f mit Zeithorizont T und
|f | = −b(t) einem maximalen statischen Fluss x in NbT mit val(x) = −b(t)
entspricht und umgekehrt.
Beweis. Wir konstruieren das Netzwerk NbT . Dazu betrachten wir das zu-
2.5 Earliest Arrival Transshipments
59
gehörige zeitexpandierte Netzwerk N T von N . Wir erweitern dazu GT um
einen Knoten s∗ , welchen wir Superquelle nennen. Weiterhin fügen wir Kanten a = (s∗ , s0 ) mit τ (a) := 0 und u(a) := b(s) für alle s ∈ S + ein. Den so
entstandenen Graphen bezeichnen wir mit GT ∗ . Das statische Netzwerk NbT
ist dann durch NbT := (GT ∗ , u, s∗ , tT −1 ) gegeben.
Sei nun f ein dynamisches Transshipment mit Zeithorizont T und |f | =
−b(t). Dann entspricht f nach Theorem 1.44 einem statischen S +(1) -tT −1 Fluss x mit val(x) = |f | = −b(t) auf N T . Danach gilt exx (s0 ) = b(s) für alle
s ∈ S + . Durch setzen von x((s∗ , s0 )) := b(s) für alle s ∈ S + erweitern wir x
auf NbT zu einen s∗ -tT −1 -Fluss, wobei sich val(x) nicht ändert. Desweiteren
sieht man leicht, dass die Flusserhaltungsbedingungen eingehalten werden.
Der Fluss ist als s∗ -tT −1 -Fluss aufgrund des Max Flow Min Cut-Theorems
maximal, da alle Kanten aus δ + (s∗ ) gesättigt sind.
P
Andererseits sei x ein s∗ -tT -Fluss mit val(x) = −b(t) =
s∈S + b(s).
∗
+
Daher müssen alle Kanten (s , s0 ) für alle s ∈ S saturiert sein. Dadurch ist
automatisch x auf NbT nach dem Max Flow Min Cut-Theorem maximal. Wir
schränken nun x auf N T ein und betrachten ihn als S +(1) -tT -Fluss. Dadurch
gilt nun exx (s0 ) = b(s) auf N T für alle s ∈ S + . Schließlich entspricht x nach
Theorem 1.44 einem dynamischen S + -t-Fluss f mit |f | = val(x) = −b(t),
d. h. f ist b-Transshipment.
Nun zeigen wir, falls es überhaupt dynamische Transshipments gibt, dass
es dann auch welche mit der Earliest Arrival Eigenschaft gibt.
Theorem 2.28. Seien N = (G, u, τ, S + , t) ein dynamisches Netzwerk, T ∈
N und b eine Balancefunktion. Falls es ein dynamisches Transshipment bzgl.
b mit Zeithorizont T gibt, dann existiert ein dynamisches Transshipment
bzgl. b mit Zeithorizont T und der Earliest Arrival Eigenschaft.
Beweis. Wir betrachten das Netzwerk NbT . Aufgrund der Existenz eines
Transshipments hat nach Theorem 2.27 auf dem Netzwerk NbT jeder maximale statische s∗ -tT −1 -Fluss den Flusswert −b(t). Wenn wir nun s∗ -{t}(T ) Flüsse betrachten, gilt, dass der Flusswert eines maximalen s∗ -{t}(T ) -Flusses
in diesem Fall auch immer den Wert −b(t) haben muss, da man jeden maximalen s∗ -tT −1 -Fluss als s∗ -{t}(T ) -Fluss auffassen kann. Mehr Fluss kann aber
ein s∗ -tT −1 -Fluss nicht führen, da er durch die Kapazität von δ + (s∗ ) = −b(t)
beschränkt ist. Damit existiert nun nach Theorem 2.16 ein lexikographisch
maximaler s∗ -{t}(T ) -Fluss x bzgl. {t}(0) ⊂ {t}(1) ⊂ . . . ⊂ {t}(T ) mit
val(x) = −b(t). Da x insbesondere maximal ist, ist insbesondere jede Kante (s∗ , s0 ) für alle s ∈ S + saturiert. Wenn wir x auf N T einschränken und
als S +(1) -t(T ) -Fluss betrachten gilt exx (s0 ) = b(s) für alle s ∈ S + . Wir
wenden nun analog die Holdoverkanten-Konstruktion für die Senkeknoten
nach Theorem 2.17 an, um S +(1) -ti−1 -Flüsse fi für 1 ≤ i ≤ T zu erhalten.
Wie in Theorem 2.17 sehen wir ein, dass ebenfalls val(fi ) = W ({t}(i) ) für
1 ≤ i ≤ T gilt, wobei der Ausdruck W ({t}(i) ) sich auf NbT bezieht. Weiter
60
Evakuierungsprobleme
gilt entsprechend, dass fT einem dynamischen Fluss F mit Zeithorizont T
auf N entspricht, welcher b respektiert und zum Zeitpunkt T erfüllt. Ferner
gilt auch, dass die Flüsse fi dem Fluss F entsprechen, wenn man F jeweils
als dynamischen Fluss mit Zeithorizont i betrachtet.
Wir zeigen nun, dass F zu jedem Zeitpunkt i ≤ T maximal ist. Wenn es
einen Zeitpunkt i gibt, bei welchem dieses nicht der Fall ist, dann existiert auf
N ein dynamischer Fluss F 0 mit Zeithorizont i mit |F 0 | > W ({t}(i) ), welcher
die Balancefunktion respektiert, d. h. es gilt exF 0 (s, θ) ≤ b(s) für alle s ∈ S + .
Dann existiert in N i ein statischer S +(1) -t(i) -Fluss x0 mit val(x0 ) > W ({t}(i) )
und exx0 (s0 ) ≤ b(s) für alle s ∈ S + . Somit lässt sich x0 zu einem s∗ -{t}(i) Fluss x00 durch x00 ((s∗ , s0 )) := exx0 erweitern. Dieser Fluss ist zulässig und
besitzt einen größeren Wert als W ({t}(i) ). Dies ist aber ein Widerspruch
zur lexikographischen Maximalität von x auf NbT . Somit ist F zu jedem
Zeitpunkt maximal und besitzt daher die Earliest Arrival Eigenschaft.
2.5.2
Ein exakter Algorithmus für das Earliest Transshipment
Problem
In diesem Unterabschnitt stellen wir einen Algorithmus vor, welcher zu einem gegebenen Zeithorizont T , einer Bedarfsfunktion und einem dynamischen Netzwerk ein Earliest Arrival Transshipment berechnet. Wir nehmen
dabei an, dass zu dem Zeitpunkt T ein solcher Fluss existiert. Auf das Problem einen solchen Zeitpunkt zu bestimmen verweisen wir auf den Abschnitt
2.2.
Die Berechnung erfolgt auf dem zeitexpandierten Netzwerk ÑbT , welches
∗
entsteht, indem wir GT in NbT um eine Supersenke t∗ erweitern und entsprechend Kanten (ti , t∗ ) mit Fahrzeit Null und unbeschränkter Kapazität
für alle 0 ≤ i < T einfügen. Den modifizierten Graphen nennen wir GT ∗∗ .
Wir berechnen dann einen b0 -Minimalkostenfluss x auf ÑbT mit b0 (s∗ ) :=
−b(t), b0 (t∗ ) := b(t) und b0 (v) = 0 für alle v ∈ GT berechnen. Diesem schränken wir auf N T ein und erhalten nach einen Fluss x0 der einem dynamischen
Transshipment mit Zeithorizont T , welcher unser gesuchtes Earliest Arrival
Transshipment ist, entspricht.
Theorem 2.29. Seien N = (G, u, τ, s, t), T ∈ N und b eine Balancefunktion. Dann berechnet der Algorithmus 2.4 ein Earliest Arrival Transshipment
mit Zeithorizont T .
Beweis. Sei F der Fluss der durch Algorithmus 2.4 entsteht. Der in Algorithmus 2.4 berechnete statische Fluss x0 entspricht nach Theorem 1.44 dem
Fluss F . Der Fluss F hat danach den Zeithorizont T , da kein s0 -tT −1 -Pfad
2.5 Earliest Arrival Transshipments
61
: Ein dynamisches Netzwerk N = (G, u, τ, S + , t), Eine
Balancefunktion b und ein T ∈ N
output : Ein dynamischer S + -t-Fluss mit Zeithorizont T , welcher
bzgl. b ein dynamisches Transshipment ist und die
Earliest Arrival Eigenschaft besitzt.
input
Konstruiere das zeitexpandierte Netzwerk ÑbT ;

−b(t) v = s∗

Setze b∗ (v) = b(t)
v = t∗ ;


0
sonst
2
∗
3 Berechne einen b -Minimalkostenfluss x auf ÑbT ;
4 Schränke x auf N T ein und konstruiere einen S +(1) -tT −1 -Fluss x0
durch Anwendung des Holdoverkanten-Konstruktionsprinzips aus
dem Beweis von Theorem 2.17;
5 Berechne den dynamischen Fluss F der x0 entspricht;
Algorithmus 2.4 : Ein exakter Algorithmus für das Earliest Transshipment Problem
1
für alle s ∈ S + nach Konstruktion von N T länger als T − 1 sein kann. Der
Fluss x0 ist wiederum zulässig, da x0 gemäß analoger Anwendung für t des
Holdoverkanten-Konstruktionsprinzips aus dem Beweis von Theorem 2.17
aus dem Fluss x konstruiert wird.
F respektiert die Balancefunktion, da −exx0 (s0 ) = b(s) für alle s ∈ S +
gilt. Letzteres ergibt sich einfach daraus, da b(s) Flusseinheiten in jeden
Knoten s0 für alle s ∈ S + nach Einschränkung von x auf N T weniger hineinfließen, da alle Kanten (s∗ , s0 ) für alle s ∈ S + saturiert sein müssen um
b∗ zu genügen. Daher gilt −exF (s, θ) ≤ b(s) und exF (s, T ) = b(s). Somit ist
insgesamt F ein zulässiges b-Transshipment mit Zeithorizont T .
Zu zeigen bleibt, dass F zu jedem Zeitpunkt maximal ist. Dazu betrachten wir den Fluss x. Der Fluss x ist nach dem Max Flow Min Cut-Theorem
maximal, da alle Kanten (s∗ , s) für alle s ∈ S + gesättigt sind. Sei nun w eine
Pfadzerlegung von x und wir betrachten alle s∗ -t∗ -Pfade P mit τ (P ) < θ und
w(P ) > 0. (Wir nehmen o. E. an, dass eine solche Pfadzerlegung existiert,
ansonsten ignorieren wir mit der gleichen Begründung wie im dynamischen
Max Flow Algorithmus
Fluss auf den Kreisen). Wir betrachten nun den
P
Fluss xθ (a) := P ∈P:a∈P und w(P )>0 und τ (P )≤θ w(P ).
Wir zeigen indirekt, dass xθ maximal auf Ñbθ . Danach sehen wir, dass auf
N θ jeder Fluss x̃ mit val(x̃) > val(xθ ) keinem dynamischen b-Transshipment
entsprechen kann, da an einer Quelle s0 für ein s ∈ S + die Bedingung
exx̃ (s0 ) ≤ b(s) verletzt sein muss. Wenn dies nicht der Fall sein sollte, könnte
0
man x̃ auf Nbθ zu x̃0 erweitern durch x̃0 (s∗ , s0 ) := b(s) für alle s ∈ S + und
x̃0 (tθ , t∗ ) := val(x̃). Dies wäre ein Widerspruch zur Maximalität von xθ auf
62
Evakuierungsprobleme
Ñbθ . Da, wenn wir xθ auf N θ einschränken, val(x0 ) = val(xθ ) gilt, wäre somit
die Earliest Arrival Eigenschaft von F gezeigt, weil exF (t, θ) = val(x0 ) gilt,
wenn wir x0 auf N θ einschränken.
Wir nehmen nun an, dass xθ nicht auf Ñbθ maximal ist. Dann gibt es
einen xθ -augmentierenden s∗ -t∗ -Pfad P ∗ auf Ñbθ in Gθ∗∗
xθ . Wir definieren nun
→
←
für beliebige Pfade P in Gθ∗∗
xθ mit AP := {a ∈ A : a ∈ AP oder a ∈
AP } die Menge aller Vorwärtskanten, welche entweder selbst oder dessen
→
zugehörige Rückwärtskante in AP enthalten ist. Sei a = (vk , wk+τ (a) ) ∈ AP ∗
mit k+τ (a) ≤ θ so gewählt, dass xθ (a) < x(a) und xθ (a0 ) = x(a0 ) für alle a0 ∈
−−−−−−−−→
∗
AP[w
\{a} gilt. Eine solche Kante muss existieren, da sonst P ∗ in GTx ∗∗
,t∗ ]
k+τ (a)
ein augmentierender Pfad ist, was aber der Maximalität von x widerspricht.
Daher gibt es einen weiteren s∗ -t∗ -Pfad P 0 mit a ∈ AP 0 , w(P 0 ) > 0 und
τ (P 0 ) ≥ θ. Damit erhalten wir in GTx ∗∗ einen Kreis C von wk+τ (a) über den
∗
∗
0
Kanten von P[w
,t∗ ] über t und den Rückwärtskanten von P[w
,t∗ ]
k+τ (a)
←
k+τ (a)
verläuft. Sofern a ∈ AP ∗ enthalten ist, müssen wir sicherstellen, dass diese
Kante in GTx ∗∗ auch existiert. Dies ist aber gesichert, da 0 < xθ (a) < x(a)
gilt. Daher gilt weiter τ (C) = τ (P ∗ ) − k − τ (a) − τ (P 0 ) + k + τ (a) = τ (P ∗ ) −
τ (P 0 ) < 0 wegen τ (P 0 ) ≥ θ > τ (P ∗ ). Damit ist C ein Kreis mit negativen
Kosten, was wiederum ein Widerspruch dazu ist, dass x nach Konstruktion
ein Minimalkostenfluss ist. Somit ist xθ auf Ñbθ maximal.
Zusammen mit obigen Vorüberlegungen haben wir gezeigt, dass F ein
b-Transshipment ist, welches zu jedem Zeitpunkt θ den Ausdruck exF (t, θ)
so groß wie möglich macht, ohne b zu verletzen. Daher ist F ein Earliest
Arrival Transshipment.
Kapitel 3
Heuristiken
In diesem Teil der Diplomarbeit werden verschiedene Heuristiken vorgestellt,
die es in polynomieller Zeit ermöglichen, ein dynamisches Transshipment
zu berechnen, dessen Arrival Pattern sich möglichst wenig von dem eines
Earliest Arrival Pattern unterscheidet. Dabei ist hier die Zielsetzung, die
maximale Abweichung beider Pattern zu minimieren.
Exakte Algorithmen zur Berechnung eines Earliest Arrival Transshipment sind zwar bekannt (vgl. Kapitel 2.3), aber i. A. nicht für große Instanzen des Problems geeignet. Dies ist daher ein wichtiger Punkt, welcher die
Untersuchung der Heuristiken interessant macht.
Die in diesem Kapitel vorgestellten Heuristiken setzen folgende Eigenschaften des zu untersuchenden Netzwerkes (G, u, τ, S + , t) und der Balancefunktion b voraus:
(1) u ≡ 1,
(
1 falls a ∈
/ δ − (t)
(2) τ (a) =
0 falls a ∈ δ − (t),


v∈S
1
(3) b(v) = −|S| v = t


0
sonst.
Diese Generalvoraussetzung machen wir, da die Heuristiken während
der Untersuchung zahlreicher Instanzen entwickelt worden sind, welche ihren Ursprung in Sitzbelegungsplänen aktueller Flugzeugtypen haben. Diese
Instanzen nennen wir im Folgenden Flugzeuginstanzen. Wenn ein Sitzbelegungsplan eines Flugzeugs gegeben ist, motivieren wir nun informell, wie
daraus eine Flugzeuginstanz gewonnen wird. Siehe dazu auch Abbildung 3.1
Wir konstruieren einen Graphen G und fügen für jeden Sitzplatz 0 ≤
i ≤ l genau einen Knoten vi ein. Wir gehen davon aus, dass wir l Sitzplätze gegeben haben. Für je zwei benachbarte Sitzplätze i und j fügen wir
Kanten (vi , vj ) und (vj , vi ) in den Graphen ein. Wenn zum Beispiel eine
Gehrichtung ausgeschlossen ist (z. B. in einer Fenstersitzreihe der Weg zum
Fenster) verzichten wir auf das Einfügen von gewissen Kanten welche in diese Richtung führen würden. Sind zwei Sitzplätze i und j in einer Sitzreihe
und durch einen Gang getrennt, fügen wir einen weiteren Knoten w ein, und
63
64
Heuristiken
Abbildung
3.1:
oben:
Ein
Sitzbelegungsplan
eines
Airbus
A330
der
Lufthansa,
welchen
man
gegenwärtig
unter
der
Internetadresse
http://www.seatguru.com/airlines/Lufthansa/Lufthansa Airbus A333 A.php
c
(TripAdvisor
LLC 2001 - 2007) ansehen kann.
c
unten: Der entsprechende modellierte Graph der mittels LEDA (Algorithmic
Solutions
Software GmbH.) konstruiert und visualisiert wurde. Für weitere Details zu LEDA siehe
http://www.algorithmic-solutions.com/.
fügen Kanten (vi , w), (w, vi ), (vj , w) und (w, vj ) ein. Somit diskretisieren
wir die Gänge indem wir sie auch durch Knotenteilmengen repräsentieren.
Für solche Knoten w und w0 fügen wir Kanten (w, w0 ) und (w0 , w) ein, wenn
die entsprechenden Sitzreihen, zwischen welchen sie liegen, benachbart sind.
Freie Zwischenräume werden ebenfalls gleichmässig durch Knoten diskretisiert. Kanten werden dann eingefügt, wenn die Orte, welche die Knoten
repräsentieren in einer gewissen Weise benachbart sind. Desweiteren wird
jeder Ausgang und Notausgang durch einen Knoten modelliert und geeignet an den bisher entstandenen Graphen angebunden. Dann fügen wir eine
künstliche Senke ein, damit wir die Existenz eines Earliest Arrival Transshipment gesichert haben. Man kann diesen Knoten aber auch als sicheren
Rückzugspunkt (z. B. das Rollfeld) interpretieren.
Dieser so entstandene Graph ist zusammenhängend und schlicht und für
jeden Knoten vi ∈ S + (0 ≤ i ≤ l) gibt es (für alle 1 ≤ r ≤ k) mindestens
einen vi -er -Weg mit (er , t) ∈ δ − (t) und |δ − (t)| = k. Aus diesem Grund ist
auch G[V \ {t}] zusammenhängend. Anschaulich bedeutet das, dass jeder
Passagier potentiell jeden Ausgang nutzen könnte.
Wegen dieses Konstruktionsprinzips setzen wir diese Eigenschaften des
Graphen G in diesem Kapitel generell voraus.
Da adjazente Knoten Punkte in der Ebene (Sitzplan) repräsentieren,
die ungefähr den gleichen Abstand haben, haben wir die Fahrzeit verein-
65
heitlicht, wobei wir einfachheitshalber annehmen, dass alle Passagiere sich
gleich schnell bewegen. Da wir nur die Zeit messen wollen, die bis zum erreichen des Ausganges gebraucht wird, versehen wir die Kanten, die zur Senke
führen mit der Fahrzeit Null.
Die Kapazität auf den Kanten haben wir auch vereinheitlicht, da wie in
der Wirklichkeit keine zwei Personen normal auf einem Gang nebeneinander
passen. Die Tatsache, dass auf einem Gang sich zwei Passagiere begegnen
durch jeweils zwei antiparallele Kanten sich kreuzen können ergibt keinen
Zeitvorteil bei der späteren Berechnung des Arrival Pattern, da diese Passagiere ihre Rollen so nach dem Kreuzen vertauschen können, als ob keine
Kreuzung stattgefunden hätte.
Auf der Hand liegt, dass wir jeden Passagier als eine Flusseinheit interpretieren. Daher modellieren wir jeden belegten Sitzplatzknoten mit einem
Einheitsbedarf. Die Senke erhält mit entsprechendem Vorzeichen die Summe
dieser Bedarfe, so dass wir eine zulässige Balancefunktion haben.
Im Folgenden werden drei Heuristiken vorgestellt. Diese basieren auf der
Idee, kürzeste Wege bzgl. der Fahrzeit zu untersuchen. Die erste Heuristik ist
somit die kürzeste Wege Heuristik. Die weiteren Heuristiken stellen Verbesserungen der ersten dar. Es handelt sich dabei um die AusgangentlastungsHeuristik und die kürzeste Fahrzeit Heuristik.
Nach der Vorstellung dieser Heuristiken veranschaulichen wir die Arbeitsweise der Heuristiken an einem kleinen Beispielnetzwerk. Danach werden wir die Heuristiken auf einige Instanzen anwenden und die Resultate
der Heuristiken untereinander sowie mit einem exakten Resultat jeweils pro
Instanz vergleichen.
Alle vorgestellten Heuristiken benötigen den Begriff eines Ausganges.
Dieser ist wie folgt definiert:
Definition 3.1. Gegeben sei eine Netzwerkinstanz (G, u, τ, S + , t) mit G =
(V, A). Ein Knoten v ∈ V \{t} heißt Ausgangsknoten oder kurz Ausgang,
falls (v, t) ∈ A. Die Menge aller Ausgänge bezeichnen wir mit E wobei E & A
gilt.
Desweiteren werden alle vorgestellten Heuristiken ein dynamisches
Transshipment auf Basis von S + -t-Pfaden berechnen. Als Hilfsmittel führen wir folgende Notation ein:
Definition 3.2. Seien (G, u, τ, S + , t) ein dynamisches Netzwerk und P ein
s-t-Pfad mit s ∈ S + . Dann wird durch P wie folgt ein dynamischer Fluss f
mit Zeithorizont τ (
(P ) + 1 induziert:
1 falls θ = τ (P[s,v] ) und (v, w) ∈ AP
f ((v, w), θ) :=
0 sonst
Um zu verdeutlichen, dass ein Fluss f durch einen Pfad P induziert wird,
bezeichnen wir f mit f[P ]
66
Heuristiken
Bemerkungen 3.3. (1) Der durch einen Pfad P induzierte Fluss f[P ] ist
wohldefiniert, da man sehr leicht sieht, dass die Kapazitätsbedingungen wegen der Generalvoraussetzung u ≡ 1 auf keiner Kante verletzt
werden. Auch die Flusserhaltungsbedingung wird nicht verletzt, da wir
entlang eines Pfades eine Flusseinheit verschicken, die nach Konstruktion innerhalb des Zeithorizontes in die Senke t hineinfließt.
(2) In diesem Kapitel werden wir die jeweilige Kantenmenge eines s-tPfades (s ∈ S + ) als Weg im Sinne von Definition 1.8 auffassen, also
als geordnetes Kanten-Tupel. Dies erleichtert uns beim Aufschreiben
der Algorithmen insofern die Arbeit, da dann die Anweisung für alle
”
a ∈ AP“ die Reihenfolge der Kanten auf dem Weg von s nach t berücksichtigt, und somit das gewünschte Traversieren des Pfades beschreibt.
Wir werden nun durch die Heuristiken mehrere Ansätze sehen, wie man
durch Pfade induzierte Flüsse kombiniert, um ein dynamisches Transshipment zu erhalten.
3.1
Die kürzeste Wege Heuristik
Diese Heuristik ist die erste, welche in diesem Kapitel vorgestellt wird. Motiviert wird sie durch die Tatsache, dass z. B. Personen, die ein Flugzeug
besteigen oder ein Stadion betreten, sich den kürzesten Weg zu dem nächsten Ausgang bzw. Notausgang merken. Selbst wenn sie dieses nicht tun,
weisen im Evakuierungsfall Leittafeln auf den nächstgelegenen Ausgang hin,
d. h. der Weg vom Sitzplatz zu diesem Ausgang ist nicht länger ist als jeder andere Weg zu einem anderen Ausgang. Auf das Netzwerk übertragen,
bedeutet dies, dass jede Flusseinheit über den kürzesten Weg von der zugehörigen Quelle bis zur Senke geführt werden wird. Im Netzwerk entsprechen
die Ausgänge eines Flugzeuges oder Stadion den Knoten, zu welchen die
Senke adjazent ist.
Diese Heuristik arbeitet wie folgt: Zunächst wird von jeder Quelle s ∈ S +
jeweils ein kürzester Pfad zur Senke t mit dem Algorithmus von Dijkstra
bestimmt. Diese Wege werden nun in eine Liste L eingefügt. Anschließend
wird diese Liste aufsteigend nach der Länge der Pfade bzgl. τ sortiert. Sei
L = [P1 , . . . , P|S + | ] die resultierende Liste nach dem Sortiervorgang.
Ausgehend von der sortierten Liste werden nun die Pfade nacheinander
betrachtet und jeder Kante auf diesen Pfaden Fluss zu einem geeigneten
Zeitpunkt zugewiesen. Dabei kann es zu Kollisionen, d. h. Kapazitätsverletzungen von Kanten a = (v, w) kommen, wenn wir bzgl. eines Pfades P mit
a ∈ AP einen Fluss f 0 um eine Flusseinheit erweitern wollen, d. h dass u. U.
der Fluss f 0 + f[P ] zu einem Zeitpunkt θ an der Kante a die Kapazitätsbedingung verletzt. Diese Kollision muss dahingehend aufgelöst werden, indem
die Flusseinheit, die entlang P fließen soll, solange in v zwischengespeichert
3.1 Die kürzeste Wege Heuristik
67
werden muss, bis die Kante a wieder über Kapazität verfügt.
Die Heuristik setzt nach dem Sortiervorgang mit der Weiterverarbeitung
der Pfade bzw. eigentlichen Flussberechnung mit dem kürzesten Pfad fort.
Sie nimmt am Anfang den Nullfluss an und versucht nach und nach entlang
der Pfade aus L den Fluss unter Vermeidung von Kollisionen zu vergrößern.
Wir bezeichnen mit f[P1 ,...,Pl ] (1 ≤ k ≤ |S + |) den Fluss, der nach Flussvergrößerung entlang der Pfade P1 bis Pl entsteht. Zunächst ist nicht klar
wie dieser Fluss entsteht. Eine Möglichkeit wäre eine Addition der Flüsse
f[Pi ] was aber i. A. kein zulässiger Fluss ist, da, wie wir weiter oben gesehen
haben, es zu Kapazitätsverletzungen kommen kann. Bis jetzt wissen wir nur,
dass nach Bemerkung 3.3 der Fluss f[P1 ] ein gültiger dynamischer Fluss ist.
Wir zeigen nun induktiv auf, wie die Heuristik den Fluss f[P1 ,...,Pl ] berechnet, wenn der Fluss f[P1 ,...,Pl−1 ] bekannt ist. Zunächst berechnet die Heuristik
den Fluss g := f[P1 ,...,Pl−1 ] + f[Pl ] . Wenn einer der Summanden einen kleineren Zeithorizont besitzt, erweitern wir diesen Fluss zu einem Fluss mit
dem entsprechenden größeren anderen Zeithorizont. Dabei wird der Fluss
auf allen Kanten und zu allen Zeitpunkten ab dem kleineren Zeithorizont
auf Null gesetzt. Ist nun g zulässig, so sei f[P1 ,...,Pl ] := g.
Ist g nicht zulässig, gibt es Kanten ak auf Pl zu welchen es ein θk gibt
mit g(ak , θk ) > 1. Dabei bezeichne ai die i-te Kante auf dem Pfad Pl , ausgehend von der zugehörigen Quelle. Sei nun aj = (v, w) ∈ APl eine solche
Kante mit minimalem θj . Wir suchen nun den kleinsten Zeitpunkt θj0 mit
f[P1 ,...,Pl−1 ] (aj , θj0 ) = 0 und θj0 > θj . Wir müssen nun die Flusseinheit, die
entlang Pl verschickt werden soll, im Zeitintervall [θj , θj0 ] im Knoten v zwischenspeichern. Dazu modifizieren wir f[Pl ] und setzen

P

0
falls θ ≤ τ (Pl ) + ji=1 ∆li





und a ∈
/ APl



f (a, θ)
falls 0 ≤ θ < θj und a ∈ APl
(j)
[Pl ]
(∗)fPl (a, θ) :=

0
falls θj ≤ θ < θj0 und a ∈ APl


P


f[Pl ] (a, θ − ∆lj ) falls θj0 ≤ θ ≤ τ (Pl ) + ji=1 ∆li




und a ∈ APl
mit ∆lj = θj0 − θj . Wir setzen ∆li = 0 für alle 1 ≤ i < j, falls ∆li bisher
undefiniert ist.
(j)
Der Fluss fPl entspricht dem Fluss f[Pl ] bis zu dem Zeitpunkt θj , wo
in v für ∆lj Zeiteinheiten die Flusseinheit gespeichert wird. Danach ent(j)
spricht fPl dem Fluss f[Pl ] mit einem Zeitversatz von ∆lj . Setzen wir nun
(j)
g := f[P1 ,...,Pl−1 ] + fPl so gilt g(aj , θj ) = 1. Ist g nun zulässig, so sei
f[P1 ,...,Pl ] = g. Ansonsten gibt es wieder eine Kante ak mit einem minimalen θk mit g(a, θk ) > 1. Dann gilt nun θk > θj . Wir lassen in Formel
(j)
(k)
(*) fPl die Rolle von f[Pl ] übernehmen und erhalten einen neuen Fluss fPl
und berechnen die Funktion g neu. Dieser Vorgang wird solange wieder-
68
Heuristiken
(r)
holt bis wir einen Fluss fPl gefunden haben (r > . . . > k > j) so dass
(r)
g = f[P1 ,...,Pl−1 ] + fPl zulässig ist. Der Vorgang terminiert, da die θi
streng monoton steigend sind. Wir setzen dann f[P1 ,...,Pl ] = g. Wir beachten
dabei, dass die bisher gewonnenen ∆li -Ausdrücke, wenn sie einmal ermittelt
wurden, sich nicht mehr ändern. Damit erreicht die
welche in
Pr Flusseinheit,
l
entlang Pl die Senke erreichen soll, nach τ (Pl ) + i=1 ∆i Zeiteinheiten die
P
(r)
Senke, da fPl den Zeithorizont τ (Pl ) + ri=1 ∆li + 1 besitzt.
Die Heuristik terminiert, nachdem sie den letzten Pfad P|S + | betrachtet
hat, d. h. sie hat den Fluss fL = f[P1 ,...,P| S + |] berechnet. fL ist ein dynamisches b-Transshipment, da jede Quelle nur einmal als Startknoten auf einem
der Pfade aus L auftritt. Ansonsten gilt, wenn eine Quelle als Zwischenknoten in einem Pfad P 0 auftritt, im Fluss f[P 0 ] Flusserhaltung. Da jeweils
nur eine Flusseinheit entlang jeden Pfades verschickt wird, genügt fL der
Balancefunktion b.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Data : Ein Netzwerk (G, u, τ, S + , t)
initialisierung;
foreach s ∈ S + : do
Berechne den kürzesten s-t Pfad Ps bzgl. τ ;
Füge Ps in die Pfadliste L ein;
end
Sortiere L aufsteigend;
foreach P ∈ L: do
θ := 0;
foreach a ∈ AP : do
while f (a, θ) = u(a) do
θ + +;
end
f (a, θ) + +;
θ + +;
end
end
Algorithmus 3.1 : Kürzeste Wege Heuristik
Die Laufzeit dieser Heuristik können wir insgesamt mit O(m + n log n +
n · |S + |2 ) abschätzen. Um die Pfade zu berechnen und separat abzuspeichern benötigen wir O(m + n log n + n · |S + |) an Zeit, in dem wir geschickt in
Linearzeit die Kantenorientierung aller Kanten ändern und dann den Algorithmus von Dijkstra mit t als Quellknoten starten. Bei der Speicherung der
Pfade können wir die gewonnene Vorgängerinformation als Nachfolgerinformation auffassen um somit die Kantenorientierung des Ursprungsgraphen
zu berücksichtigen. Die Speicherung der Pfade kann in Zeit O(|S + | · n) erfolgen, da wir |S + | Pfade haben, die maximal n Knoten enthalten können.
3.2 Die Alternativausgang Unterheuristik
69
Das Sortieren der Liste L bezüglich der Pfadlängen kann in Linearzeit O(n)
mittels Bucketsort erfolgen, da die es wir |S + | ganzzahlige Pfadlängen haben, welche wiederum nur O(n) viele Werte annehmen können. Für Details
zu dem Sortieralgorithmus Bucketsort verweisen wir auf [23].
Die folgende äußere Schleife (Zeile 7-16 in Algorithmus 3.1) benötigt |S + |
Iterationen. Die Flusseinheit, die in jeder dieser Iteration verschickt werden
soll, muss maximal |S + | Zeiteinheiten in jedem Knoten auf dem Pfad warten,
bis sie in die nächste Kante gelangen kann. Somit ist θ in jeder Iteration der
äußeren Schleife durch |S + | · n beschränkt. Insgesamt benötigt diese Schleife
damit O(n · |S + |2 ) an Zeit.
Zusammenfassend sehen wir leicht, dass folgendes Theorem gilt:
Theorem 3.4. Dieser Algorithmus hat eine Laufzeit von O(m + n log n + n ·
|S + |2 ) und berechnet einen dynamischen b-Fluss f mit Zeithorizont n · |S + |
gemäss der kürzesten Wege Heuristik.
Bemerkungen 3.5. Der im letzten Theorem festgestellte Zeithorizont ist
ein Worst Case Wert. In den praktischen Untersuchungen, in welchen wir
diese Heuristik auf einige Flugzeuginstanzen anwenden, wurde dieser aber
nie benötigt. Für weitere Details siehe Abschnitt 3.6.
3.2
Die Alternativausgang Unterheuristik
Die später folgenden Heuristiken in den Abschnitten 3.3 und 3.4 benötigen
den Begriff eines Alternativausganges. In diesem Abschnitt beschreiben wir,
wie bei der Flussberechnung in den später vorgestellten Heuristiken ein Alternativausgang und somit ein alternativer Pfad bestimmt wird. Dazu sei
E = {e1 , . . . , ek } $ V die Menge der Ausgänge in G, wobei wir ein dynamisches Netzwerk (G, u, τ, S + , t) annehmen. Wenn ein s-t-Pfad (s ∈ S + ) gegeben ist, welcher die Kante (el , t) nutzt, benötigen diese Heuristiken in gewissen Fällen einen s-t-Pfad, welcher über einen anderen Ausgang e∗ ∈ E \ {el }
die Senke erreicht. Diese Pfade bezeichnen wir als Alternativpfade und den
Ausgang e∗ als Alternativausgang.
Wird ein Pfad Pi mit Quelle si untersucht (1 ≤ i ≤ |S + |), welcher über
den Ausgang ej ∈ E (1 ≤ j ≤ k) die Senke erreicht, erläutern wir nun,
wie wir einen alternativen si -t-Pfad Pi∗ bestimmen, welcher den Ausgang ej
bzw. die Kante (ej , t) nicht mehr verwendet. Offensichtlich ist, dass der Fall
k = 1 ausgeschlossen werden muss, da es in diesem Fall keinen solchen Pfad
Pi∗ gibt. Daher betrachten wir nur die Fälle k > 1.
Soll nun Pi∗ bestimmt werden, so werden zunächst innerhalb einer noch
zu bestimmenden Umgebung des Ausgangs ej alle anderen Ausgänge ausgeblendet, d. h. es gibt eine Indexmenge Ij $ {1, . . . , k} mit j ∈ I, so dass wir
für das weitere Vorgehen dieser Unterheuristik den Graphen G∗ = (V, A∗ )
mit A∗ := A \ {(el , t) ∈ A : l ∈ Ij } betrachten.
70
Heuristiken
In G∗ berechnen wir nun einen kürzesten si -t-Pfad bzgl. τ . Dieser Pfad
ist der gesuchte alternative Pfad Pi∗ , welcher nun konstruktionsbedingt eine
Kante (el , t) enthält mit l ∈
/ Ij . Der Ausgang el wird dabei als der alternative
Ausgang oder Alternativausgang bezeichnet.
Zu beschreiben bleibt noch, wie wir zu jedem Ausgang ej (1 ≤ j ≤ l)
die Menge Ij konstruieren. Im Fall k = 2 setzen wir Ij := {j}, da jeder
alternative Pfad, der den Ausgang ej meidet, nur noch den jeweils anderen
verbliebenen Ausgang enthalten kann.
Interessanter wird nun der Fall k > 2. Die Idee, die zugrunde liegt ist die,
dass bei der Berechnung von Pi∗ Ausgänge vermieden werden sollen, die in
gewisser Weise zu nah am ersten Ausgang ej liegen, da die Gefahr sonst zu
groß ist, dass ein großer Teilpfad von Pi wieder zur Flussberechnung benutzt
wird und somit keine Fahrzeitverbesserung im späteren Transshipment zu
erwarten ist.
Begründet wird diese Erkenntnis durch die Untersuchung von Flugzeuginstanzen. Passagiere haben zwei Möglichkeiten sich für eine Gehrichtung
auf dem Gang zu entscheiden. Falls nun ein Alternativausgang zu nah am
ursprünglich gewähltem Ausgang liegt, kann es passieren, dass der Passagier die Gehrichtung beibehält und einen großen Teilpfad des ursprünglichen
Pfades wieder benutzt. Wir versuchen diese Tatsache zu verhindern, in dem
wir für jeden Ausgang ej Ausgänge e∗ berechnen, die für Passagiere tabu
sind, welche über ej die Senke t erreichen. In Flugzeugsitzplänen sind meist
zwei Ausgänge mit kurzem Abstand jeweils gegenüberliegend. Die Unterheuristik versucht zu verhindern, dass ein gegenüberliegender Ausgang als
Alternativausgang in Frage kommt.
Den Distanzbegriff, den wir im Folgenden benötigen um die Umgebung
eines Ausgangs zu beschreiben, beziehen wir auf dem G[V \ {t}] zugrundeliegenden ungerichteten Graphen G0 [V \ {t}]. Wir müssen den Knoten t
dabei entfernen, da sonst jeder Ausgang über den Knoten t zu jedem anderem Ausgang bzgl. τ den Abstand Null hätte. Dabei bezeichne im Folgenden
für zwei Knoten v, w ∈ V der Ausdruck dist(v, w) die Länge des kürzesten
Weges bzgl. τ von v nach w in G0 [V \ {t}]. In AG0 [V \{t}] setzen wir τ ≡ 1,
da dies auch in AG[V \{t}] gilt.
Nun berechnen wir für jeden Ausgang ej ∈ E die Entfernung dist(ej , el )
zu allen anderen Ausgängen mit 1 ≤ l ≤ k und k 6= l.
Wir merken uns dabei mit dem Ausdruck dmin (ej ) die kürzeste Länge
dieser kürzesten Wege. Also gilt dmin (ej ) := min{dist(ej , el ) : l ∈ {1, . . . , k}\
{j}}.
Da ein zu ej alternativer Ausgang nicht zu nah bei ej liegen sollte, fordern wir einen Mindestabstand von dmin (ej ) + 1 für alle Ausgänge, die als
Alternativausgang anstelle von ej in Frage kommen sollen, zu ej . In unseren
Flugzeuginstanzen würden somit die gegenüberliegenden Ausgänge jeweils
als Alternativausgang nicht in Betracht kommen.
Falls es aber noch einen weiteren Ausgang e0 in sehr naher Distanz zu ej
3.2 Die Alternativausgang Unterheuristik
71
gibt, könnte es passieren, dass in einer Flugzeuginstanz der zu ej gegenüberliegende Ausgang el (l 6= k) als Alternativausgang in Frage kommt. Damit
das nicht passiert orientieren wir uns an den berechneten Mindestdistanzen
der anderen Ausgänge.
Unsere Annahme ist, dass wir bei Festsetzung einer einheitlichen Mindestdistanz diesen Ausnahmefall verhindern können, wenn diese Situation
nicht sehr Häufig im Graphen auftritt. Ein Beispiel eines solchen Falles sehen wir in Abbildung 3.2. Dort haben die Paare gegenüberliegender Ausgänge den Abstand 9. Den geringsten Abstand zu dem Knoten v hat der
Ausgang e3 . Dieser hat wiederum zum Ausgang e1 den Abstand 8. Wenn
wir nun für v zusätzlich zu e3 als Alternativausgänge Ausgänge verbieten,
welche die kürzeste Entfernung zu e3 besitzen, so wäre der Ausgang e4 noch
erlaubt. Ein Alternativpfad über e4 würde auch keinen Vorteil bringen, da
dieser auch in gewisser Weise am Ausgang e3 vorbei führt. Wenn wir aber
den Knoten e4 , der den Abstand 9 zu e3 hat, auch als Alternativausgang
verhindern wollen, so sollten alle Ausgänge, die als Alternativausgang für v
in Betracht kommen dürfen, den Abstand von mindesten 10 zu e3 haben.
Diesen Umstand wird die Unterheuristik berücksichtigen, da sie ich an dem
kürzesten Abstand von e2 zu e1 orientieren wird. Dieser Abstand wird von
uns gesuchte Mindestdistanz festlegen.
Die einheitliche Mindestdistanz D, die ein alternativer Ausgang von
dem ursprünglichem Ausgang haben soll, setzen wir allgemein auf D :=
max{dmin (ej ) : j ∈ {1, . . . , k}} + 1 um der o. g. Forderung nachzukommen.
Nun können wir für alle Ausgänge ej die Indexmenge Ij festlegen. Wir
setzen Ij := {i ∈ {1, . . . , k} : dist(ej , ei ) < D}. Insbesondere gilt j ∈ Ij .
Somit ist gesichert, dass der ursprüngliche Ausgang selbst nicht der später
zu ermittelnde Alternativausgang sein kann. Aufgrund der Symmetrie von
dist gilt weiter, dass j ∈ Il gilt, wenn l ∈ Ij gilt und umgekehrt.
Um zu jedem Ausgang ej die Existenz eines möglichen Alternativausganges zu sichern, dürfen bei der Bestimmung des selbigen nicht alle Ausgänge ausgeblendet werden, d. h. es muss Ij 6= {1, . . . , k} gelten. Falls bisher
Ij = {1, . . . , k} gilt, weichen wir von unserer Forderung mit dem Mindestabstand ab und ersetzen Ij durch Ij := {j} und merken uns j in einer weiteren
Indexmenge I. Wir setzen den Ersetzungsvorgang fort bis für alle 1 ≤ l ≤ k
die Beziehung Ij 6= {1, . . . , k} gilt.
Aus Symmetriegründen entfernen wir danach nun alle i ∈ I aus allen
anderen Indexmengen außer Ii . Wir ersetzen dabei Ij durch Ij \(I \ {j}). Die
resultierenden Indexmengen sind dann die, welche in der o. g. alternativen
Pfadberechnung eingesetzt werden um den Graphen G∗ zu berechnen.
Die Laufzeit der Indexmengenberechnung können wir mit O(k(m +
n log n) + n2 ) abschätzen. Wir können in Linearzeit den ungerichteten Graphen G0 bestimmen. In der ersten Schleife, die k-mal durchlaufen wird, benötigen wir höchstens Laufzeit O(m + n log n), wenn wir entsprechend den
Algorithmus von Dijkstra auf ungerichtete Graphen übertragen und ihn da-
72
Heuristiken
e2
e4
e6
v
e1
e3
e5
Abbildung 3.2: In diesem Graphen hat der Ausgang e3 den kürzesten Abstand zu v.
Wenn bei der Berechnung alternativer Ausgänge alle Ausgänge außer e3 in Frage kommen
würden, so wäre der Ausgang e1 der alternative Ausgang, da er mit Abstand 8 den zweitkürzesten Abstand zu v hat. In diesem Fall hätten wir von dem kürzesten v-e1 -Pfad keinen
Vorteil, da er in gewisser Weise am Ausgang e3 vorbeiführt. Die Unterheuristik schließt
aber die Knoten e3 und e4 zusätzlich als Alternativausgang für v aus, so dass nach einer
kürzesten Wege Berechnung der Knoten e5 als Alternativausgang gefunden werden kann.
bei an der Stelle, an welcher ein weiter Ausgangsknoten in die Menge R (vgl.
Algorithmus 1.1) aufgenommen wird, so modifizieren, dass er den Ausdruck
dmin (ei ) mitberechnen kann.
Die Überprüfung der Mindestdistanz D und die entsprechende Aktualisierung erfolgt in Zeit O(n2 ). Die Berechnung der Menge I benötigt Zeit
O(n). Die Laufzeit der letzten Schleife kann mit O(n2 ) abgeschätzt werden.
Somit haben wir folgendes Theorem bewiesen:
Theorem 3.6. Der Algorithmus der Indexmengenberechnung gemäß der
Unterheuristik hat eine Laufzeit von O(k(m + n log n) + n2 ).
3.3
Die Ausgangentlastungs-Heuristik
Diese Heuristik ist eine Modifikation der kürzesten Wege Heuristik. Grundlage sind hier daher auch die kürzesten Wege von den Quellen zur Senke.
Die Idee, die dieser Heuristik zugrunde liegt, ist, dass im Evakuierungsfall
ungefähr alle Ausgänge gleichmäßig belastet werden sollen, d. h. dass diese
Knoten durch ungefähr gleich viele Flusseinheiten passiert werden sollen.
73
3.3 Die Ausgangentlastungs-Heuristik
Data : Ein Netzwerk (G, u, τ, S + , t) und die Menge der Ausgänge
E = e1 , . . . , ek
1 D := 0;
2 G0 :=makeundirected(G[V {t}]);
3 foreach ei ∈ E: do
4
Ii := {i};
5
Berechne dist(ei , ej ) für alle ej ∈ E \ {ei } bzgl. τ ;
6
dmin (ei ) := min{dist(ei , ej ) : ej ∈ E \ {ei }}
D := max{D, dmin (ei )};
7 end
8 for i := 1 → k − 1 do
9
for j := i + 1 → k do
10
if dist(ei , ej ) ≤ D then
11
Ii := Ii ∪ {j};
12
Ij := Ij ∪ {i};
13
end
14
end
15 end
16 I := ∅;
17 for i := 1 → k do
18
if |Ii | = k then
19
I := I ∪ {i};
20
end
21 end
22 for i := 1 → k do
23
Ii := (Ii \ I) ∪ {i};
24 end
Algorithmus 3.2 : Indexmengenberechnung der Unterheuristik
In einer Initialisierungsphase werden die benötigten Indexmengen, die die
Unterheuristik aus Abschnitt 3.2 benötigt, zuerst berechnet. Die Heuristik
berechnet dann die kürzesten Wege von allen Quellen zur Senke. Ähnlich
wie in Abschnitt 3.1 ist es Ziel ein dynamisches Transshipment von der
Form f[P1∗ ,...,P ∗ + ] zu berechnen. Wir beschreiben nun, wie wir die Pfade
|S
|
∗
P1∗ , . . . , P|S
+ | ermitteln.
Für jeden der Ausgänge e1 , . . . , ek ∈ E (1 ≤ k < n) erstellen wir eine
Liste Lk . Die zuvor berechneten Pfade bezeichnen wir mit P1 , . . . , P|S + | und
wir fügen sie in die Liste Li ein, wenn sie die Kante (ei , t) enthalten und
wir bezeichnen mit L eine Liste, die die Listen L1 , . . . , Lk enthält. Die Pfade
P1 , . . . , P|S + | werden wir als Erstpfade bezeichnen. Desweiteren bezeichne
sl ∈ S + den Startknoten auf dem Pfad Pl und es sei D :=
|S + |
k .
Somit
74
Heuristiken
bezeichnet D die durchschnittliche Länge aller Listen.
Die Idee ist nun stark frequentierte Ausgänge bzw. Listen mit überdurchschnittlicher Länge zu entlasten. Listen Li mit |Li | > D nennen wir dabei
überdurchschnittlich. Sei di := |Li | − D für 1 ≤ i ≤ k. Wir beschreiben
nun den Entlastungsvorgang. Sei dazu Lj überdurchschnittlich (also es gilt
dj > 0). Beim Entlasten von Lj werden die dj längsten Erstpfade aus Lj
entfernt. Sei πj eine Permutation aus der symmetrischen Gruppe S|S + | , so
dass die Quellen der aus Lj entfernten Pfade den Knoten sπj (1) , . . . , sπj (dj )
entsprechen. Dann berechnen wir neue alternative sπj (i) -t-Pfade (1 ≤ i ≤ dj )
gemäß der Unterheuristik und fügen sie, wenn sie die Kante (er , t) enthalten,
entsprechend in die Liste Lr ein. Die Unterheuristik ist so beschaffen, dass
r 6= j gilt, wenn k ≥ 2 gilt. Wir beachten dabei, dass sich die Werte dj für
0 ≤ j ≤ k nicht verändern werden.
Nun werden die Flusseinheiten, welche die Knoten sπj (1) , . . . , sπj (dj ) in
dem gesuchten Transshipment verlassen sollen über andere Ausgänge zu t
geführt. Die Idee dieses Vorgangs, insbesondere die dj längsten Erstpfade
aus Lj zu eliminieren, ist die, dass sich die entsprechend neuen alternativen Pfade nur so wenig wie möglich verlängern sollen, d. h. der Ausdruck
τ (P̃ ) − τ (P ) für alle zu eliminierenden Pfade P ∈ Lj (P̃ bezeichne den zugehörigen alternativen Pfad), soll möglichst klein sein. Wir nehmen dabei an,
dass es häufig der Fall sein wird, dass die meisten Pfade Pπj (i) ((1 ≤ i ≤ dj ))
sehr viele Kanten mit den restlichen Pfaden aus Lj gemeinsam haben. Der
Grund dieser Annahme ist wieder die Untersuchung der Flugzeuginstanzen. Hier haben die Passagiere nur zwei Möglichkeiten, in welcher Richtung
sie den Gang begehen können, um zu einem Ausgang zu gelangen. Da alle
Passagiere entlang den Erstpfaden aus Lj zu ej gelangen müssen, werden
diese Passagiere in diesen Instanzen den Gang in gleicher Richtung betreten.
Die entfernten Pfade haben dort mit den nicht entfernten Erstpfaden einen
nicht zu vernachlässigenden Teilpfad gemeinsam. Damit die dj Passagiere
diesen nicht mehr benutzen sollen, werden sie durch die Unterheuristik zu
einem anderen Ausgang geleitet, so dass der erwähnte Teilpfad vermieden
wird. Damit sich die Passagiere, welche in sπj (1) , . . . , sπj (dj ) starten, nicht
den restlichen Passagieren, welche über el die Senke erreichen, begegnen
sollen, liegt es auf der Hand die dj längsten Erstpfade zu eliminieren.
Ferner besteht die Idee nur Erstpfade Lj zu eliminieren darin, dass für
jede der Quellen sπ(i) maximal einmal ein alternativer sπ(i) -t-Pfad berechnet
werden soll. Wenn wir das nicht verhindern würden, könnte es häufig passieren, dass ein alternativer Pfad zu einem alternativen Pfad wieder einem
Erstpfad entspricht und wir somit nichts gewonnen hätten.
Den soeben beschriebenen Entlastungsvorgang wenden wir nun auf alle
überdurchschnittlichen Listen an. Daher sei o. E. d1 ≥ d2 ≥ . . . ≥ dh > 0 ≥
dh+1 ≥ . . . ≥ dk (ansonsten nummerieren wir die Listen um). Wir wenden
diesen Vorgang nacheinander auf L1 , . . . , Lh an. Danach sortieren wie die
3.3 Die Ausgangentlastungs-Heuristik
75
Listen bzgl. ihrer Länge, so dass |Lπ0 (1) | ≥ |Lπ0 (2) | ≥ . . . |Lπ0 (k) | mit einer
geeigneten Permutation π 0 gilt. Anschließend sortieren wir alle Pfade bzgl.
τ aufsteigend in jeder Liste |Lπ0 (i) | (1 ≤ i ≤ k). Dabei entstehe L∗i durch das
Umsortieren der Pfade in Lπ0 (i) . Danach berechnen wir das Transshipment
fL∗1 ,...,L∗k so, wie es im Abschnitt 3.1 beschrieben ist. Daher ist es zulässig und
genügt der Balancefunktion b, da jede Quelle nur einmal als Startknoten auf
einem der Pfade aus L∗1 , . . . , L∗k auftritt.
Die Idee der Wahl dieser Reihenfolge der Pfade, welche durch die Sortiervorgänge entsteht und somit den Fluss induziert und insbesondere der Bevorzugung von Pfaden, die in Listen stärker frequentierter Ausgänge enthalten
sind, ist die, dass Flusseinheiten, die über stärker frequentierten Ausgänge
die Senke t erreichen, so wenig wie möglich in Knoten zwischengespeichert
werden sollen.
76
1
2
3
4
5
6
Heuristiken
Data : Ein Netzwerk (G, u, τ, S + , t), Ausgangsmenge
E = {e1 , . . . , ek }
Berechne die Indexmengen I1 , . . . , Ik gemäss der Unterheuristik;
initialization;
foreach s ∈ S + : do
Berechne den kürzesten s-t Weg Ps bzgl. τ ;
Bestimme den Ausgang ej über welchen die Senke erreicht wird;
Füge Ps in die Pfadliste Lj ein;
end
+
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
D := |Sk | ;
for ej ∈ E: do
Sortiere Lj absteigend;
Füge Lj in L ein; dj := |Lj | − D;
end
Sortiere L absteigend;
foreach Lj ∈ L: do
counter := 0;
if dj > 0 then
foreach Pi ∈ Lj : do
si := Source(Pi )
if umgeleitet(si ) == f alse and counter ≤ dj then
A∗ := A \ {(el , t) ∈ A : l ∈ Ij };
G∗ := (V, A∗ );
Pi∗ :=shortestpathG∗ (si , t) bzgl. τ ;
Bestimme den Ausgang el mit (el , t) ∈ APi∗ ;
Füge Pi∗ in die Pfadliste Ll ein;
Lösche Pi aus Lj ;
umgeleitet(si ) := true;
counter + +;
end
end
end
end
Sortiere L absteigend;
foreach Lj ∈ L: do
Sortiere Lj aufsteigend;
foreach Pi ∈ Lj : do
θ := 0;
foreach a ∈ APi : do
while f (a, θ) = u(a) do
θ + +;
end
f (a, θ) + +;
θ + +;
end
end
end
Algorithmus 3.3 : Die Ausgangentlastungs-Heuristik
77
3.4 Die kürzeste Fahrzeit Heuristik
Wir analysieren nun die Laufzeit. Die Berechnung der Indexmengen hat
eine Laufzeit von O(k(m + n log n) + n2 ). Die Berechnung der Erstpfade,welche wie in der kürzesten Wege Heuristik durchgeführt wird, und das
Erzeugen der Listen Lj für (1 ≤ j ≤ k) benötigt O(m + n log n + n · |S + |) an
Zeit. Das Sortieren von L kann hier mit Bucketsort erfolgen und benötigt
daher O(k + |S + |) an Laufzeit. Danach werden höchstens |S + | viele Alternative Pfade berechnet, deren Berechnung jeweils O(m + n log n) an Zeit
benötigt. Das Sortieren von L kostet wieder Linearzeit. Bis hier haben wir
bereits O((|S + | + k)(m + n log n) + n2 ) an Laufzeit verbraucht.
Dann betrachten wir die äußere Schleife (Zeile 32-44) der eigentlichen Flussberechnung. Sie wird k mal durchlaufen. Jeweils wird in Zeit
O(n) eine Liste sortiert. In den k Durchläufen der äußeren Schleife werden aber wieder insgesamt |S + | Flusseinheiten verschickt, so dass wir diesen Teil mit O(n · |S + |2 + k · n) abschätzen können. Insgesamt haben wir
O((|S + | + k)m + n((|S + | + k) log n + |S + |2 ) + n2 ).
Zusammenfassend haben wir insgesamt folgenden Sachverhalt:
Theorem 3.7. Der Algorithmus der Ausgangentlastungs-Heuristik hat eine
Laufzeit von O((|S + |+k)m+n((|S + |+k) log n+|S + |2 )+n2 ) und berechnet ein
dynamisches b-Transshipment dessen Zeithorizont höchstens n · |S + | beträgt.
3.4
Die kürzeste Fahrzeit Heuristik
Diese Heuristik ist eine weitere Modifikation der kürzesten Wege Heuristik. Auch in dieser Heuristik bilden die kürzesten Pfade von den Quellen zu
der Senke die Grundlage. Da auch hier wieder die Alternativausgang Unterheuristik benötigt werden wird, werden ganz am Anfang zunächst die
Indexmengen I1 , . . . , Ik berechnet.
Die Idee, die zu dieser Heuristik führt, ist die, dass man beim Evakuieren
den Ausgang wählt, der die geringste Fahrzeit inklusive Wartezeit mit sich
bringt. Der kürzeste Weg bzgl. der Entfernung ist i. A. nicht immer der
schnellste.
Die Modifikation in dieser Heuristik ist anfangs wie bei der
Ausgangentlastungs-Heuristik, dass die berechneten Pfade gemäß der Ausgänge differenziert werden, über welche die entsprechenden Flusseinheiten
die Senke erreichen. Die Heuristik berechnet daher wieder die kürzesten Wege von allen Quellen zur Senke. Wie in den Heuristiken zuvor werden wir
wieder ein dynamisches Transshipment von der Form f[P1∗ ,...,P ∗ + ] berechnen.
|S
|
∗
Wir beschreiben nun, wie wir die Pfade P1∗ , . . . , P|S
+ | ermitteln.
Für jeden der Ausgänge e1 , . . . , ek ∈ E (1 ≤ k < n) erstellen wir eine
Liste Lk . Die zuvor berechneten Pfade fügen wir in die Liste Li ein, wenn
sie die Kante (ei , t) enthalten.
Die Pfade in den Listen Li (1 ≤ i ≤ k) werden jeweils aufsteigend bzgl.
τ sortiert. Dann werden die Listen nacheinander, beginnend mit der Liste,
78
Heuristiken
welche die meisten Pfade enthält, untersucht. O. E. sei |Lk | ≥ . . . ≥ |L1 |,
wobei |Li | die Länge der Liste Li bezeichnet (1 ≤ i ≤ k), da wir sonst
umnummerieren. Ferner nummerieren wir dann die Pfade der Reihe nach
(beginnend mit den Pfaden aus Lk ) in der Liste L durch, welche durch
Konkatenation von Lk , . . . , L1 entsteht. Somit bezeichnen wir nun die bisher
berechneten Pfade mit P1 , . . . , P|S + | und dabei sei si ∈ S + der Startknoten
auf dem Pfad Pi für 1 ≤ i ≤ |S + |. Die Idee die Liste mit den meisten
Pfaden zuerst zu untersuchen, ist wie in der Ausgangentlastungs-Heuristik,
stark frequentierte Ausgänge zu entlasten, indem wir gewisse Pfade durch
alternative Pfade ersetzen, welche dann in die Flussberechnung eingehen
werden.
Die Idee des nachfolgenden Vorgangs ist die, einen Pfad Pi∗ unter Ein∗
beziehung der bisher aktuell berechneten Pfade P1∗ , . . . , Pi−1
bzw. des bis∗ ] zu bestimmen, so dass die Fahrzeit der
her berechneten Flusses f[P1∗ ,...,Pi−1
Flusseinheit, welche im Fluss f[P1∗ ,...,Pi∗ ] in si startet und nach t entlang Pi∗
verschickt werden soll, möglichst gering sein soll.
Die Flussberechnung beginnt mit dem Fluss f[P1 ] . Dieser ist nach Bemerkung 3.3 zulässig und hat einen Zeithorizont τ (P1 ) + 1. Wir setzen nun
P1∗ := P1 . Wir beschreiben nun induktiv, wie wir den Pfad Pi∗ bestimmen,
∗
um f[P1∗ ,...,Pi∗ ] zu berechnen, wenn die Pfade P1∗ , . . . , Pi−1
bekannt sind und
∗ ] bekannt ist. Zunächst berechnen wir einen
somit auch der Fluss f[P1∗ ,...,Pi−1
alternativen si -t-Pfad P̃i gemäß der Unterheuristik in Abschnitt 3.2. Dann
∗ ,P ] und g̃ := f ∗
berechnen wir g := f[P1∗ ,...,Pi−1
i
[P ,...,P ∗ ,P̃i ] . Dabei seien die
1
i−1
Zahlen ∆ij diejenigen, die in der wiederholten Anwendung der Formel (*)
aus Abschnitt 3.1 entstehen (1 ≤ j ≤ |APi |). Wenn a = (v, w) die j-te Kante auf dem Pfad Pi ist, bezeichnet ∆ij die Dauer der Flussspeicherung des
Flusses g im Knoten v. Falls gemäss g in v kein Fluss gespeichert wird, gilt
∆ij = 0.
Analog bezeichnen wir mit ∆˜i die Dauer der Flussspeicherung im Knoten
j
ṽ, wenn ã = (ṽ, w̃) die j-te Kante auf P̃i ist, wenn wir Formel (*) wie in
Abschnitt 3.1 wiederholt anwenden. Wir vergleichen nun die Fahrzeiten,
welche die Flusseinheit, die in si starten muss, bzgl. des Flusses g und g̃ hat.
P|Pi | i
P|P̃i | ˜i
Sie beträgt Ti = τ (Pi ) + j=1
∆j + 1 bei g und T̃i = τ (P̃i ) + j=1
∆j + 1
∗
bei g̃. Gilt Ti ≤ T̃i setzen wir Pi = Pi und erhalten dadurch f[P1∗ ,...,Pi∗ ] = g.
Andernfalls setzen wir Pi∗ = P̃i und erhalten damit f[P1∗ ,...,Pi∗ ] = g̃.
∗
Auf diese Weise erhalten wir die Pfade P1∗ , . . . , P|S
+ | und dadurch den
Fluss f[P1∗ ,...,P ∗ + ] , welcher unser gesuchtes Transshipment ist. Dieses ist
|S
|
zulässig, da es wie in Abschnitt 3.1 konstruiert wurde und es ist ein bTransshipment, da auch hier jede Quelle konstruktionsbedingt nur einmal
∗
als Startknoten auf einem der Pfade P1∗ , . . . , P|S
+ | erscheint.
3.4 Die kürzeste Fahrzeit Heuristik
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
Data : Ein Netzwerk (G, u, τ, S + , t), Ausgangsmenge
E = {e1 , . . . , ek }
Berechne die Indexmengen I1 , . . . , Ik gemäss der Unterheuristik;
foreach s ∈ S + : do
Berechne den kürzesten s-t Weg Ps bzgl. τ ;
Bestimme den Ausgang ej , über welchen die Senke erreicht wird;
Füge Ps in die Pfadliste Lj ein;
end
for ej ∈ E: do
Sortiere Lj aufsteigend;
Füge Lj in L ein;
end
Sortiere L absteigend;
foreach Lj ∈ L: do
foreach Pi ∈ Lj : do
si := Source(Pi );
A∗ := V \ {(el , t) : l ∈ Ij };
G̃ := (V, A∗ );
P̃i := shortestpathG̃ (si , t) bzgl. τ ;
f 0 := f ;
θ := 0;
foreach a ∈ APi : do
while f 0 (a, θ) = u(a) do
θ + +;
end
f 0 (e, θ) + +;
θ + +;
end
f˜ := f ;
θ̃ := 0;
foreach a ∈ AP̃i : do
while f˜(a, θ) = u(a) do
θ̃ + +;
end
f˜(e, θ̃) + +;
θ̃ + +;
end
if θ ≤ θ̃ then
f := f 0 ;
else
f := f˜;
end
end
end
Algorithmus 3.4 : Die Kürzeste Fahrzeit Heuristik
79
80
Heuristiken
Betrachten wir die Laufzeit dieser Heuristik. Am Anfang werden wieder die Indexmenge, welche die verwendete Unterheuristik benötigt, in Zeit
O(k(m + n log n) + n2 ) berechnet. Die Berechnung der kürzesten Pfade und
das Erzeugen der Listen Lj (1 ≤ j ≤ k) benötigt wie in den vorigen Heuristiken eine Laufzeit von O(m + n log n + n · |S + |). Das Sortieren der k Listen
Lj und das Erzeugen von L benötigt O(n · k) Zeit. Das Sortieren der Liste L
benötigt eine Laufzeit von O(k + |S + |). Danach wird in einer Schleife (Zeile
11-41) insgesamt |S + | mal der Fluss f aktualisiert. Dazu muss für jede Quelle si ∈ |S + | ein alternativer Pfad bestimmt werden, was O(m + n log n) an
Laufzeit kostet. Die Schleifen, die jeweils die Kanten aus dem Erstpfad (Zeile 19-25)und dem Alternativpfad (Zeile 28-34) betrachten, benötigen jeweils
maximal |S + | Iterationen pro Kante. Damit benötigt das Aktualisieren von f
insgesamt O(|S + |(m+n log n+n|S + |)) an Laufzeit. Insgesamt hat diese Heuristik daher eine Laufzeit von O((|S + |+k)m+n((|S + |+k) log n+|S + |2 )+n2 ).
Auch hier sehen wir ohne Schwierigkeiten, dass folgende Aussage zutrifft.
Theorem 3.8. Dieser Algorithmus der kürzesten Fahrzeit Heuristik hat eine
Laufzeit von O((|S + | + k)m + n((|S + | + k) log n + |S + |2 ) + n2 ) und berechnet
ein zulässiges b-Transshipment mit einem Zeithorizont von höchstens n|S + |.
3.5
Ein kleines Beispiel
Um die Arbeitsweise der Heuristiken etwas anschaulicher zu gestalten, stellen wir im Folgenden eine kleine Netzwerkinstanz vor und werden anhand
dieses Netzwerkes die Heuristiken anwenden.
4
3
13
2
1
11
8
9
12
7
6
5
0
17
14
15
16
18
10
Abbildung 3.3: Der Graph der kleinen Netzwerkinstanz
81
3.5 Ein kleines Beispiel
Wir betrachten das Netzwerk N = (G, u, τ, S + , t) mit V = {0, . . . , 18}
und
A = {(4, 2), (3, 1), (5, 7), (0, 6), (2, 8), (7, 8), (1, 9), (6, 9), (8, 9), (9, 8),
(8, 11), (11, 12), (11, 13), (9, 14), (14, 15), (15, 16), (16, 17), (16, 18),
(13, 10), (12, 10), (17, 10), (18, 10)}.
In Abbildung 3.3 sehen wir eine Visualisierung des Graphen G.
Weiterhin sei S + = {0, 1, 2, 3, 4, 5, 6, 7} und t = 10. Die Menge E der
Ausgänge ist dadurch mit E = {12, 13, 17, 18} festgelegt. Die Kapazitäten,
Knotenbalancen und Fahrzeiten sind wie in der Generalvoraussetzung, welche am Anfang dieses Kapitels festgelegt wurde, definiert. Wir betrachten
zunächst die Pfadzerlegung eines Earliest Arrival Transshipments. Darauffolgend berechnen wir nacheinander, basierend auf der jeweiligen Heuristik,
ein Transshipment.
Für i ∈ S + sei Pi ein kürzester i-10-Pfad. Wir führen ferner folgende
Notation zur Beschreibung eines Transshipments ein. Für Kanten ar ∈ A
(1 ≤ r) schreiben wir i → [a1 , j1 ] → [a2 , j2 ] → . . . → [al , jl ] um hervorzuheben, dass in dem zu beschreibenden Transshipment zu den Zeitpunkten
0 ≤ j1 ≤ j2 ≤ . . . ≤ jl die Flusseinheit, welche im Knoten i gestartet ist, die
Kante ar zum Zeitpunkt jr für alle 1 ≤ r ≤ l betritt.
3.5.1
Eine Pfadzerlegung eines Earliest Arrival Transshipments
Wir beschreiben nun pfadweise ein Earliest Arrival Transshipment, welches
einen Zeithorizont von 8 besitzt, mit Hilfe der soeben eingeführten Notation. Das Transshipment und die Pfadzerlegung haben wir mittels einer Implementation von Algorithmus 2.4 berechnet. Für Implementationsdetails
verweisen wir auf den Abschnitt 3.6.
7 →[(7, 8), 0]→[(8, 11), 1]→[(11, 13), 2]→[(13, 10), 3]
2 →[(2, 8), 1]→[(8, 11), 2]→[(11, 13), 3]→[(13, 10), 4]
3 →[(3, 1), 0]→[(1, 9), 1] →[(9, 8), 2]
→[(8, 11), 3] →[(11, 13), 4] → [(13, 10), 5]
1 →[(1, 9), 0]→[(9, 14), 1]→[(14, 15), 2]→[(15, 16), 3]→[(16, 17), 4] → [(17, 10), 5]
5 →[(5, 7), 2]→[(7, 8), 3] →[(8, 11), 4] →[(11, 13), 5]→[(13, 10), 6]
6 →[(6, 9), 1]→[(9, 14), 2]→[(14, 15), 3]→[(15, 16), 4]→[(16, 17), 5] → [(17, 10), 6]
4 →[(4, 2), 2]→[(2, 8), 4] →[(8, 11), 5] →[(11, 13), 6]→[(13, 10), 7]
0 →[(0, 6), 0]→[(6, 9), 2] →[(9, 14), 3] →[(14, 15), 4]→[(15, 16), 5] → [(16, 17), 6] → [(17, 10), 7]
An dieser speziellen Pfadzerlegung des berechneten Earliest Arrival
Transshipments fällt auf, dass nicht alle i-10-Pfade mit i ∈ S + kürzeste i-10Pfade sind. Die Flusseinheiten, die in 1, 6 und 0 starten, erreichen die Senke
82
Heuristiken
10 über längere Pfade. Weiterhin kann man erkennen, dass die Kapazitätsbedingungen auf den Kanten eingehalten eingehalten werden, da jedes Tupel
[a, j] in der obigen Zerlegung höchstens einmal vorkommt. Würde ein Tupel
[a, j] existieren, welches zweimal vorkommt, so würde es zwei Flusseinheiten
geben, die in unterschiedlichen Quellen gestartet sind und zum Zeitpunkt
j die Kante a betreten. Da wegen der Generalvoraussetzung u(a) = 1 gilt,
wäre somit die Kapazitätsbedingung verletzt, da höchstens eine Flusseinheit
zum Zeitpunkt j die Kante a betreten darf.
Wir erläutern kurz die Notation anhand der Flusseinheit, welche in Knoten 4 startet. Da diese erst zum Zeitpunkt 2 die Kante (4, 2) betritt, erfolgt
offensichtlich Flussspeicherung im Knoten 4. Zum Zeitpunkt 3 wird die Kante (2, 8) von der Flusseinheit, welche in Knoten 4 gestartet ist, nicht betreten.
Dies erfolgt erst zum Zeitpunkt 4. Somit erfolgt auch im Knoten 2 Flussspeicherung. Zum Zeitpunkt 5 betritt sie die Kante (8, 11), zum Zeitpunkt
6 betritt sie die Kante (11, 13) und zum Zeitpunkt 7 betritt sie die Kante
(13, 10). Nach einer weiteren Zeiteinheit (wegen τ ((11, 13)) = 1), verlässt sie
das Netzwerk.
3.5.2
Anwendung der kürzesten Wege Heuristik
Die kürzeste Wege Heuristik berechnet zunächst kürzeste Pfade von allen
Knoten aus i ∈ S + zu der Senke 10. Die kürzesten Pfade Pi beschreiben wir
nur durch Angabe der Knotenmenge VPi da in diesem Beispiel klar ist wie
dann die Menge APi beschaffen sein muss. Die Heuristik kann z. B. folgende
Mengen ermitteln:
VP0 = {0, 6, 9, 8, 11, 12, 10}
VP1 = {1, 9, 8, 11, 12, 10}
VP2 = {2, 8, 11, 12, 10}
VP3 = {3, 1, 9, 8, 11, 12, 10}
VP4 = {4, 2, 8, 11, 12, 10}
VP5 = {5, 7, 8, 11, 12, 10}
VP6 = {6, 9, 8, 11, 12, 10}
VP7 = {7, 8, 11, 12, 10}
Nun erstellen wir die Liste L bestehend aus den Pfaden P0 , . . . , P7 . Diese
Sortieren wir aufsteigend nach der Länge der Pfade. Danach haben wir L =
[P7 , P2 , P6 , P4 , P1 , P5 , P3 , P0 ]. Wir beschreiben nun mittels unserer speziellen
Notation wie wir das Transshipment schrittweise bestimmen.
Wir beginnen mit P7 und berechnen f[P7 ] . Beschrieben wird es durch:
7 → [(7, 8), 0] → [(8, 11), 1] → [(11, 12), 2] → [(12, 10), 3].
Wir berechnen nun f[P7 ,P2 ] und versuchen nun dabei die Flusseinheit zu
3.5 Ein kleines Beispiel
83
verschicken, welche in Knoten 2 startet. Diese kann die Kante (2, 8) zum
Zeitpunkt 0 betreten. Die Kante (8, 11) kann sie nicht zum Zeitpunkt 1
betreten, da die Kante zu diesem Zeitpunkt von der Flusseinheit, die im
Knoten 7 gestartet ist, bereits betreten wird. Daher wird die Flusseinheit
für eine Zeiteinheit im Knoten 8 zwischengespeichert und betritt die Kante
(8, 11) zum Zeitpunkt 2. Danach kann die Flusseinheit die Kante (11, 12)
zum Zeitpunkt 3 und die Kante (12, 10) zum Zeitpunkt 4 betreten. Der
berechnete Fluss wird zusätzlich mit 7 → . . . und der Folgenden Notation
beschrieben:
2 → [(2, 8), 0] → [(8, 11), 2] → [(11, 12), 3] → [(12, 10), 4].
Bis zu dieser Stelle haben wir durch die Notation den Fluss f[P7 ,P2 ] beschrieben. Wir untersuchen nun den Pfad P6 . Die Flusseinheit, welche in 6 startet,
kann zum Zeitpunkt 0 die Kante (6, 9) und zum Zeitpunkt 1 die Kante (9, 8)
betreten. Um Kapazitätsverletzung zu vermeiden kann sie die Kante (8, 11)
erst zum Zeitpunkt 3 betreten. Danach ist keine Flussspeicherung in einem
Zwischenknoten mehr erforderlich. Wir haben dann:
6 → [(6, 9), 0] → [(9, 8), 1] → [(8, 11), 3] → [(11, 12), 4] → [(12, 10), 5].
Die Flusseinheit die in 4 startet, kann die Kante (4, 2) zum Zeitpunkt 0
betreten, da die Kante dann noch von keiner andere Flusseinheit betreten
wird. Zum Zeitpunkt 1 kann sie die Kante (2, 8) betreten. Nun muss die
Flusseinheit bis zum Zeitpunkt 4 warten, bis sie die Kante (8, 11) betreten
kann. Wir haben:
4 → [(4, 2), 0] → [(2, 8), 1] → [(8, 11), 4] → [(11, 12), 5] → [(12, 10), 6].
Die Flusseinheit, welche entlang P1 verschickt wird, kann zwar zum Zeitpunkt 0 die Kante (1, 9) aber erst zum Zeitpunkt 2 die Kante (9, 8) betreten.
Danach muss sie die Kante (8, 11) passieren, was aber frühestens zum Zeitpunkt 5 möglich ist. Deswegen wird diese Flusseinheit in Knoten 8 ebenfalls
zwischengespeichert. Danach ist in den weiteren Knoten des Pfades keine
Flussspeicherung mehr erforderlich. Wir haben:
1 → [(1, 9), 0] → [(9, 8), 2] → [(8, 11), 5] → [(11, 12), 6] → [(12, 10), 7].
Entlang des Pfades P5 kann die in Knoten 5 startende Flusseinheit die Kante (5, 7) zum Zeitpunkt 0 und die Kante (7, 8) zum Zeitpunkt 1 betreten.
Die die Kante (8, 11) frühestens zum Zeitpunkt 6 zu Verfügung steht, muss
diese Flusseinheit zunächst auch im Knoten 8 zwischengespeichert werden.
Danach, bis zum erreichen der Senke 10 ist keine Flussspeicherung dieser
Flusseinheit in einem Zwischenknoten erforderlich. Wir haben weiter:
5 → [(5, 7), 0] → [(7, 8), 1] → [(8, 11), 6] → [(11, 12), 7] → [(12, 10), 8].
Wir verschicken nun die Flusseinheit, welche in 3 startet. Sie kann zwar zum
Zeitpunkt 0 die Kante (3, 1) und zum Zeitpunkt 1 die Kante (1, 9) betreten,
aber sie muss (wegen P1 ) bis zum Zeitpunkt 3 warten, bis sie die Kante (9, 8)
betreten darf. Dann muss sie (wegen P4 , P1 und P5 ) bis zum Zeitpunkt 7
warten, bis sie die Kante (8, 11) betreten kann. Danach kann sie alle weiteren
Kanten so früh wie möglich betreten. Wir haben:
3 → [(3, 1), 0] → [(1, 9), 1] → [(9, 8), 3] → [(8, 11), 7] → [(11, 12), 8] →
84
Heuristiken
[(12, 10), 9].
Die letzte Flusseinheit, des letzten Pfades, welcher nun untersucht wird,
kann die Kanten (0, 6) zum Zeitpunkt 0 und die Kante (6, 9) zum Zeitpunkt
1 betreten. Die Kante (9, 8) kann sie frühestens zum Zeitpunkt 4 und die
Kante (8, 11) frühestens zum Zeitpunkt 8 betreten. Die weiteren Kanten
betritt sie nacheinander zum Zeitpunkt 9, 10 und 11. Schließlich haben wir:
0 → [(0, 6), 0] → [(6, 9), 1] → [(9, 8), 4] → [(8, 11), 8] → [(11, 12), 8] →
[(12, 10), 10].
Somit haben wir vollständig mit Hilfe unserer Notation die Pfadzerlegung
von fL und somit fL selbst beschrieben, da genau durch jedes Tupel [a, j],
welches in unserer Notation aufgeführt wurde, die Beziehung fL (a, j) = 1
induziert wird. Dieses Transshipment besitzt den Zeithorizont 11.
3.5.3
Anwendung der Ausgangentlastungs-Heuristik
Wie wir im vorigen Unterabschnitt des Beispiels gesehen haben, haben alle
Flusseinheiten die Senke über den gleichen Ausgang erreicht. Dadurch gab
es viele Zwischenknoten (z. B. Knoten 8) auf dem Weg zur Senke, auf denen
sich der Fluss gestaut hatte. Geschickter ist es, wenn, wie in dem Earliest Arrival Transshipment, nicht alle Flusseinheiten über den gleichen Ausgang die
Senke erreichen. Diese Idee verfolgt die Ausgangentlastungs-Heuristik. Sie
versucht nun die Anzahl der Flusseinheiten, welche überdurchschnittliche
Ausgänge (vgl. Abschnitt 3.3) erreichen, zu reduzieren, indem alternative
Pfade verwendet werden. Zuvor müssen wir noch unsere Unterheuristik verwenden, um gezielt bei der Berechnung der alternativen Pfade, Ausgänge
verbieten zu können.
Die Unterheuristik und die Berechnung der Indexmengen. Wir
indizieren nun die Ausgänge indem wir e1 = 12, e2 = 13, e3 = 17 und e4 =
18 setzen. Wir berechnen für jeden Ausgang ej (j = 1, . . . , 4) nun eine
Menge von anderen Ausgängen, welche im Falle von Vermeidung von ej
ebenfalls vermieden werden müssen. Wir stellen fest, dass im G[V \ {t}]
zugrundeliegenden ungerichteten Graphen G0 die Ausgänge e1 und e2 den
Abstand zwei haben. Diese Beziehung gilt auch zwischen den Ausgängen
e3 und e4 . Längere sowie kürzere Abstände treten als kürzester Abstand
zwischen zwei Ausgängen nicht auf. Somit setzen wir Ij := {i ∈ {1, 2, 3, 4} :
distG0 (ei , ej ) ≤ 2}. Somit erhalten wir I1 = I2 = {1, 2} und I3 = I4 = {3, 4}.
Um Erstpfade Pi , welche den Ausgang 12 verwenden, durch alternative Pfade
P̃i ersetzen zu können, müssen wir diese alternativen Pfade zuvor durch
kürzeste Pfad-Berechnungen auf G∗ = (V, E \ {(12, 10), (13, 10)}) gewinnen.
Die Entlastungsphase. Zunächst bestimmt die Heuristik die Erstpfade. Als diese könnten wieder P0 , . . . , P7 , wie im vorigen Unterabschnitt,
3.5 Ein kleines Beispiel
85
berechnet werden. Nun erfolgt eine Zuordnung der Pfade zu Listen, welche wiederum einem Ausgang zugeordnet sind. Da alle Erstpfade die Kante (e1 , 10) enthalten, setzen wir L1 = [P0 , . . . , P7 ]. Die Listen L2 , L3 und
L4 bleiben zunächst leer. Nach Sortieren (absteigend bzgl. τ ) haben wir
L1 = [P0 , P3 , P5 , P1 , P4 , P6 , P2 , P7 ]. Da wir 8 Flusseinheiten verschicken müssen und vier Ausgänge haben, ist ein Ausgang hier überdurchschnittlich,
wenn mehr als zwei Flusseinheiten ihn über die Erstpfade erreichen. Dies
trifft nur auf den Ausgang e1 = 12 zu. Die Heuristik verteilt nun 6 Flusseinheiten auf andere Ausgänge um, wo dabei durch die Unterheuristik der
Ausgang 13 ausscheidet. Sie berechnet nun für die längsten sechs Erstpfade,
d. h. für die ersten sechs Pfade aus L1 alternative Pfade. Diese beschreiben
wir wieder nur durch Nennung der Knotenmengen:
VP˜0 = {0, 6, 9, 14, 15, 16, 17, 10}
VP˜3 = {3, 1, 9, 14, 15, 16, 17, 10}
VP˜5 = {5, 7, 8, 9, 14, 15, 16, 17, 10}
VP˜1 = {1, 9, 14, 15, 16, 17, 10}
VP˜4 = {4, 2, 8, 9, 14, 15, 16, 17, 10}
VP˜6 = {6, 9, 14, 15, 16, 17, 10}
Nach Entlastung des Ausganges 12 haben wir nun L1 = [P2 , P7 ] und L3 =
[P˜0 , P˜3 , P˜5 , P˜1 , P˜4 , P˜6 ]. Da L3 keine Erstpfade enthält wird L3 nicht entlastet.
Die verbliebenen Listen bleiben leer. Erreicht haben wir bis jetzt, dass sich
die Summe der Mehr- bzw. Minderauslastung der Ausgänge bezogen auf
die gewünschte Durchschnittsauslastung verringert hat, d. h. der Ausdruck
||L1 | − 2| + ||L2 | − 2| + ||L3 | − 2| + ||L4 | − 2| hat sich im Vergleich zu dem
Zeitpunkt vor der Entlastungsphase verkleinert.
Die Flussberechnung. Wir werden mit den Pfaden die Flussberechnung
starten, welche zusammen die Liste mit den meisten Pfaden repräsentieren.
In diesem Fall beginnen wir mit den Pfaden aus L3 . Genauer beginnen wir
die Berechnung mit den Pfaden aus L3 , welche am kürzesten sind. Hierzu
sortieren wir bzgl. der Pfadlänge diese Liste noch einmal (diesmal aufsteigend bzgl. τ ) und erhalten L3 = [P˜6 , P˜1 , P˜0 , P˜3 , P˜5 , P˜4 ]. Wir berechnen nun
fL3 . Dies geschieht analog wie im Unterabschnitt 3.5.2. Wir beschreiben
daher fL3 direkt mit unserer speziellen Notation.
86
Heuristiken
6 →[(6, 9), 0]→[(9, 14), 1]→[(14, 15), 2]→[(15, 16), 3]→[(16, 17), 4]→[(17, 10), 5]
1 →[(1, 9), 0]→[(9, 14), 2]→[(14, 15), 3]→[(15, 16), 4]→[(16, 17), 5]→[(17, 10), 6]
0 →[(0, 6), 0]→[(6, 9), 1] →[(9, 14), 3] →[(14, 15), 4]→[(15, 16), 5]→[(16, 17), 6]→[(17, 10), 7]
3 →[(3, 1), 0]→[(1, 9), 1] →[(9, 14), 4] →[(14, 15), 5]→[(15, 16), 6]→[(16, 17), 7]→[(17, 10), 8]
5 →[(5, 7), 0]→[(7, 8), 1] →[(8, 9), 2]
→[(9, 14), 5] →[(14, 15), 6]→[(15, 16), 7]→[(16, 17), 8]
4 →[(4, 2), 0]→[(2, 8), 1] →[(8, 9), 3]
→[(9, 14), 6] →[(14, 15), 7]→[(15, 16), 8]→[(16, 17), 9]
→[(17, 10), 9]
→[(17, 10), 10]
Danach untersucht die Heuristik, nach dem Umsortieren von L1 , nacheinander die Pfade P2 und P7 und verschickt die verbliebenen zwei Flusseinheiten. Wir haben weiter:
2 →[(2, 8), 0]→[(8, 11), 1]→[(11, 12), 2]→[(12, 10), 3]
7 →[(7, 8), 0]→[(8, 11), 2]→[(11, 12), 3]→[(12, 10), 4]
Insgesamt haben wir durch die obige Notation das Transshipment fL3 ,L1
beschrieben, welches die Ausgangentlastungs-Heuristik ermittelt hat bzw.
haben könnte (Je nach Implementation der Datenstrukturen könnte das Ergebnis auch anders ausfallen, da z. B. auch Pfade als Erstpfade möglich wären, in welchen statt der Kante (12, 10) die Kante (13, 10) enthalten wäre).
Dieses Transshipment besitzt offensichtlich den Zeithorizont 11.
3.5.4
Anwendung der kürzesten Fahrzeit Heuristik
In diesem Unterabschnitt wenden wir nun die kürzeste Fahrzeit Heuristik auf
unsere kleine Netzwerkinstanz an. Wie bei der Ausgangentlastungs-Heuristik
würde an dieser Stelle zuerst die Berechnung der Indexmengen erfolgen. Da
wir dies bereits im vorigen Abschnitt getan haben, übernehmen wir diese Berechnung. Ebenso können wir annehmen, dass diese Heuristik wieder die Pfade P0 , . . . P7 als Erstpfade ermittelt hat. Weiterhin werden wir für jeden Pfad
auch einen Alternativpfad bestimmen. Wir beginnen nun mit der Flussberechnung, indem wir den kürzesten Erstpfad zuerst untersuchen. Wir untersuchen nacheinander die Pfade P7 , P2 , P6 , P4 , P1 , P5 , P3 , P0 und ermitteln die
Pfade P7∗ , P2∗ , P6∗ , P4∗ , P1∗ , P5∗ , P3∗ , P0∗ . Als ein Pfad Pi∗ kommt entweder der
Erstpfad Pi oder ein Alternativpfad P̃i in Frage, welche die Heuristik jeweils
berechnet. Wir beschreiben nun im Folgenden mit Hilfe unserer Notation
in Fettschrift das zu berechnende Transshipment f[P7∗ ,P2∗ ,P6∗ ,P4∗ ,P1∗ ,P5∗ ,P3∗ ,P0∗ ] .
87
3.5 Ein kleines Beispiel
Dazwischen beschreiben wir in Normalschrift die Pfade, welche die Heuristik im Verlaufe der Berechnung verworfen hat. Danach verdeutlichen wir
anhand einiger Beispielpfade wieso sich die Heuristik für die mit Fettschrift
beschriebenen Pfade entschieden hat. Desweiteren beachten wir, dass in der
nun folgenden Beschreibung Alternativpfade, welche die Heuristik berechnet, anhand der enthaltenden Kante (17, 10) zu erkennen sind. Andernfalls
handelt es sich um die berechneten Erstpfade.
7 →[(7, 8), 0]→[(8, 11), 1]→[(11, 12), 2]→[(12, 10), 3]
7 →[(7, 8), 0] →[(8, 9), 1] →[(9, 14), 2] →[(14, 15), 3] →[(15, 16), 4] →[(16, 17), 5]
→[(17, 10), 6]
2 →[(2, 8), 0]→[(8, 11), 2]→[(11, 12), 3]→[(12, 10), 4]
2 →[(2, 8), 0] →[(8, 9), 1] →[(9, 14), 2] →[(14, 15), 3] →[(15, 16), 4] →[(16, 17), 5]
→[(17, 10), 6]
6 →[(6, 9), 0] →[(9, 8), 1] →[(8, 11), 3] →[(11, 12), 4] →[(12, 10), 5]
6 →[(6, 9), 0]→[(9, 14), 1]→[(14, 15), 2]→[(15, 16), 3]→[(16, 17), 4]→[(17, 10), 5]
4 →[(4, 2), 0]→[(2, 8), 1] →[(8, 11), 3] →[(11, 12), 4]→[(12, 10), 5]
4 →[(4, 2), 0] →[(2, 8), 1] →[(8, 9), 2]
→[(9, 14), 3] →[(14, 15), 4] →[(15, 16), 5]
→[(16, 17), 6] →[(17, 10), 7]
1 →[(1, 9), 0] →[(9, 8), 1] →[(8, 11), 4] →[(11, 12), 5] →[(12, 10), 6]
1 →[(1, 9), 0]→[(9, 14), 2]→[(14, 15), 3]→[(15, 16), 4]→[(16, 17), 5]→[(17, 10), 6]
5 →[(5, 7), 0]→[(7, 8), 1] →[(8, 11), 4] →[(11, 12), 5]→[(12, 10), 6]
5 →[(5, 7), 0] →[(7, 8), 1] →[(8, 9), 2]
→[(9, 14), 3] →[(14, 15), 4] →[(15, 16), 5]
→[(16, 17), 6] →[(17, 10), 7]
3 →[(3, 1), 0] →[(1, 9), 1] →[(9, 8), 2]
→[(8, 11), 5] →[(11, 12), 6] →[(12, 10), 7]
3 →[(3, 1), 0]→[(1, 9), 1] →[(9, 14), 3] →[(14, 15), 4]→[(15, 16), 5]→[(16, 17), 6]
→[(17, 10), 7]
0 →[(0, 6), 0]→[(6, 9), 1] →[(9, 8), 2]
→[(8, 11), 5] →[(11, 12), 6]→[(12, 10), 7]
0 →[(0, 6), 0] →[(6, 9), 1] →[(9, 14), 4] →[(14, 15), 5] →[(15, 16), 6] →[(16, 17), 7]
→[(17, 10), 8]
Wie oben erwähnt, wurden die in der Normalschrift aufgeführten Pfade
von der Heuristik verworfen. Wir erläutern die Gründe für das Verwerfen
am Beispiel der Flusseinheit die im Knoten 7 starten muss und am Beispiel
88
Heuristiken
der Flusseinheit, welche im Knoten 6 starten muss.
Im ersten Falle wählt die Heuristik den Erstpfad aus (d. h. sie setzt P7∗ =
P7 ), da die Fahrzeit für diese Flusseinheit im Fluss f[P7 ] (beschrieben durch
7 → . . .) geringer ausfällt, als wenn sie im Fluss f[P̃7 ] (beschrieben durch
7 → . . .) entlang des berechneten Alternativpfades verschickt worden wäre.
Im zweiten Falle wählt die Heuristik den Alternativpfad aus (P6∗ = P̃6 ),
da im Fluss f[P ∗ ,P ∗ ,P̃6 ] (beschrieben durch 7 → . . ., 2 → . . . und 6 → . . .) die
7
2
Fahrzeit der Flusseinheit, die im Knoten 6 startet im Fluss f[P7∗ ,P2∗ ,P6 ] (beschrieben durch 7 → . . ., 2 → . . . und 6 → . . .) der Fahrzeit der Flusseinheit,
welche dort im Knoten 6 startet, gleicht. Im Falle der Gleichheit verwirft die
Heuristik immer der Erstpfad. Erst recht wird dieser verworfen, wenn die
Fahrtzeit über den selbigen größer wäre.
Wenn wir das Arrival Pattern des durch die Notation in Fettschrift beschriebenen Flusses mit dem Earliest Arrival Pattern vergleichen, so erkennen wir, dass beide gleich sind. In diesem Fall hat die Heuristik ebenfalls ein
Earliest Arrival Transshipment mit Zeithorizont 8 berechnet.
3.6
Die Heuristiken in der Praxis
In diesem Abschnitt untersuchen wir einige Instanzen des Earliest Transshipment Problems. Als Grundlage dazu dienen uns Sitzplatzbelegungspläne die
wir unter der Internetadresse http://www.seatguru.com1 finden können. Anhand dieser Sitzpläne wurden mit Hilfe des Grapheneditors GraphWindow
von LEDA ganzzahlige Netzwerke angefertigt.
LEDA ist eine Sammlung effizienter C++ Bibliotheken, welche uns neben effizienten Datenstrukturen uns auch effiziente Algorithmen, wie z. B.
die Minimalkostenflussberechnung, zur Verfügung stellt. (Für weitere Informationen zu LEDA siehe http://www.algorithmic-solutions.com/)
Die konstruierten Netzwerke entsprechen unserer Generalvoraussetzung,
d. h. wir nehmen an, dass jede Flusseinheit genau eine Zeiteinheit benötigt
um von einem Knoten zu einem adjazenten Knoten zu gelangen. Übertragen
auf unsere Flugzeuge bedeutet dies, dass wir optimistisch annehmen, dass
jeder Fluggast eine konstante Gehgeschwindigkeit hat. Da dies im Notfall
sehr realitätsfern sein kann, können wir das Earliest Arrival Pattern eines
Earliest Arrival Transshipments bzgl. solcher Flugzeuginstanzen zu jedem
Zeitpunkt θ nur als obere Schranke der Passagierzahlen, welche bis zum
Zeitpunkt θ das Flugzeug hätten verlassen können, ansehen. Daher ist der
kleinste Zeithorizont, bzgl. dessen ein Earliest Arrival Transshipment existiert als untere Zeitschranke zu werten, ab welcher es möglich ist, dass alle
Passagiere das Flugzeug verlassen haben können. Eine weitere Eigenschaft
unserer Netzwerke ist, wie in den Generalvoraussetzung zu diesem Kapitel,
dass die Kantenkapazitäten konstant einheitlich sind.
1
Diese Seite existierte zuletzt am 13.10.2007.
3.6 Die Heuristiken in der Praxis
89
Zu diesen Instanzen betrachten wir jeweils vier Algorithmen, die wir
mit der Programmiersprache C++ (GCC Compiler 3.4.6) und LEDA 5.0.1
implementiert haben. Die vier Implementationen sind Implementationen
(1) des exakten Earliest Transshipment Algorithmus (vgl. Algo. 2.4),
(2) der kürzesten Wege Heuristik,
(3) der Ausgangentlastungs-Heuristik,
(4) und der kürzesten Fahrzeit Heuristik.
Da bis zum heutigen Zeitpunkt keine praktikabel umzusetzenden exakten
Algorithmen existieren, haben wir uns entschieden, den exakten Algorithmus 2.4 inklusive der Netzwerkmodifikationen zu implementieren. Wir betonen noch einmal, dass der exakte Algorithmus zeitexpandierte Netzwerke
erzeugt, aber polynomiell auf unseren speziellen Flugzeuginstanzen arbeitet,
da die Zeithorizonte, welche wir hier verwenden, sich durch ein Polynom in n
abschätzen lassen. Trotzdem ist das zeitexpandierte Netzwerk um einen Faktor O(n) größer als das Ausgangsnetzwerk, was sich bei gewissen Instanzen
auch in der absoluten Rechenzeit widerspiegelt.
Sämtliche Instanzen wurden auf einem PC mit einer 64-bit AMD Opteron CPU mit 2,6 GHz und 8 GibiByte RAM berechnet. Als Betriebssystem
wurde Suse Linux 10.2 mit dem Kernel 2.6.18-0.5-default verwendet. Weiterhin ist es sehr wichtig zu erwähnen, dass wir die Optionen -O0 -NDEBUG
beim kompilieren mit GCC verwendet haben.
Die vorgesehene Option -O3 führte im Vergleich zur Verwendung von
-O0 bei den Heuristiken und unverändertem Programmcode immer zu einem anderen (falschen) Ergebnis. Daher haben wir alle Algorithmen mit
der Option -O0 kompiliert, um so die Laufzeiten besser in Vergleich setzen
zu können.
Zu den Flugzeugtypen, die den betrachteten Instanzen zugrunde liegen,
gehören die Flugzeuge Bombardier Q400 (70 Sitzplätze), Airbus A330 (222
Sitzplätze), Boeing 747-400 (427 Sitzplätze)und das Flugzeug Airbus 380
(537 Sitzplätze). Diese Instanzen werden werden wir kurz jeweils mit Q400,
A330, B747 und A380 bezeichnen. Desweiteren haben wir zusätzlich eine
modifizierte A380 Instanz betrachtet, welche auf der A380 Instanz basiert,
aber in der ersten Etage mehr Sitzplätze beinhaltet. Diese spezielle Instanz
bezeichnen wir mit A380+ und sie verfügt über 972 Sitzplätze. Da es in Zukunft Airbus A380 Maschinen mit über 900 Passagieren geben soll, haben
wir diese Instanz betrachtet. Da uns aber kein spezieller Sitzplan zur Verfügung stand, haben wir die erste Etage des Sitzplanes des A380, welcher 537
Passagiere aufnehmen kann, ausgebaut.
Alle Algorithmen sind so implementiert, dass sie neben des Netzwerkes
einen Zeithorizont erwarten. Da es eine Richtlinie der U. S. Luftfahrtbehörde
(FAA) gibt, welche besagt, dass ein Flugzeug in 90 Sekunden evakuierbar
90
Heuristiken
sein muss, haben wir uns entschieden diese Instanzen jeweils mit einem Zeithorizont von 90 zu untersuchen. Als Ausgabe haben die Implementationen
das Transshipment berechnet und auf Wunsch kann man sich das berechnete
Transshipment graphisch anzeigen lassen. Dazu verwendeten wir das Modul
Aninet, welches von Alexander Hall entwickelt wurde und von Nadine Baumann und dem Autor leicht modifiziert wurde.
Die Implementationen haben neben des Transshipment Patterns jeweils
die benötigte Laufzeit und die Auslastung der Ausgänge protokolliert. Weiterhin haben wir mit Hilfe des Tabellenkalkulationsprogramms Microsoft
Excel die Transshipment Pattern der Heuristiken jeweils mit dem Earliest
Arrival Pattern verglichen. Dabei haben wir zu jedem Zeitpunkt die prozentuale Abweichung des Arrival Patterns vom Optimum bestimmt. Ferner
ermittelten wir die maximale prozentuale Abweichung und die durchschnittliche Abweichung, die über das Zeitintervall [0, Topt ] (Topt sei der kleinste
Zeithorizont, bzgl. dessen und des gegebenen Netzwerkes ein Earliest Arrival Transshipment existiert) gemittelt wurde.
3.6.1
Ergebnisse des exakten Algorithmus
In einer ersten Runde haben wir zunächst mittels des exakten Algorithmus
die Earliest Arrival Pattern der Grundinstanzen Q400, A330, B747, A380
und A380+ bestimmt. Auffällig war, dass ein größeres Flugzeug bzw. Netzwerk nicht unbedingt einen größeren Zeithorizont zur totalen Evakuierung
benötigt als ein Kleineres. Bestes Beispiel hierfür sind die Instanz Q400 und
A330. In beiden Instanzen ist jeweils ein Zeithorizont von 38 optimal. Die
Zeithorizonte im Falle der B747 und des A380 betragen jeweils 49 und 50.
Nur der Zeithorizont des A380+ ist mit 70 am größten. Trotzdem erfüllen
alle Instanzen die Anforderung der FAA.
Die benötigte Rechenzeit war mit 53 Sekunden für die A380+ Instanz
am größten. Diese Zeit setzt sich aus der Zeit für die Erstellung des speziellen zeitexpandierten Netzwerkes, der Minimalkostenflussberechnung und der
Zeit für die Pfadzerlegung zusammen. Beim A380+ wurden weniger als eine
Sekunde für den Aufbau des zeitexpandierten Netzwerkes, vier Sekunden
für die Minimalkostenflussberechnung und 39 Sekunden für die Pfadzerlegung benötigt. Der gewaltige Unterschied der Rechenzeiten für die Minimalkostenflussberechnung und der Flusszerlegung kann in der Tatsache liegen,
dass wir für die Minimalkostenflussberechnung die von LEDA zur Verfügung
gestellte Methode verwenden und die Pfadzerlegung selbst implementieren
musste. Weiterhin nimmt LEDA auf maschinensprachlicher Ebene CodeOptimierungen vor.
3.6 Die Heuristiken in der Praxis
3.6.2
91
Ergebnisse der Heuristiken
Qualität der Ergebnisse. Die kürzeste Wege Heuristik war bei fast allen Instanzen die schlechteste Heuristik. Besonders deutlich wurde dies im
Fall der Airbus Instanzen A330 und A380. Die maximale prozentuale Abweichung des Patterns betrug beim A330 17,07% und beim A380 16,6%. Die
durchschnittlichen Abweichungen pro Zeiteinheit bis zu den Zeitpunkten 38
bzw. 50 betrugen beim A330 11,3% und beim A380 10,9%.
Etwas besser war in diesen Instanzen die Ausgangentlastungs-Heuristik.
Im Falle A330 betrug die maximale Abweichung 12,1% und beim A380 14%.
In der durchschnittlichen Abweichung konnten wir beim A330 6,9% und
beim A380 8,9% ermitteln.
Erheblich besser waren die Ergebnisse der Kürzesten Fahrzeit Heuristik.
Beim A330 betrug die maximale Abweichung 7,3%. Eine Besonderheit war
hier, dass das Pattern im Zeitintervall [18, 36] optimal ist. Bemerkbar macht
sich dies sehr deutlich in der durchschnittlichen Abweichung. Sie beträgt
hier 0,7%. Beim A380 beträgt sie 2,3%. Die maximale Abweichung dagegen
beträgt 3,85%. Auch beim A380+ ist zu erkennen, dass die kürzeste Fahrzeit
Heuristik die anderen Heuristiken deutlich schlägt.
Bei der kleinsten Instanz Q400 haben alle Pattern der Heuristiken eine maximale Abweichung von 9,1%. Dennoch, wenn wir uns die Pattern
selbst und die durchschnittliche Abweichung anschauen, schlägt die kürzeste Fahrzeit Heuristik mit 2,19% knapp wieder die anderen Heuristiken. Die
kürzeste Wege Heuristik schlägt in diesem Fall sogar ganz leicht mit 2,27%
die Ausgangentlastungs-Heuristik (2,79%). Weiterhin ist hier auffällig, dass
für jeden Ausgang der Instanz Q400 die Ausgangsbelastung, d. h. die Summe
der Passagiere die das Flugzeug durch diesen Ausgang verlassen im Vergleich
zur Ausgangsbelastung des betreffenden Ausganges bzgl. der kürzesten Wege
Heuristik unverändert bleibt. Dies liegt daran, dass bzgl. der Unterheuristik
genau zwei überdurchschnittliche Ausgänge existieren, welche ihren Überschuss nicht an unterdurchschnittliche Ausgänge verteilen. Somit werden
Passagiere von einem überdurchschnittlich belasteten Ausgang zum anderen umgeleitet und umgekehrt.
Laufzeiten. Zur benötigten Rechenzeit ist festzustellen, dass die Kürzeste
Wege Heuristik mit Abstand die schnellste Heuristik ist. Beim Q400 beträgt
die Rechenzeit weniger als eine Sekunde und beim A380 sind es ca. zwei
Sekunden. Die Laufzeit hängt nicht vom gewählten Zeithorizont in der Eingabe ab. Dieser dient hier nur zur Reservierung von Speicherplatz, welcher
benötigt wird um die Flussinformationen ablegen zu können. Beim A380+
beträgt die Laufzeit immerhin zwei Sekunden. Wir beachten dabei, dass
konstruktionsbedingt die Heuristiken eine Pfadzerlegung mitberechnen, so
dass wir hier nur die Gesamtzeit der Heuristik berücksichtigen können. Etwas mehr Zeit benötigt erwartungsgemäß die Ausgangentlastungs-Heuristik,
92
Heuristiken
da sie die Unterheuristik enthält und für einige Passagiere alternative Pfade bestimmen muss. Beim Q400 beträgt sie zwar auch unter eine Sekunde
aber beim A380+ benötigt sie eine Laufzeit von fünf Sekunden. Die kürzeste
Fahrzeit Heuristik benötigt beim A380+ die meiste Rechenzeit, nämlich 14
Sekunden.
3.6.3
Weitere Instanzen
Bisher haben wir Instanzen betrachtet, die genau nach den Sitzplänen
der Flugzeuge angefertigt wurden. Um mehr Erkenntnisse über die Qualität der Heuristiken zu gewinnen, benötigen wir weitere Instanzen. Diese leiten wir von unseren bisherigen Instanzen ab, indem wir systematisch gewisse Ausgänge schließen. Dieses Vorgehen ist insoweit realistisch,
da es im Notfall passieren kann, dass sich z. B. nur noch alle Türen auf
der rechten Seite öffnen lassen. Neue Instanzen gewinnen wir, indem wir
bei allen Flugzeugen nur noch die Ausgänge im vorderen Bereich zulassen
(Q400frontside,. . . , A380+frontside), nur noch die Ausgänge im hinteren Bereich zulassen (Q400backside, . . . , A380+backside) und nur noch alle Ausgänge auf der rechten Seite zulassen (Q400rightside, . . . A380+rightside).
Bei den Instanzen A380, B747 und A380+ führen wir jeweils noch weitere
Veränderungen durch, um weitere Instanzen zu gewinnen. Diese Flugzeuge
verfügen jeweils über zwei Etagen und Verbindungstreppen zwischen diesen
Etagen. Neue Instanzen gewinnen wir, indem wir nacheinander die Treppen verbieten (A380stairsclosed, B747stairsclosed und A380+stairsclosed),
nur die Ausgänge der oberen Etage zulassen (A380topfloor, B747topfloor
und A380+topfloor) und dann nur die Ausgänge der unteren Etage geöffnet
lassen (A380bottomflor, B747bottomfloor und A380+bottomfloor). In der
Tabelle 3.1 sehen wir eine Übersicht aller betrachteten Netzwerkinstanzen.
Ergebnisse des exakten Algorithmus
Die auffälligste Instanz ist die Instanz B747topfloor. Hierbei beträgt die
benötigte Zeit zur Totalevakuierung 419 Zeiteinheiten, wenn man nur noch
die oberen Ausgänge nutzen darf. Dies liegt vermutlich daran, dass von
den zwei nutzbaren Ausgängen nur einer gleichzeitig effektiv genutzt werden
kann, da maximal pro Zeiteinheit ein weiterer Passagier zu diesen gelangen
kann. Der Grund hierfür ist der enge Gang in der oberen Etage, über welchen
alle Passagiere nur die Ausgänge erreichen können. Die Passagiere haben
daher keine andere Möglichkeit, andere Wege nach draußen zu verfolgen.
Der Zeithorizont macht sich hier auch in der Rechenzeit bemerkbar. Der
exakte Algorithmus benötigte ca. 94 Sekunden. Davon entfielen eine Sekunde
auf die Erstellung des zeitexpandierten Netzwerkes, 17 Sekunden auf die
Minimalkostenflussberechnung und 76 Sekunden auf die Berechnung einer
93
3.6 Die Heuristiken in der Praxis
Instanz
Q400
Q400frontside
Q400backside
Q400rightside
A330
A330frontside
A330backside
A330rightside
B747
B747frontside
B747backside
B747rightside
B747stairsclosed
B747topfloor
B747bottomfloor
A380
A380frontside
A380backside
A380rightside
A380stairsclosed
A380topfloor
A380bottomfloor
A380+
A380+frontside
A380+backside
A380+rightside
A380+stairsclosed
A380+topfloor
A380+bottomfloor
#Knoten
#Kanten
#Sitzplätze
108
108
108
108
319
319
319
319
687
687
687
687
685
687
687
932
932
932
932
924
932
932
1367
1367
1367
1367
1359
1367
1367
181
179
179
179
560
556
556
556
1363
1357
1355
1357
1357
1353
1361
1770
1762
1760
1762
1746
1760
1764
2490
2482
2480
2482
2466
2480
2484
70
70
70
70
222
222
222
222
427
427
427
427
427
427
427
537
573
573
573
573
573
573
972
972
972
972
972
972
972
#Ausgänge
4
2
2
2
8
4
4
4
12
6
4
6
12
2
10
16
8
6
8
16
6
10
16
8
6
8
16
6
10
Topt
38
70
75
39
38
106
59
60
49
177
152
78
49
419
49
50
122
136
78
50
148
70
70
198
198
128
85
232
119
Tabelle 3.1: Diese Tabelle gibt eine Übersicht über die Anzahl der Knoten, Kanten,
Quellknoten (Sitzplätze) und Ausgänge der Netzwerke der jeweiligen Instanzen. Der Wert
Topt bezeichnet den optimalen Zeithorizont des jeweiligen Earliest Arrival Transshipments
Pfadzerlegung.
Die Instanz, welche die meiste Rechenzeit benötigte war die Instanz
A380+frontside. Hier wurden bei einem vorgegebenen Zeithorizont von 270
genau 199 Sekunden benötigt. Hier entfielen 24 Sekunden auf die Minimalkostenflussberechnung. Bei dem optimalen Zeithorizont von 198 benötigte
der Algorithmus 10 Sekunden weniger, wovon Acht Sekunden bei der Minimalkostenflussberechnung weniger verbraucht wurden.
Noch dramatischer ist die Größe des resultierenden zeitexpandierten
Graphen. Der Graph des A380+frontside enthält 1367 Knoten und 2482
Kanten. Das erstellte erweiterte zeitexpandierte Netzwerk enthält bei Untersuchung des Zeithorizontes 270 genau 369.092 Knoten und 1.036.546 Kanten.
Weitere Beispiele greifen wir später im Vergleich zu den Laufzeiten der
Heuristiken auf. Eine komplette Übersicht der Ergebnisse, welche der exakte Algorithmus geliefert hat, sehen wir in Tabelle 3.2. Dort führen wir
neben den Laufzeiten auch die Größe des jeweils berechneten zeitexpandierten Netzwerkes auf.
94
Instanz
Q400
Q400frontside
Q400backside
Q400rightside
A330
A330frontside
A330backside
A330rightside
B747
B747frontside
B747backside
B747rightside
B747stairsclosed
B747topfloor
B747bottomfloor
A380
A380frontside
A380backside
A380rightside
A380stairsclosed
A380topfloor
A380bottomfloor
A380+
A380+frontside
A380+backside
A380+rightside
A380+stairsclosed
A380+topfloor
A380+bottomfloor
Heuristiken
#Knoten
#Kanten
Texp
Aufbau
9722
9722
9722
9722
28712
57442
28712
28712
61832
123662
123662
61832
61652
343402
61832
83882
167762
167762
83882
83162
167762
83882
123032
369092
369092
246062
122312
369092
246062
25885
25705
25705
25705
78510
156990
78150
78150
182963
366473
366113
182423
182255
1018873
182783
241069
482899
482539
240349
238261
482539
240529
344266
1036546
1036006
690046
341458
1036006
690406
90
90
90
90
90
180
90
90
90
180
180
90
90
500
90
90
180
180
90
90
180
90
90
270
270
180
90
270
90
< 1s
< 1s
< 1s
< 1s
1s
< 1s
< 1s
< 1s
< 1s
< 1s
< 1s
< 1s
< 1s
1s
< 1s
< 1s
1s
1s
1s
< 1s
1s
1s
< 1s
1s
1s
1s
< 1s
1s
1s
Flussberechnung
< 1s
< 1s
< 1s
< 1s
< 1s
2s
< 1s
1s
2s
6s
6s
2s
2s
17s
2s
2s
5s
7s
3s
2s
7s
2s
4s
24s
24s
12s
5s
19s
12s
Pfadzerlegung
< 1s
< 1s
< 1s
< 1s
3s
5s
2s
3s
10s
20s
20s
10s
9s
76s
10s
23s
47s
48s
25s
24s
47s
25s
49s
174s
176s
97s
49s
177s
90s
Tabelle 3.2: Diese Tabelle gibt eine Übersicht über die Anzahl der Knoten, Kanten
und des verwendeten Zeithorizont (Texp ) des konstruierten zeitexpandierten Graphen. Die
weiteren Werte geben in Sekunden die verbrauchte Rechenzeit für die Konstruktion des
zeitexpandierten Graphen, für die Minimalkostenflussberechnung auf dem zeitexpandierten Graphen und für die Berechnung einer Pfadzerlegung des Minimalkostenflusses an.
Ergebnisse der Heuristiken
Qualität der Ergebnisse. Auch bei der Betrachtung der weiteren Instanzen zeichnete sich wieder ein einheitliches Bild ab. In fast allen Instanzen
war die kürzeste Fahrzeit Heuristik gegenüber den anderen Heuristiken bzgl.
der maximalen und durchschnittlich prozentualen Abweichung der Pattern
überlegen. Ein Grund kann darin liegen, dass die kürzeste Fahrzeit Heuristik
im Gegensatz zu den anderen Heuristiken bei der Pfadberechnung für eine
einzelne Flusseinheit den bis dahin berechneten Teilfluss auf Basis der bisher
berechneten Pfade mitberücksichtigt.
Wir erwähnen zunächst auffällige Instanzen, auf denen alle Heuristiken
sehr gute Ergebnisse berechnet haben. Dies waren die Instanzen, in denen
nur zwei Ausgänge existieren. Bei der Instanz Q400backside berechneten
alle Heuristiken einen Earliest Arrival Transshipment. Dazu muss man bemerken, dass diese Instanz sehr klein ist und es wegen nur zwei vorhandener
Ausgänge nicht viele unterschiedliche Möglichkeiten für einen Passagier gibt,
3.6 Die Heuristiken in der Praxis
95
einen Pfad zur Senke zu wählen. Obwohl diese Bemerkungen bei der Instanz
Q400frontside zutreffen, berechnete hier keine Heuristik ein Earliest Arrival Transshipment. Alle Heuristiken berechneten ein Transshipment dessen
maximale prozentuale Pattern-Abweichung bei 12,5% liegt. Da dieser Fehler jeweils zu einem frühen Zeitpunkt auftritt, ist der absolute Fehler sehr
klein. Der optimale Zeithorizont liegt in dieser Instanz bei 70. Bezüglich der
durchschnittlichen Abweichung war berechnete die kürzeste Wege Heuristik
Wege Heuristik vergleichsweise das schlechteste Ergebnis, was aber dennoch
mit 2,47 %. sehr gut ausfiel. Die Ausgangentlastungs-Heuristik berechnete
sogar ein Transshipment dessen Pattern ab dem Zeitpunkt 48 dem des Earliest Arrival Transshipment entsprach, was sich mit einem durchschnittlichen
Fehler von 1,57% bemerkbar machte. Die kürzeste Fahrzeit Heuristik berechnete einen Fluss, dessen Pattern nur zu zwei Zeitpunkten von dem Pattern
eines Earliest Arrival Transshipment abweicht. Der durchschnittliche Fehler
ist daher mit 0,07% sehr gering. Auch bei der Instanz Q400rightside berechneten die Heuristiken sehr gute Ergebnisse. Die kürzeste Fahrzeit Heuristik
berechnete sogar hier auch wieder ein Earliest Arrival Transshipment.
Die letzte untersuchte Instanz, in welcher nur zwei Ausgänge zur Verfügung stehen, war B747topfloor, welche schon unter Anwendung des exakten Algorithmus wegen der erheblichen Zeithorizontvergrößerung im Vergleich zur Instanz B747 auffiel. Auffällig war auch hier, dass die kürzeste Fahrzeit Heuristik ein Earliest Arrival Transshipment berechnete. Die
kürzeste Wege Heuristik war hier etwas besser als die AusgangentlastungsHeuristik. Das berechnete Pattern dieser Heuristik weicht nur zu wenigen
Zeitpunkten vom Optimum ab. Der maximale prozentuale Fehler liegt zwar
bei 11,5%, aber der durchschnittliche prozentuale Fehler liegt bei 0,01%.
Bei der Ausgangentlastungs-Heuristik liegt die maximale Abweichung des
Patterns vom Optimum bei 16,67%. Die durchschnittliche Abweichung des
Patterns dieser Heuristik lag bei 0,09%.
Bevor wir weitere markante Instanzen ansprechen, müssen wir erwähnen,
dass bzgl. der Ausgangentlastungs-Heuristik in den untersuchten Instanzen
kein Zusammenhang zwischen der Qualität der Lösung und der Auslastung
der Ausgänge zu erkennen war. Beste Beispiele hierzu sind die Instanzen
Q400backside und die Instanz A330frontside. In der Instanz Q400backside,
welche zwei Ausgänge besitzt, verließ jeweils 50% der Passagiere das Flugzeug durch jeweils einen Ausgang. In der Instanz A330frontside, welche über
vier Ausgänge verfügt, verließen jeweils ca. 25% der Passagiere das Flugzeug durch jeweils einen Ausgang. Statt eines Earliest Arrival Transshipment wie bei Q400backside berechnete die Ausgangentlastungs-Heuristik bei
A330frontside ein Transshipment, dessen Arrival Pattern eine sehr schlechte
Näherung zum Earliest Arrival Pattern darstellt.
Im Rahmen dieser Untersuchungen erzeugte die Instanz A330frontside
bzgl. der Ausgangentlastungs-Heuristik das schlechteste Ergebnis bzgl der
maximalen Abweichung. Die maximale Abweichung lag bei 36,8% und die
96
Heuristiken
durchschnittliche Abweichung lag bei 10,07%. Unwesentlich schlechter war
die kürzeste Wege Heuristik. Die maximale Abweichung beträgt hier auch
36,8% aber die durchschnittliche Abweichung ist mit 10,87% etwas schlechter. Bessere Ergebnisse liefert hier wieder die kürzeste Fahrzeit Heuristik.
Die maximale Abweichung beträgt 18,4 % und die durchschnittliche Abweichung beträgt 5,34%. Alle drei Heuristiken berechnen bzgl. dieser Instanz
Transshipments, dessen Pattern im Vergleich zu anderen Instanzen die größte maximale Abweichung zum Earliest Arrival Pattern besitzen. Dies kann
daran liegen, dass bei der Instanz A330frontside die vier Ausgänge ungünstiger positioniert sind. Sie umgeben einen Bereich, welcher im Vergleich zu
dem Rest des Flugzeuges nur sehr wenige Sitzplätze enthält. Im Falle des
A330frontside kam es besonders bei der Ausgangentlastungs-Heuristik vor,
dass in vielen Fällen jeweils der Alternativpfad einen großen Teil des Erstpfades enthalten hat, da die meisten Passagiere auf dem Weg zu dem alternativen Ausgang an ihrem zuerst berechneten Ausgang in gewisser Weise
vorbeikamen.
Wenn wir ebenfalls die von der Instanz A330 abgeleitete Instanz
A330backside betrachten, sind die gemessenen prozentualen Abweichungen,
besonders bei der kürzesten Fahrzeit Heuristik, deutlich geringer. Eine mögliche Erklärung ist die Lage der verbliebenen vier Ausgänge zu einer großen
Teilmenge der Passagiere. Hier kann die Unterheuristik eine bessere Wirkung
erzielen in dem für eine große Mehrheit an Passagieren bei der Wahl eines
alternativen Pfades ein großer Teil des Erstpfades vermieden wird. Beim
A330backside beträgt die maximale Abweichung des Patterns, welches durch
die kürzeste Fahrzeit Heuristik berechnet wurde 1,8%. Die durchschnittliche
Abweichung betrug 0,2%.
In wenigen Instanzen kam es vor, dass zu gewissen Zeitpunkten die
Ausgangentlastungs-Heuristik ein besseres Ergebnis als die kürzeste Fahrzeit
Heuristik lieferte. Eine solche Instanz war B747bottomfloor. Hier betrug die
maximale Abweichung bei der kürzesten Fahrzeit Heuristik fast 9% statt
6,6% bei der Ausgangentlastungs-Heuristik. Dennoch ist die durchschnittliche Abweichung mit ca. 3% statt 3,8% bei der kürzesten Fahrzeit Heuristik
geringer.
Weitere Instanzen, in welchen sich die kürzeste Fahrzeit Heuristik
sehr gut bewährte waren insbesondere die Instanzen A380stairsclosed,
B747stairsclosed und A380+stairsclosed. Die Instanzen in welcher die kürzeste Fahrzeit Heuristik auffällig schlechtere Ergebnisse produzierte, waren neben A330frontside die Instanzen A330rightside, A380rightside und
A380+rightside. In diesen Instanzen betrug jeweils die maximale Abweichung des Patterns zwischen 11% und 17%. Ein Grund hierfür kann die
Unterheuristik sein, die es nicht vermag gute alternative Pfade zu berechnen, da sich alle Ausgänge ungünstigerweise auf einer Seite des Flugzeugs
befinden und die Unterheuristik bei den Flugzeuginstanzen so ausgelegt ist,
dass sie für jeden Passagier den zu einem Ausgang alternativen Ausgang auf
3.6 Die Heuristiken in der Praxis
97
der gleichen Seite des Flugzeugs (in Flugrichtung gesehen) bestimmt. Dennoch überschritt die durchschnittliche Abweichung in keiner Instanz die 10%Marke. Die Instanz, bei welcher die kürzeste Fahrzeit Heuristik die schlechteste durchschnittliche Abweichung erreichte, war die Instanz A330rightside.
Hier betrug diese Abweichung ca. 7%. Im Vergleich hierzu betrug die durchschnittliche Abweichung der kürzesten Wege Heuristik fast 14% und bzgl.
der Ausgangentlastungs-Heuristik 11,5%.
Zu den Zeithorizonten, welche die Heuristiken ermittelten, ist zu sagen,
dass sie im Falle der kürzesten Wege Heuristik im Gegensatz zu to pt in
drei Instanzen doppelt so lang waren. In vielen anderen Instanzen wich der
berechnete Zeithorizont um mindestens 40% ab.
Bei der Ausgangentlastungs-Heuristik waren die Abweichungen (to pt zu
tm ax) der berechneten Zeithorizonte etwas geringer. In nur 5 Instanzen betrug sie ca. 50% oder mehr.
Auch in dieser Disziplin schlägt die kürzeste Fahrzeit Heuristik die anderen beiden Heuristiken. In keiner Instanz war diese Abweichung höher als
50%.
Laufzeiten. Bei den Instanzen, dessen optimaler Zeithorizont im Vergleich
zur Grundinstanz stark vergrößert war, haben wir erwartungsgemäss beim
exakten Algorithmus wesentlich längere Laufzeiten festgestellt. Dadurch bedingt ist jeweils auch die Größe des zeitexpandierten Netzwerkes stark angestiegen. Hat die Ermittlung eines Earliest Arrival Transshipments beim
B747 bzgl des Zeithorizontes 90 noch ca. 10 Sekunden benötigt (<1 Sek.
für den Aufbau des zeitexpandierten Netzwerkes, 2 Sekunden für die Minimalkostenflussberechnung und 8 Sekunden für die Pfadzerlegung) so hat der
Algorithmus für die Instanz B747topfloor, welche nur zwei Kanten weniger
enthält, 104 Sekunden benötigt. Davon entfielen eine Sekunde auf die Erstellung des zeitexpandierten Netzwerkes, 17 Sekunden auf die Minimalkostenflussberechnung und 76 Sekunden auf die Berechnung der Pfadzerlegung.
Der zeitexpandierte Graph enthielt hier 500 Zeitschichten. Das Grundnetzwerk der Instanz B747topfloor enthält 687 Knoten und 1353 Kanten. Das
zeitexpandierte Netzwerk enthält dann bei Zeithorizont 500 genau 343.402
Knoten und 1.018.873 Kanten.
Im Vergleich hierzu benötigte die kürzeste Wege Heuristik eine Laufzeit
von gerade mal eine Sekunde. Die Ausgangentlastungs-Heuristik benötigte
sechs Sekunden. Die kürzeste Fahrzeit Heuristik hatte eine Laufzeit von 5
Sekunden.
In den meisten Fällen benötigte die kürzeste Fahrzeit Heuristik eine längere Laufzeit als die anderen Heuristiken. Ein gutes Beispiel hierzu ist die
Instanz A380+topfloor. Die Berechnung eines Earliest Arrival Transshipments benötigte drei Minuten und 17 Sekunden wobei wir ein zeitexpandiertes Netzwerk zum Zeithorizont 270 zugrunde legten. Bei der Berechnung
98
Heuristiken
der Instanz A380+ wurden dagegen nur 15 Sekunden verbraucht. Wie man
hier sieht, genügt eine kleine Modifikation an einem Netzwerk, so dass dadurch die benötigte Rechenzeit des exakten Algorithmus eine dramatischen
Laufzeitanstieg erfährt.
Da die Heuristiken ohne Zeitexpansion auskommen, erfahren die Laufzeit hier nur moderaten Zuwachs. Bei der kürzesten Wege Heuristik benötigt die Berechnung der Instanz A380+ zwei Sekunden und bei der Instanz A380+topfloor ebenfalls nur zwei Sekunden. Die AusgangentlastungsHeuristik benötigt bei A380 sechs Sekunden und bei A380+topfloor 15 Sekunden. Die kürzeste Fahrzeit Heuristik verbraucht für die Berechnung der
Instanz A380 15 Sekunden und für die Instanz A380+topfloor 19 Sekunden.
Die drei Tabellen 3.3, 3.4 und 3.5 geben eine Übersicht, über die ermittelten Ergebnisse der Heuristiken.
Zum Ende dieses Abschnitts erwähnen wir, dass wir die Arrival Pattern
aller untersuchten Instanzen im Anhang dieser Arbeit visualisiert haben.
3.6.4
Zusammenfassung und Ausblick
Die Kürzeste Fahrzeit Heuristik ist in der Lage in sehr kurzer Zeit für unsere
Flugzeuginstanzen eine gute Näherung eines Earliest Arrival Transshipment
zu bestimmen. Da die Struktur in den Flugzeugplänen meist sich immer wieder ähnelt (wenige enge Gänge pro Etage, höchstens zwei Etagen, kurze Wege zu einem Ausgang) wird diese Heuristik vermutlich auch bei zukünftigen
ähnlich strukturierten Flugzeugplänen ein Earliest Arrival Transshipment
gut approximieren können. Die anderen beiden Heuristiken haben bei unseren Instanzen zwar Schwächen gezeigt, können aber wegen ihrer schnellen
Laufzeit benutzt werden, um das Earliest Arrival Pattern schnell abschätzen zu können. Dies vermag aber auch die kürzeste Fahrzeitheuristik. Sie
kann sogar für grobe Schätzung des Zeithorizontes herangezogen werden um
z. B. bei der Berechnung mit dem exakten Algorithmus die Größe des zeitexpandierten Netzwerkes und somit die Laufzeit möglichst klein zu halten.
Vielleicht ist es aber auch zusätzlich möglich die Unterheuristik so zu verbessern, so dass die Heuristiken, insbesondere die kürzeste Fahrzeit Heuristik
noch bessere Ergebnisse liefert.
Zum Abschluss sollte man bedenken, dass auch ein exaktes Earliest Arrival Transshipment keinen Anspruch auf die Realität hat und für einen
Evakuierungsfall, der hoffentlich selten eintritt, nur eine untere Zeitschranke darstellt. Da im Notfall die Passagiere in Panik sich auf eine gewisse Art
heuristisch verhalten um zu einem Notausgang zu gelangen, kann es eher
der Fall sein, dass eine unserer Heuristiken der Realität ein wenig näher ist.
99
3.6 Die Heuristiken in der Praxis
Instanz
Tmax
Topt -Tmax Abw.
max. Abw.
mittl. Abw.
Q400
Q400frontside
Q400backside
Q400rightside
A330
A330frontside
A330backside
A330rightside
B747
B747frontside
B747backside
B747rightside
B747stairsclosed
B747topfloor
B747bottomfloor
A380
A380frontside
A380backside
A380rightside
A380stairsclosed
A380topfloor
A380bottomfloor
A380+
A380+frontside
A380+backside
A380+rightside
A380+stairsclosed
A380+topfloor
A380+bottomfloor
39
70
75
40
55
114
80
98
60
188
189
111
60
419
63
81
167
189
158
81
272
149
104
259
263
198
109
373
240
2,63%
1,43%
0,00%
2,56%
44,74%
7,55%
35,59%
46,67%
22,45%
6,21%
25,17%
42,31%
18,33%
0,00%
28,57%
62,00%
36,89%
38,97%
102,56%
62,00%
83,78%
112,86%
48,57%
30,80%
32,83%
54,69%
28,24%
60,78%
101,68%
9,19%
12,50%
0,00%
1,45%
17,07%
36,80%
18,63%
22,62%
8,94%
13,33%
19,70%
17,92%
8,94%
11,53%
12,26%
16,59%
23,89%
25,54%
20,29%
14,26%
21,69%
21,70%
15,74%
22,80%
19,87%
17,01%
16,90%
18,45%
20,37%
2,27%
2,47%
0,00%
0,15%
11,29%
10,87%
7,97%
20,54%
5,63%
6,44%
13,40%
9,54%
5,09%
0,01%
6,04%
10,94%
17,22%
14,42%
12,53%
9,96%
12,53%
13,96%
9,64%
13,82%
14,46%
9,10%
10,59%
13,72%
12,75%
Flussberechnung
< 1s
< 1s
< 1s
< 1s
< 1s
< 1s
< 1s
< 1s
1s
1s
1s
< 1s
1s
< 1s
< 1s
< 1s
< 1s
< 1s
< 1s
1s
< 1s
< 1s
2s
2s
2s
2s
2s
< 1s
2s
Tabelle 3.3: Diese Tabelle beschreibt die ermittelten Größen bzgl. der Anwendung der
kürzesten Wege Heuristik auf die verschiedenen Instanzen. Diese sind der Zeithorizont
Tmax des berechneten Transshipments, die prozentuale Abweichung von Tmax zu Topt ,
die maximale Abweichung des berechneten Patterns zu dem Earliest Arrival Pattern, die
durchschnittliche Abweichung des Patterns zu dem Earliest Arrival Pattern im Zeitintervall [0, Topt ] und die verbrauchte Rechenzeit zur Ermittlung des Transshipments mit der
kürzesten Wege Heuristik.
100
Heuristiken
Instanz
Tmax
Topt -Tmax Abw.
max. Abw.
mittl. Abw.
Q400
Q400frontside
Q400backside
Q400rightside
A330
A330frontside
A330backside
A330rightside
B747
B747frontside
B747backside
B747rightside
B747stairsclosed
B747topfloor
B747bottomfloor
A380
A380frontside
A380backside
A380rightside
A380stairsclosed
A380topfloor
A380bottomfloor
A380+
A380+frontside
A380+backside
A380+rightside
A380+stairsclosed
A380+topfloor
A380+bottomfloor
41
70
75
40
47
113
66
81
56
177
164
101
56
419
58
71
142
182
146
70
227
98
96
208
241
191
106
410
176
7,89%
0,00%
0,00%
2,56%
23,68%
6,60%
11,86%
35,00%
14,29%
0,00%
8,61%
29,49%
14,29%
0,00%
18,37%
42,00%
16,39%
33,82%
87,18%
40,00%
53,38%
40,00%
37,14%
5,05%
21,71%
49,22%
24,71%
76,72%
56,30%
9,19%
12,50%
0,00%
1,45%
12,10%
36,80%
5,49%
20,51%
7,76%
13,33%
17,50%
12,97%
7,76%
16,67%
6,60%
14,01%
17,10%
25,54%
15,01%
12,07%
16,93%
13,21%
13,26%
17,20%
16,78%
15,36%
17,02%
18,77%
15,04%
2,79%
1,57%
0,00%
0,15%
6,98%
10,07%
2,92%
16,03%
4,99%
4,73%
8,71%
8,05%
4,18%
0,09%
3,89%
8,81%
11,42%
14,74%
13,40%
7,92%
12,19%
10,56%
8,84%
7,78%
9,76%
7,09%
9,95%
14,51%
10,22%
Flussberechnung
< 1s
< 1s
< 1s
< 1s
1s
< 1s
1s
1s
1s
3s
3s
2s
1s
6s
1s
2s
3s
3s
3s
2s
4s
3s
6s
15s
11s
8s
6s
16s
10s
Tabelle 3.4: Diese Tabelle beschreibt die ermittelten Größen bzgl. der Anwendung der
Ausgangentlastungs-Heuristik auf die verschiedenen Instanzen. Diese sind der Zeithorizont Tmax des berechneten Transshipments, die prozentuale Abweichung von Tmax zu
Topt , die maximale Abweichung des berechneten Patterns zu dem Earliest Arrival Pattern, die durchschnittliche Abweichung des Patterns zu dem Earliest Arrival Pattern im
Zeitintervall [0, Topt ] und die verbrauchte Rechenzeit zur Ermittlung des Transshipments
mit der Ausgangentlastungs-Heuristik.
101
3.6 Die Heuristiken in der Praxis
Instanz
Tmax
Topt -Tmax Abw.
max. Abw.
mittl. Abw.
Q400
Q400frontside
Q400backside
Q400rightside
A330
A330frontside
A330backside
A330rightside
B747
B747frontside
B747backside
B747rightside
B747stairsclosed
B747topfloor
B747bottomfloor
A380
A380frontside
A380backside
A380rightside
A380stairsclosed
A380topfloor
A380bottomfloor
A380+
A380+frontside
A380+backside
A380+rightside
A380+stairsclosed
A380+topfloor
A380+bottomfloor
38
70
75
39
38
110
61
64
55
180
165
89
55
419
57
55
146
157
106
55
219
87
76
214
218
158
85
297
150
0,00%
0,00%
0,00%
0,00%
0,00%
6,60%
3,39%
6,67%
12,25%
1,69%
9,27%
14,10%
12,24%
0,00%
16,33%
10,00%
19,67%
15,44%
35,90%
10,00%
47,97%
24,29%
8,57%
8,08%
10,10%
23,44%
0,00%
28,02%
26,05%
9,19%
12,50%
0,00%
0,00%
7,32%
18,42%
1,82%
16,39%
5,56%
9,09%
3,28%
7,07%
5,65%
0,00%
8,96%
3,85%
9,45%
10,33%
13,61%
3,67%
12,39%
9,62%
2,67%
6,43%
7,90%
11,44%
1,82%
6,84%
12,15%
2,20%
0,08%
0,00%
0,00%
0,72%
5,34%
0,21%
7,01%
2,16%
1,58%
1,63%
1,93%
1,32%
0,00%
3,01%
2,41%
6,98%
4,78%
6,38%
2,12%
4,16%
5,70%
0,61%
2,44%
4,49%
5,49%
0,21%
2,52%
6,22%
Flussberechnung
< 1s
< 1s
< 1s
< 1s
< 1s
1s
< 1s
< 1s
3s
4s
3s
3s
3s
5s
3s
4s
5s
6s
5s
4s
6s
5s
15s
19s
19s
16s
15s
19s
17s
Tabelle 3.5: Diese Tabelle beschreibt die ermittelten Größen bzgl. der Anwendung der
kürzesten Fahrzeit Heuristik auf die verschiedenen Instanzen. Diese sind der Zeithorizont
Tmax des berechneten Transshipments, die prozentuale Abweichung von Tmax zu Topt ,
die maximale Abweichung des berechneten Patterns zu dem Earliest Arrival Pattern, die
durchschnittliche Abweichung des Patterns zu dem Earliest Arrival Pattern im Zeitintervall [0, Topt ] und die verbrauchte Rechenzeit zur Ermittlung des Transshipments mit der
kürzesten Fahrzeit Heuristik.
Liste der Algorithmen
1.1
1.2
1.3
1.4
1.5
1.6
2.1
2.2
2.3
2.4
3.1
3.2
3.3
3.4
Der Algorithmus von Dijkstra . . . . . . . . . . . . . . . . . . . . . .
Der Algorithmus von Moore-Bellman-Ford . . . . . . . . . . . . . . .
Der Algorithmus von Ford & Fulkerson . . . . . . . . . . . . . . . . .
Der Successive Shortest Path Algorithmus . . . . . . . . . . . . . . .
Ein Capacity Scaling Algorithmus für das Minimalkostenfluss Problem
Der Algorithmus von Ford & Fulkerson für das dynamische Max-FlowProblem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die spezielle Variante des Successive Shortest Path Algorithmus zur
Lösung des Earliest Arrival Flow Problem . . . . . . . . . . . . . . . .
Der Snap-Shot-Algorithmus . . . . . . . . . . . . . . . . . . . . . . . .
Der (1 + ε)-Approximationsalgorithmus von Hoppe für das Earliest
Arrival Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ein exakter Algorithmus für das Earliest Transshipment Problem . .
Kürzeste Wege Heuristik . . . . . . . . . . . . . . . . . . . . . . . . .
Indexmengenberechnung der Unterheuristik . . . . . . . . . . . . . . .
Die Ausgangentlastungs-Heuristik . . . . . . . . . . . . . . . . . . . .
Die Kürzeste Fahrzeit Heuristik . . . . . . . . . . . . . . . . . . . . .
103
6
7
10
15
17
23
51
54
56
61
68
73
76
79
Literaturverzeichnis
[1]
Baumann, Nadine ; Skutella, Martin: Solving Evacuation Problems
Efficiently–Earliest Arrival Flows with Multiple Sources. In: FOCS ’06: Proceedings of the 47th Annual IEEE Symposium on Foundations of Computer
Science (FOCS’06). Washington, DC, USA : IEEE Computer Society, 2006. –
ISBN 0–7695–2720–5, S. 399–410 42
[2]
Berlin, G. N.: The use of directed routes for assessing escape potential. Boston, Massachusetts : National Fire Protection Association, 1979 33
[3]
Burkard, E. ; Dlaska, K. ; Klinz, B.: The Quickest Flow Problem. In:
ZOR– Methods ans Models of Operations Research Bd. 37, No. 1, 1993, S.
31–58 34
[4]
Chalmet, L. G. ; Francis, R. L. ; Saunders, P. B.: Network models for
building evacuation. In: Management Science Bd. 28, 1982, S. 86–105 33
[5]
Fleischer, L. ; Tardos, É.: Efficient continuous-time dynamic network flow
algorithms. In: Operations Research Letters 23 (1998), S. 71–80 38, 55
[6]
Fleischer, Lisa ; Skutella, Martin: Quickest Flow over Time. In: SIAM
Journal on Computing Bd. 36 No.6, 2007 41, 57, 58
[7]
Ford, L. R. ; Fulkerson, D. R.: Flows in networks. Princeton, New Jersey
: Princeton University Press, 1962 14, 21, 27
[8]
Gale, David: Transient flows in networks. In: Michigan Mathematical Journal
6, S. 59–63 44
[9]
Grötschel, M. ; Lovasz, L. ; Schrijver, A.: Geometric Algorithms and
Combinatorial Optimization, volume 2 of Algorithms and Combinatorics. Berlin : Springer, 1998 40
[10] Hoppe, Bruce ; Tardos, Eva: The Quickest Transshipment Problem. In: SODA: ACM-SIAM Symposium on Discrete Algorithms (A Conference on Theoretical and Experimental Analysis of Discrete Algorithms), 1995 37, 38, 39, 40,
41
[11] Hoppe, Bruce ; Tardos, Eva: The Quickest Transshipment Problem. In:
Mathematics of Operation Reasearch Bd. 25, 2000, S. 36–62 37, 38, 39, 40, 41
[12] Hoppe, Bruce E.: Efficient dynamic network flow algorithms. Ithaca, NY,
USA, Diss., 1995 51, 53, 55, 57, 105
[13] Jarvis, J. ; Ratliff, H.: Some equivalent objectives for dynamic network
flow problems. In: Management Science Bd. 28, 1982, S. 106–108 33
[14] Klinz, B.: Zitiert in [12] als personal communication. 40
[15] Korte, Bernhard ; Vygen, Jens: Combinatorial Optimization: Theory and
Algorithms, 3nd edition. Berlin : Springer, 2005 1, 4, 5, 6, 9, 10, 14, 16, 21
105
106
Literaturverzeichnis
[16] Langkau, Katharina: Flows over Time with Flow-Dependent Transit Times.
Berlin, Diss., 2003 20
[17] Meggido, N.: Optimal flows in networks with multiple sources and sinks. In:
Mathematical Programming 7 (1974), S. 97–107 38
[18] Meggido, N.: Combinatorial Optimization with rational objective functions.
In: Mathematics of Operation Reasearch Bd. 4, 1979, S. 414–424 41
[19] Minieka, Edward: Maximal, Lexicographic, and Dynamic Network Flows. In:
Operations Research Bd. 21, No. 2, 1973, S. 517–527 38, 45, 46
[20] Philpott, A. B.: Continuous-time flows in networks. In: Mathematics of
Operation Research 15 (1990), S. 640–661 45
[21] Skutella, Martin: Ausgewählte Kapitel der kombinatorischen Optimierung
(Vorlesungsskript). Wintersemester 2005/2006 16, 22, 23, 26
[22] Wegener, Ingo: Theoretische Informatik. Eine algorithmische Einführung.
Stuttgart : Teubner, 1999 v
[23] Wegener, Ingo:
2001/2002 5, 69
Datenstrukturen (Vorlesungsskript).
Wintersemester
[24] Wilkinson, W. L.: An Algorithm for Universal Maximal Dynamic Flows in
a Network. In: Operations Research Bd. 19, No. 7, 1971, S. 1602–1612 45
[25] Zadeh, Norman: A bad network problem for the simplex method and other
minimum cost flow algorithms. In: Math. Program. Bd. 5, 1973, S. 255–266 53
Erklärung
Hiermit erkläre ich, dass ich die vorliegende Diplomarbeit selbständig und nur unter Verwendung der angegebenen Quellen und Hilfsmittel angefertigt habe und alle
Stellen, die wörtlich oder sinngemäß aus den benutzten Quellen entnommen sind,
als solche kenntlich gemacht habe.
Dortmund, den 13. Oktober 2007
(Ort, Datum)
(Unterschrift)
107
Anhang A
Arrival Pattern
Die nun folgenden Grafiken visualisieren die ermittelten Arrival Pattern der
einzelnen Algorithmen. Für jede Instanz haben wir eine Grafik erzeugt, in
welcher wir unmittelbar einen Vergleich zwischen den verwendeten Algorithmen anstellen können.
A330
200
150
100
50
0
0
25
Zeit
EAF-Pattern
Kü.-Wege-H.-Pattern
5
Evakuierte Personen
0
25
50
75
10
0
Evakuierte Personen
250
0
Ausgangsentl-H.-Pattern
0
0
Zeit
A330frontside
Kü.-Fahrz.-H.-Pattern
A-1
50
A-2
Arrival Pattern
A330frontside
Evakuierte Personen
250
200
150
100
50
0
0
25
50
75
100
Zeit
A330backside
Evakuierte Personen
250
200
150
100
50
0
0
25
50
Zeit
75
A330rightside
Evakuierte Personen
250
200
150
100
50
0
0
25
50
Zeit
75
A-3
Q400
80
Evakuierte Personen
70
60
50
40
30
20
10
0
0
25
Zeit
Q400frontside
80
Evakuierte Personen
70
60
50
40
30
20
10
0
0
25
50
Zeit
Q400backside
80
Evakuierte Personen
70
60
50
40
30
20
10
0
0
25
50
Zeit
75
A-4
Arrival Pattern
Q400rightside
80
Evakuierte Personen
70
60
50
40
30
20
10
0
0
25
Zeit
B747
450
Evakuierte Personen
400
350
300
250
200
150
100
50
0
0
25
50
Zeit
B747frontside
450
Evakuierte Personen
400
350
300
250
200
150
100
50
0
0
25
50
75
100
Zeit
125
150
175
A-5
B747backside
450
Evakuierte Personen
400
350
300
250
200
150
100
50
0
0
25
50
75
100
Zeit
125
150
175
B747rightside
450
Evakuierte Personen
400
350
300
250
200
150
100
50
0
0
25
50
75
100
125
Zeit
B747stairsclosed
450
Evakuierte Personen
400
350
300
250
200
150
100
50
0
0
25
50
Zeit
A-6
Arrival Pattern
B747topfloor
450
400
Evakuierte Personen
350
300
250
200
150
100
50
0
0
25
50
75
100 125 150 175 200 225 250 275 300 325 350 375 400 425
Zeit
B747bottomfloor
450
400
300
250
200
150
100
50
0
0
25
50
Zeit
A380
700
600
Evakuierte Personen
Evakuierte Personen
350
500
400
300
200
100
0
0
25
50
Zeit
75
A-7
A380frontside
700
Evakuierte Personen
600
500
400
300
200
100
0
0
25
50
75
100
125
150
Zeit
A380rightside
700
Evakuierte Personen
600
500
400
300
200
100
0
0
25
50
75
Zeit
100
125
150
A-8
Arrival Pattern
A380backside
700
Evakuierte Personen
600
500
400
300
200
100
0
0
25
50
75
100
Zeit
125
150
175
A-9
A380stairsclosed
700
Evakuierte Personen
600
500
400
300
200
100
0
0
25
50
75
Zeit
A380topfloor
700
Evakuierte Personen
600
500
400
300
200
100
0
0
25
50
75
100
125 150
Zeit
175
200
225
250
A380bottomfloor
700
Evakuierte Personen
600
500
400
300
200
100
0
0
25
50
75
Zeit
100
125
150
A-10
Arrival Pattern
A380+
1200
Evakuierte Personen
1000
800
600
400
200
0
0
25
50
Zeit
75
100
A380+frontside
1200
Evakuierte Personen
1000
800
600
400
200
0
0
25
50
75
100
125 150
Zeit
175
200
175
200
225
250
A380+backside
1200
Evakuierte Personen
1000
800
600
400
200
0
0
25
50
75
100
125 150
Zeit
225
250
A-11
A380+rightside
1200
Evakuierte Personen
1000
800
600
400
200
0
0
25
50
75
100
Zeit
125
150
175
A380+stairsclosed
1200
Evakuierte Personen
1000
800
600
400
200
0
0
25
50
Zeit
75
100
A380+topfloor
1000
800
600
400
200
Zeit
40
0
37
5
35
0
32
5
30
0
27
5
25
0
22
5
20
0
17
5
15
0
12
5
75
10
0
50
0
0
25
Evakuierte Personen
1200
A-12
Arrival Pattern
A380+bottomfloor
1000
800
600
400
200
0
0
25
50
75
100
125
Zeit
150
EAF-Pattern
Kü.-Wege-H.-Pattern
5
Evakuierte Personen
0
25
50
75
10
0
Evakuierte Personen
1200
0
Ausgangsentl-H.-Pattern
0
0
Zeit
A330frontside
Kü.-Fahrz.-H.-Pattern
175
200
225
Herunterladen