Informatik II

Werbung
Informatik II ‐ SS 2014
(Algorithmen & Datenstrukturen)
Vorlesung 19 (22.7.2014)
Kürzeste Wege:
Negative Gewichte, alle Paare
Fabian Kuhn
Algorithmen und Komplexität
Fabian Kuhn
Informatik II, SS 2014
Kürzeste Wege
Problem
• Gegeben: gewichteter Graph – Wir bezeichnen Gewicht einer Kante
– Annahme: ∀ ∈ :
0
, ,
,
als
, Startknoten ∈
,
• Ziel: Finde kürzeste Pfade / Distanzen von zu allen Knoten
,
– Distanz von zu : 1
1
3
9
3
(Länge eines kürzesten Pfades)
2
15
3
7
8
4
2
6
6
1
5
8
Fabian Kuhn
6
9
7
Informatik II, SS 2014
2
Negative Kantengewichte
• Kürzeste Pfade können auch in Graphen mit negativen Kantengewichten definiert werden
Beispiel
4
3
5
2
4
6
3
3
8
7
6
Fabian Kuhn
Informatik II, SS 2014
3
Negative Kantengewichte
Satz: In einem gerichteten, gewichteten Graphen hat es genau dann einen kürzesten Pfad von nach , falls es keinen negativen Kreis
gibt, welcher von erreichbar ist und von welchem erreichbar ist.
• gilt auch für ungerichtete Graphen, falls Kanten , als 2 gerichtete Kanten , und , betrachtet werden
Fabian Kuhn
Informatik II, SS 2014
4
Optimalität von Teilpfaden
Lemma: Falls , , … , ein kürzester Pfad von nach ist,
dann gilt für alle 0
, dass der Teilpfad ,
,…,
ein kürzester Pfad von nach ist.
• gilt auch bei negativen Kantengewichten...
Fabian Kuhn
Informatik II, SS 2014
5
Zur Erinnerung: Dijkstras Algorithmus
• Algorithmus kennt zu jedem Zeitpunkt einen Teilbaum
eines Shortest Path Trees
• Man merkt sich zudem für jeden Knoten, wie er über 1 Kante
von am besten erreicht werden kann und nimmt in jedem
Schritt den besten solchen Knoten zu hinzu.
Fabian Kuhn
Informatik II, SS 2014
6
Dijkstras Algorithmus
Initialisierung ∅, ∅
•
,
0, sowie
,
NULL für alle ∈
•
∞ für alle ∈ ∖
∖
(braucht’s nicht für )
Interationsschritt
• Wähle Knoten mit kleinstem
,
≔
min
,
∈ ∩
• Gehe durch die Ausgangsnachbarn ∈
,
≔ min
,
,
,
,
∖
und setze
,
– Falls nötig, setze auch • Füge Kante Fabian Kuhn
,
zum Baum hinzu.
Informatik II, SS 2014
7
Dijkstras Algorithmus und negative Gewichte
Funktioniert Dijkstras Algorithmus auch bei negativen
Kantengewichten?
• Antwort: nein
Fabian Kuhn
Informatik II, SS 2014
8
Bellman‐Ford Algorithmus
• Zur Vereinfachung beschränken wir uns darauf, die Distanzen zu
berechnen
Annahme:
• Für alle Knoten : Algorithmus hat Wert ,
• Initialisierung: ,
0, ,
∞ für
Beobachtung:
• Falls , ∈ , so dass
,
Fabian Kuhn
,
,
,
Informatik II, SS 2014
,
,
, dann gilt:
,
9
Bellman‐Ford
• Betrachte alle Kanten
,
und versuche
– solange, bis alle Distanzen korrekt sind (∀ ∈ : repeat
for all ,
if ,
zu verbessern
,
,
)
∈
do
,
≔
,
,
until ∀ ∈ : ,
,
,
then
,
,
• Wieviele Wiederholungen sind nötig?
Fabian Kuhn
Informatik II, SS 2014
10
Bellman‐Ford
• Betrachte alle Kanten
,
und versuche
– solange, bis alle Distanzen korrekt sind (∀ ∈ : for i := 1 to n‐1 do
for all , ∈ do
,
if ,
, ≔
,
,
,
zu verbessern
,
,
)
then
,
Nach Wiederholungen ist
,
, , wobei
, die Länge des kürzesten Pfades aus höchstens Kanten bezeichnet.
Fabian Kuhn
Informatik II, SS 2014
11
Bellman‐Ford
Lemma: Falls der Graph keine negativen Kreise enthält, sind am Schluss alle Distanzen korrekt berechnet.
Fabian Kuhn
Informatik II, SS 2014
12
Negative Kreise erkennen
• Wir werden sehen: Falls es einen (von erreichbaren) negativen
Kreis hat, dann gibt es für irgendeine Kante eine Verbesserung.
∃
,
∈
∶
,
,
,
Bellman‐Ford Algorithmus
for i := 1 to n‐1 do
for all , ∈ do
,
if ,
, ≔
,
for all
, ∈ do
,
,
if
return false
return true
Fabian Kuhn
,
then
,
,
then
Informatik II, SS 2014
13
Negative Kreise erkennen
Lemma: Falls einen von erreichbaren negativen Kreis enthält, dann gibt der Bellman‐Ford Algorithmus false zurück.
Fabian Kuhn
Informatik II, SS 2014
14
Kürzeste Pfade
Ein Shortest Path Tree kann in der üblichen Art konstruiert werden.
Initialisierung:
•
,
0, für ∶
,
NULL
•
(Wurzel zeigt auf sich selbst), für In jedem Schleifendurchlauf:
...
if ,
,
, ≔
,
≔
• Am Schluss zeigt ,
∶
NULL
then
,
zum Parent in einem Shortest Path Tree
– falls es keine negativen Kreise hat...
Fabian Kuhn
Informatik II, SS 2014
15
Bellman‐Ford Alg.: Zusammenfassung
Theorem: Falls es einen von erreichbaren negativen Kreis hat, wird
dieser vom Bellman‐Ford Algorithmus erkennt. Falls kein solcher
negativer Kreis existiert, berechnet der Bellman‐Ford Algorithmus in Zeit
⋅
einen Shortest Path Tree.
• Man kann den Algorithmus einfach so abändern, dass er für alle , für welche ein kürzester Pfad von existiert, einen solchen Pfad
berechnet.
Fabian Kuhn
Informatik II, SS 2014
16
Bellman‐Ford Algorithmus: Beispiel
1
0
2
1
3
1
3
2
3
2
Fabian Kuhn
Informatik II, SS 2014
17
Routing‐Pfade in Netzwerken
Ziel: Optimale Routing‐Pfade zu einer Destination • Von jedem Knoten aus wollen wir wissen, zu welchem Nachbar
einen Nachricht geschickt werden muss.
• Entspricht einem Shortest Path Tree, falls alle Kanten umgedreht
werden (transponierter Graph)
Algorithmus:
• Knoten merken sich aktuelle Distanz
, und den aktuell
besten Nachbar
• Alle Knoten schauen gleichzeitig (parallel), ob’s bei irgendeinem
Nachbar eine Verbesserung gibt
∃ , ∈ ∶
,
,
,
• entspricht einer parallelen Version des Bellman‐Ford Algorithmus
Fabian Kuhn
Informatik II, SS 2014
18
Kürzeste Wege zw. allen Knotenpaaren
• all pairs shortest paths problem
Berechne single‐source shortest paths für alle Knoten
• Dijkstras Algorithmus mit allen Knoten:
Laufzeit: ⋅
LaufzeitDijkstra ∈
log
– Problem: funktioniert nur bei nichtnegativen Kantengewichten
• Bellman‐Ford Algorithmus mit allen Knoten:
Laufzeit: ⋅
LaufzeitBF ∈
∈
– Problem: langsam...
Fabian Kuhn
Informatik II, SS 2014
19
Distanzen zw. allen Knotenpaaren
• Wir beschränken uns zur Einfachheit auf Distanzen
• Anstatt mit Adjazenzlisten werden wir dieses Mal mit der Adjazenzmatrix arbeiten
• Oder etwas genauer, mit einer Distanzmatrix
• Initialisierung:
1
1
2
2
1
3
3
3
1
2
3
4
5
2
Fabian Kuhn
Informatik II, SS 2014
20
Distanzmatrix
Nach Initialisierung: • Matrix : Distanzen, falls man nur Pfade bestehend aus
Kante verwenden darf
Pfade aus
Kanten?
• Ziel: Matrix : Distanzen durch Pfade aus
Fabian Kuhn
Informatik II, SS 2014
1
2 Kanten
21
Distanzmatrix
Pfade aus
Kanten?
• Matrix : Distanzen, falls nur Pfade aus
werden dürfen
2 Kanten benutzt
Rekursive Berechnung:
Fabian Kuhn
Informatik II, SS 2014
22
Distanzmatrix und Matrixmultiplikation
Berechnung von (aus
Matrixmultiplikation von und ):
und :
Definition: ⊙
• Matrixmultiplikation in der sogenannten Min‐Plus‐Algebra
Fabian Kuhn
Informatik II, SS 2014
23
Distanzmatrix berechnen
Algorithmus zum Berechnen der Distanzmatrix
≔
for ≔ 2 to
1 do
≔
⊙
oder ausgeschrieben...
≔
for ≔ 2 to
1 do
for ≔ 1 to
do
for ≔ 1 to
do
, ≔
,
for ≔ 1 to
do
if
,
, ≔
Fabian Kuhn
Informatik II, SS 2014
,
,
,
,
then
24
Herunterladen