SS 2004: Wegeprobleme in Graphen (2V)

Stefan Lewandowski / Wolfgang Schmid
Mi 9.55-11.25, Raum 0.363

Dies ist kein vollständiges Skript(!), gibt aber eine Übersicht über die behandelten Themen.

Opera zeigt alles korrekt an, IE zeigt alles lesbar an, Mozilla verschluckt einige mathematische Symbole, sonstige Browser ... ?

Inhaltsverzeichnis

  1. Kürzeste Wege: Eigenschaften und Algorithmen
    1. Wiederholung: Grundlegende Definitionen, Dijkstras Algorithmus.
      Generische Kürzeste-Wege-Algorithmen, Algorithmen von Bellman-Ford, D'Esopo-Pape, Pallottino
    2. SSSP in azyklischen Graphen, Dijkstras Algorithmus, A*-Algorithmus
    3. Beidseitige Algorithmen (Dijkstra, Ikeda et.al.)
    4. Verwendung von Buckets (Algorithmen von Dial und Dinitz)
    5. Potentialfunktionen, Skalierungstechniken (Algorithmus von Gabow)
  2. Wegesuche mit verbotenen Strukturen
    1. Wegeberechnung mit Abbiegeverboten
    2. Wegeberechnung mit Wegeverboten
    3. Beweis der Korrektheit
  3. Ausgewählte Kapitel
    1. k-kürzeste-Wege-Algorithmen
    2. Verwendung von Buckets (Algorithmen von Ahuja et.al. und Goldberg)
    3. Skalierungstechniken (Algorithmus von Goldberg)
    4. Wegesuche in hierarchischen Graphen
20.04.04

I. Kürzeste Wege: Eigenschaften und Algorithmen

Literatur

  1. Ahuja/Magnanti/Orlin. Network flows. (Informatikbibliothek, Signatur: Ahuj-16727)
  2. Cherkassky/Goldberg/Radzik. Shortest paths algorithms: Theory and experimental evaluation. Mathematical Programming 73 (1996), 129-174. Vorabversion: http://citeseer.ist.psu.edu/cherkassky93shortest.html
  3. Turau. Algorithmische Graphentheorie. Addison-Wesley, 1996. (UB, Signatur: 4H 4990)

I.1 Eine kurze Geschichte der kürzesten Wege (Teil 1)

Literatur

I.1.1 Klassifizierung der Kürzeste-Wege-Probleme

I.1.2 Definitionen

I.1.3 Notationen

Ist im Kontext klar, welches v0 gemeint ist, wird auf den Index verzichtet.

I.1.4 Wiederholung des Dijkstra-Algorithmus

I.1.5 Teilwege kürzester Wege sind kürzeste Wege: w = v0v1...vk ist kürzester Weg ⇒ wij = vivi+1...vj ist kürzester Weg

I.1.6 Eigenschaft der kürzesten Entfernungen: w = v0v1...vk ist kürzester Weg ⇔ d(vi) + γ(vi,vi+1) = d(vi+1)

I.1.7 Existenz des Kürzeste-Wege-Baums: Sei G = (V,E,γ) ohne negative Zyklen, so existiert ein Spannbaum T = (V,ETT) so, dass sich die kürzesten Entfernungen in G und T nicht unterscheiden. Sind die d(·) bekannt, so lässt sich T in O( n + m ) berechnen.

Hausaufgabe: Geben Sie Beispiele für Graphen ohne negative Zyklen an, für die der Graph, der die Kanten aller kürzesten Wege umfasst, Zyklen hat

I.1.8 Eine notwendige Bedingung für D(·) = d(·): ∀ (u,v) ∈ E: D(v) ≤ D(u) + γ(u,v), Kanten mit dieser Eigenschaft heißen konsistent (sonst verkürzend)

I.1.9 Hinreichende Bedingung für D(·) = d(·): D(v0) = 0, ∀ v ∈ V: D(v) ≥ d(v), ∀ (u,v) ∈ E: D(v) ≤ D(u) + γ(u,v) ⇒ ∀ v ∈ V: D(v)=d(v)

I.1.10 Der generische Kürzeste-Wege-Algorithmus: Solange verkürzende Kanten (u,v) existieren, setze D(v) := D(u) + γ(u,v).
Laufzeit O( m·2n ), für ganzzahlige Kantengewichte O( n2·m·γ|max| ).

27.04.04

I.1.11 Der modifizierte generische Kürzeste-Wege-Algorithmus: Verwalte in M die Knoten, die ausgehende verkürzende Kanten haben könnten. Algorithmus: Solange M ≠ ∅ entferne einen Knoten u ∈ M und setze für die ausgehenden verkürzenden Kanten (u,v) D(v) := D(u) + γ(u,v) und füge v zu M hinzu.
Laufzeit O( n·2n ), für ganzzahlige Kantengewichte O( n·m·γ|max| ).

I.1.12 Verwaltung der Knotenmenge M als FIFO (Bellman-Ford)

I.1.13 Kürzesten Wege mit k Kanten sind nach k Phasen berechnet

I.1.14 Beispiel: Anzahl der Phasen kann kleiner als die Tiefe jedes Kürzeste-Wege-Baums sein

I.1.15 Laufzeit Bellman-Ford: Sei t die geringste Tiefe aller Kürzeste-Wege-Bäume, so löst Bellman-Ford in O( t·m ) das SSSP-Problem oder findet einen negativen Zyklus in O( n·m )

Hausaufgabe: Konstruieren Sie zu gegebenen n und m Graphen, die Θ( n·m ) Schritte brauchen

I.1.16 Beispiel: negative Zyklen: Lemma I.1.13 gilt auch für k ≥ n

I.1.17 Beispiel: Verbesserung durch Vorgängerheuristik: Wird v aus M entfernt und der Vorgänger vorg(v) ist in M, so hat sich D(vorg(v)) wieder verringert und die von v ausgehenden Kanten brauchen nicht betrachtet zu werden, da sich D(v) wieder verringern wird (spätestens, wenn vorg(v) aus M entfernt wird).

I.1.18 Knoten-Verwaltung als Deque (D'Esopo-Pape): Idee: Korrigiere falsch berechnete Teile so früh wie möglich, bevor mit noch nicht betrachteten Knoten weitergearbeitet wird: Knoten mit D(v) < ∞ werden vorne in die Deque (double ended queue) eingefügt (wie beim Stack), Knoten mit D(v) = ∞ hinten (wie bei einer Queue)
Laufzeit: Worst Case O( n·2n ), aber in der Praxis meist schneller als Bellman-Ford oder Dijkstra.

I.1.19 Worst-Case Beispiele

05.05.04

I.1.20 Knoten-Verwaltung mit zwei Queues (Pallottino): Idee wie bei D'Esopo-Pape, aber statt Deque (entspricht Kopplung von Stack und Queue) Verwendung einer weiteren Queue anstelle des Stacks für die wiederholt bearbeiteten Knoten.
Laufzeit: in der Praxis ähnlich schnell wie D'Esopo-Pape, aber Worst Case O( n2·m )

I.1.21 Aufteilung des Algorithmus von Pallottino in n mal Bellman-Ford

I.2 Eine kurze Geschichte der kürzesten Wege (Teil 2)

Literatur

I.2.1 Generischer Kürzeste-Wege-Algorithmus mit optimaler Reihenfolge der Knotenauswahl: Bisher: Unnötiger Aufwand in den Algorithmen, da sich die D(v) verringern können, nachdem die von v ausgehenden Kanten schon konsistent gemacht wurden. Idee: Wähle den Knoten v so, dass D(v) = d(v) gilt.

I.2.2 Invariante ∀ v ∈ R: D(v) = min { d(u) + γ(u,v) | u ∈ B }: Damit existiert stets ein v ∈ R mit D(v) = d(v)

I.2.3 Das SSSP-Problem mit γ(u,v) = 1, (u,v) ∈ E lässt sich in O( n + m ) lösen: Beweis: Hausaufgabe!

I.2.4 Das SSSP-Problem in azyklischen Graphen lässt sich in O( n + m ) lösen

12.05.04

I.2.5 Dijkstras Algorithmus: Sei γ ≥ 0: Sei v ∈ R mit D(v) = min { D(v') | v' ∈ V−B }, so gilt D(v) = d(v)

I.2.6 Das SSSP-Problem in Graphen mit γ ≥ 0 lässt sich in O( n2 ) bzw. O( m·log n ) lösen: Dijkstras Algorithmus mit Listen bzw. Heaps

I.2.7 Das SSSP-Problem in Graphen mit γ ≥ 0 lässt sich in O( m + n·log n ) lösen: Dijkstras Algorithmus mit Fibonacci-Heaps

I.2.8 Beim Dijkstra-Algorithmus werden die Knoten in aufsteigender Reihenfolge der Entfernung zum Startknoten betrachtet: Beweis: Hausaufgabe!

I.2.9 Jede vergleichsbasierte Implementierung von Dijkstras Algorithmus benötigt im Worst-Case Ω( m + n·log n ) Schritte: Rückführung auf das Sortierproblem

I.2.10 Definitionen für den A*-Algorithmus: Eine Schätzfunktion edz : V→R heißt zulässig gdw. edz(v) ≤dist(v,z), v∈V. Sie heißt konsistent gdw. edz ist zulässig und edz(u) ≤ γ(u,v) + edz(v).

19+26.05.04

I.2.11 A*-Algorithmus: Sei v ∈ R mit D(v) + edz(v) = min { D(v') + edz(v') | v' ∈ V−B }, so gilt D(v) = d(v)

I.2.12 Der A*-Algorithmus mit konsistenter Schätzfunktion löst das SPSP- und das SSSP-Problem in O( m + n·log n ): Verwendung von Fibonacci-Heaps, sonst Laufzeiten wie in I.2.6. Entsprechen Kantenlängen und Schätzfunktion der Luftlinie, so beträgt die Laufzeit zur Lösung des SPSP-Problems im Mittel nur O(n) (Sedgewick/Vetter '86) - unabhängig von der Anzahl der Kanten!

I.2.13 Sind die Kantengewichte positiv so entspricht der A*-Algorithmus mit Schätzfunktion konstant 0 dem Dijkstra-Algorithmus

I.2.14 Beispiel: Die Kantengewichte im A*-Algorithmus können negativ sein! Die Laufzeit bleibt - konsistente Schätzfunktion vorausgesetzt - wie in I.2.12 angegeben.

Hausaufgabe: Überlegen Sie warum dies gilt (Auflösung am 2.6.)

I.2.15 Beim A*-Algorithmus mit konsistenter Schätzfunktion werden die Knoten in aufsteigender Reihenfolge der Werte d()+ed() aufgenommen

I.2.16 Beispiel: Der A*-Algorithmus mit zulässiger aber nicht konsistenter Schätzfunktion ist ohne Änderung nicht korrekt: Die D()-Werte der Baumknoten müssen sich wieder verringern dürfen und so diese Knoten wieder in die Menge M der Knoten, deren ausgehende Kanten noch betrachtet werden müssen, aufgenommen werden können.

I.2.17 Wird der Zielknoten beim A*-Algorithmus erstmals aus der Menge M gewählt, so gilt D(z)=d(z), auch wenn die Schätzfunktion nur zulässig aber nicht konsistent ist: Dies ist eine wichtige Eigenschaft, da wir sonst gegenüber dem generischen Algorithmus keinen Vorteil hätten.

I.2.18 Beispiel: Der Worst-Case für den A*-Algorithmus mit zulässiger aber nicht konsistenter Schätzfunktion beträgt O(n2n)

02.06.04
Vereinheitlichung von A* Algorithmus und Dijkstras Algorithmus (Potentialfunktionen)
09.06.04
Beidseitige Suche
16.06.04
Algorithmen von Dial und Dinitz
23.06.04
Skalierungstechniken (Alg. von Gabow)
ab 30.06.04
II. Wegesuche mit verbotenen Strukturen

Die Folien zum Kapitel 2 der Vorlesung Wegeprobleme in Graphen SS 2004

2.1 Einführung in die Abbiegeverbotstheorie
2.2 Kürzeste Wege in Graphen mit Abbiegeverboten (dynamisch)
2.3 Kürzeste Wege in Graphen mit Abbiegeverboten (statisch)
2.4 Der Beweis der Hauptsatzes der Abbiegeverbotstheorie
2.5 k-kürzeste Wege mit dem Algorithmus von Azevedo
2.6 Kürzeste Wege in Graphen mit Wegeverboten
2.7 Eine Beweisskizze des Algorithmus


14.07.2004    Kapitel 2 Berechnung kürzester Wege in Graphen mit verbotenen Strukturen   
(1auf1)
(2auf1)
(6auf1)
(9auf1)
(pdf)
(pdf)
(pdf)
(pdf)
(ps)
(ps)
(ps)
(ps)

Stefan Lewandowski
Last modified: Fri Apr 20 11:32:54 CEST 2012