kapitel 5: graphen · motivation zu graphen • viele reale fragestellungen lassen sich durch...

94
DBS Kapitel 5: Graphen Graph-Repräsentationen Kürzeste Wege Minimale Spannbäume Flussnetzwerke Prof. Dr. Thomas Seidl

Upload: others

Post on 28-Oct-2019

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

DBS

Kapitel 5: Graphen

Graph-RepräsentationenKürzeste Wege

Minimale SpannbäumeFlussnetzwerke

Prof. Dr. Thomas Seidl

Page 2: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Motivation zu Graphen

• Viele reale Fragestellungen lassen sich durch Graphen darstellen

Algorithmen und Datenstrukturen - Kapitel 5 2

Page 3: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Motivation zu Graphen

• Bezogen auf einen Graphen ergeben sich unterschiedliche Fragen:– Existiert eine Verbindung zwischen zwei Knoten A und B? – Existiert eine zweite Verbindung, falls die erste blockiert ist?– Wie lautet die kürzeste Verbindung von A nach B?– Wie sieht ein minimaler Spannbaum zu einem Graphen aus?– Wie plane ich eine optimale Rundreise?

(Traveling Salesman Problem)

Algorithmen und Datenstrukturen - Kapitel 5 3

Page 4: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Gerichteter Graph

Ein gerichteter Graph 𝐺𝐺 = 𝑉𝑉,𝐸𝐸 (engl. digraph = "directed graph") istein Tupel einer Menge 𝑉𝑉, deren Elemente Knoten (nodes, vertices)heißen, und einer Menge 𝐸𝐸 ⊆ 𝑉𝑉 × 𝑉𝑉, deren Elemente Kanten (edges,arcs) heißen.

Bemerkungen:• |𝑉𝑉| = Knotenanzahl• Wir betrachten hier nur endliche Graphen: 0 ≤ 𝑉𝑉 ≤ ∞• 𝐸𝐸 ≤ 𝑉𝑉 2 = Kantenanzahl• Meist werden die Knoten durchnummeriert: 𝑖𝑖 = 0, 1, 2, … , 𝑉𝑉 − 1

Algorithmen und Datenstrukturen - Kapitel 5 4

Page 5: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Gerichteter Graph

Graphische Darstellung einer Kante von 𝑣𝑣 nach 𝑤𝑤:

Begriffe:• 𝑣𝑣 ist Vorgänger von 𝑤𝑤• 𝑤𝑤 ist Nachfolger von 𝑣𝑣• 𝑣𝑣 und 𝑤𝑤 sind Nachbarn und heißen adjazent

Algorithmen und Datenstrukturen - Kapitel 5 5

𝑣𝑣 𝑤𝑤

Page 6: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

0 1 2

3 4

Gerichteter Graph: Beispiel

• 𝑉𝑉 = 0,1,2,3,4• 𝐸𝐸 = 0,1 , 0,3 , 1,0 , 1,3 , 2,2 , 2,4 , 3,4 , 4,2

Algorithmen und Datenstrukturen - Kapitel 5 6

Page 7: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Gerichteter Graph: Definitionen

• Grad eines Knotens := Anzahl der ein- und ausgehenden Kanten

• Ein Pfad ist eine Folge von Knoten 𝑣𝑣0, … , 𝑣𝑣𝑛𝑛−1 mit 𝑣𝑣𝑖𝑖 , 𝑣𝑣𝑖𝑖+1 ∈ 𝐸𝐸 für 0 ≤ 𝑖𝑖 ≤ 𝑛𝑛 − 1, also eine Folge „zusammenhängender“ Kanten.

• Länge eines Pfades := Anzahl der Kanten auf dem Pfad

• Ein Pfad heißt einfach, wenn alle Knoten auf dem Pfad paarweise verschieden sind.

• Ein Zyklus ist ein Pfad mit 𝑣𝑣0 = 𝑣𝑣𝑛𝑛−1 und Länge 𝑛𝑛 ≥ 2.

• Ein Teilgraph 𝐺𝐺′ = 𝑉𝑉′,𝐸𝐸′ eines Graphen 𝐺𝐺 = 𝑉𝑉,𝐸𝐸 ist ein Graph mit 𝑉𝑉′ ⊆ 𝑉𝑉 und 𝐸𝐸′ ⊆ 𝐸𝐸 ∩ 𝑉𝑉′ × 𝑉𝑉′ .

Algorithmen und Datenstrukturen - Kapitel 5 7

Page 8: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Gerichteter Graph: Markierungen

• Man kann Markierungen oder Beschriftungen für Kanten und Knoten einführen.

• Häufig verwendet: Kostenfunktionen für Kanten

• Notation:– 𝑐𝑐 𝑣𝑣,𝑤𝑤 oder 𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 𝑣𝑣,𝑤𝑤 , 𝑐𝑐 𝑣𝑣,𝑤𝑤

• Bedeutung: – Entfernung zwischen 𝑣𝑣 und 𝑤𝑤– Reisezeit– Reisekosten– …

Algorithmen und Datenstrukturen - Kapitel 5 8

Page 9: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Ungerichteter Graph

Ein ungerichteter Graph ist ein gerichteter Graph, in dem die Relation𝐸𝐸 symmetrisch ist:

𝑣𝑣,𝑤𝑤 ∈ 𝐸𝐸 ⇒ 𝑤𝑤, 𝑣𝑣 ∈ 𝐸𝐸

Die graphische Darstellung wählt man ohne Pfeil:

Bemerkung:

• Die eingeführten Begriffe (Grad eines Knoten, Pfad, ...) definiert man analog zu denen für gerichtete Graphen.

• Bisweilen sind Modifikationen erforderlich, z.B. muss ein Zyklus hier mindestens drei Knoten haben.

Algorithmen und Datenstrukturen - Kapitel 5 9

𝑣𝑣 𝑤𝑤

Page 10: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Repräsentationen von Graphen

• Man kann Graphen je nach Zielsetzung knoten- oder kanten-orientiert abspeichern.

• Die knotenorientierte Darstellungsform ist gebräuchlicher und existiert in verschiedenen Variationen.

Die Adjazenzmatrix 𝐴𝐴 ist eine boolesche Matrix mit:

𝐴𝐴𝑖𝑖𝑖𝑖 = � 𝑐𝑐𝑟𝑟𝑟𝑟𝑟𝑟 falls 𝑣𝑣𝑖𝑖 ,𝑣𝑣𝑖𝑖 ∈ 𝐸𝐸𝑓𝑓𝑓𝑓𝑓𝑓𝑐𝑐𝑟𝑟 sonst

Eine solche Matrix [𝐴𝐴𝑖𝑖𝑖𝑖] lässt sich als Array 𝐴𝐴 𝑖𝑖][𝑗𝑗 darstellen.

Algorithmen und Datenstrukturen - Kapitel 5 10

Page 11: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Boolesche Adjazenzmatrix – Beispiel

Für den Beispielgraph 𝐺𝐺1 ergibt sich folgende Adjazenzmatrix mit der Konvention true = 1, false = 0:

Algorithmen und Datenstrukturen - Kapitel 5 11

0 1 2 3 40 0 1 0 1 0

1 1 0 0 1 0

2 0 0 1 0 1

3 0 0 0 0 1

4 0 0 1 0 0

nach

von

0 1 2

3 4

Page 12: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Adjazenzmatrix

• Vorteile– Entscheidung, ob 𝑖𝑖, 𝑗𝑗 ∈ 𝐸𝐸 geht in Zeit 𝑂𝑂 1

• Nachteile– Platzbedarf stets 𝑂𝑂 𝑉𝑉 2 , ineffizient falls 𝐸𝐸 ≪ 𝑉𝑉 2

– Initialisierung benötigt Zeit 𝑂𝑂 𝑉𝑉 2

• Kantenbeschriftung– anstelle von booleschen Werten lassen sich auch

Zusatzinformationen in der Matrix speichern– Bsp: Kosten; Weglängen– Definition Kosten-Adjazenzmatrix:

mit 𝑐𝑐 𝑣𝑣𝑖𝑖 , 𝑣𝑣𝑖𝑖 Kosten für die Kante zwischen 𝑣𝑣𝑖𝑖 und 𝑣𝑣𝑗𝑗

• Achtung: Bei boolescher Adjazenzmatrix bedeutet 𝐴𝐴 𝑖𝑖, 𝑗𝑗 = 0, dass keine Kante besteht; bei Kostenadjazenzmatrix, dass die Kosten 𝑐𝑐(𝑣𝑣𝑖𝑖 , 𝑣𝑣𝑖𝑖) = 0 sind.

Algorithmen und Datenstrukturen - Kapitel 5 12

∞∈

=sonst

EvvvvcA jiji

ij

),(),(

Page 13: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Adjazenzliste

• Für jeden Knoten wird eine Liste der Nachbarknoten angelegt.

• Für G1 ergibt sich folgende Adjazenzliste:

Algorithmen und Datenstrukturen - Kapitel 5 13

1 3

0

2

4

2

3

4

0

1

2

3

4

0 1 2

3 4

Page 14: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Adjazenzliste

• Vorteile– geringer Platzbedarf von 𝑂𝑂 𝑉𝑉 + 𝐸𝐸– Initialisierung in Zeit 𝑂𝑂 𝑉𝑉 + 𝐸𝐸

• Nachteile

– Entscheidung, ob 𝑖𝑖, 𝑗𝑗 ∈ 𝐸𝐸 benötigt 𝑂𝑂 𝐸𝐸𝑉𝑉

Zeit im Average Case

• Kantenbeschriftung– als Zusatzinformation bei Listenelementen

Algorithmen und Datenstrukturen - Kapitel 5 14

Page 15: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Expansion eines Graphen

Die Expansion 𝑋𝑋𝐺𝐺 𝑣𝑣 eines Graphen 𝐺𝐺 in einem Knoten 𝑣𝑣 ist ein Baum,der wie folgt definiert ist:

• Falls 𝑣𝑣 keine Nachfolger hat, ist 𝑋𝑋𝐺𝐺 𝑣𝑣 nur der Knoten 𝑣𝑣.

• Falls 𝑣𝑣1, … , 𝑣𝑣𝑘𝑘 die Nachfolger von 𝑣𝑣 sind, ist 𝑋𝑋𝐺𝐺 𝑣𝑣 der Baum mit der Wurzel 𝑣𝑣 und den Teilbäumen 𝑋𝑋𝐺𝐺 𝑣𝑣1 , … ,𝑋𝑋𝐺𝐺 𝑣𝑣𝑘𝑘 .

Algorithmen und Datenstrukturen - Kapitel 5 15

Page 16: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Expansion eines Graphen: Beispiel

Algorithmen und Datenstrukturen - Kapitel 5 16

0 1 2

3 4Beispielgraph 𝐺𝐺1 in seiner Expansion 𝑋𝑋𝐺𝐺 𝑣𝑣 mit 𝑣𝑣 = 0

1...

0

1

0 3

3

4

2

4

2

2

42

4

2

42

3

4

2

1

3

43

0

... ......

......

......

...

Page 17: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Expansion eines Graphen: Anmerkungen

• Die Knoten des Graphen können mehrfach im Baum vorkommen.

• Ein Baum ist unendlich, falls der Graph Zyklen hat.

• Der Baum 𝑋𝑋𝐺𝐺 𝑣𝑣 stellt die Menge aller Pfade dar, die von 𝑣𝑣ausgehen.

Algorithmen und Datenstrukturen - Kapitel 5 17

Page 18: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Graph-Durchlauf

Entspricht Baum-Durchlauf durch Expansion (ggf. mit Abschneiden)

• Tiefendurchlauf: preorder traversal (depth first)

• Breitendurchlauf: level order traversal

Wichtige Modifikation:

1. Schon besuchte Knoten müssen markiert werden, weil Graph-knoten im Durchlauf mehrfach vorkommen können. (Zyklen!)

2. Abbruch des Durchlaufs bei schon besuchten Knoten.

Algorithmen und Datenstrukturen - Kapitel 5 18

Page 19: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Graph-Durchlauf: Beispiel

Algorithmen und Datenstrukturen - Kapitel 5 19

𝐺𝐺1 mit Startknoten: 𝑣𝑣 = 0

0

1 3

4

2

1

23

4

5

Tiefendurchlauf: Breitendurchlauf:0

3

4

2

1

2

3

4

5

1

0 1 2

3 4

Page 20: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Ansatz für Graph-Durchlauf

1. Initialisierung: markiere alle Knoten als „not visited“

2. Abarbeiten der Knotenif (node „not visited“) then

– bearbeite– markiere: „visited“– weitergehen zu Nachfolger

Für die Markierung „visited“ reicht der Typ boolean. Für andere Berechnungen auf Graphen benötigt man aber auch mehr als die zwei Werte „true“ and „false“.

Algorithmen und Datenstrukturen - Kapitel 5 20

Page 21: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Markierungen beim Durchlauf

Während des Graph-Durchlaufs werden folgende Markierungen für die Graph-Knoten verwendet:

• Ungesehene Knoten (unseen vertices):Knoten, die noch nicht erreicht worden sind: 𝑣𝑣𝑓𝑓𝑓𝑓[𝑣𝑣] = 0

• Baum-Knoten (tree vertices):Knoten, die schon besucht und abgearbeitet sind. Diese Knoten ergeben die Expansion: 𝑣𝑣𝑓𝑓𝑓𝑓[𝑣𝑣] = 𝑖𝑖𝑖𝑖 > 0

• Rand-Knoten (fringe vertices), aktive Knoten:Knoten, die über eine Kante mit einem Baum-Knoten verbunden sind: 𝑣𝑣𝑓𝑓𝑓𝑓[𝑣𝑣] = −1

Algorithmen und Datenstrukturen - Kapitel 5 21

Page 22: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Beliebiges Auswahlkriterium

• Start: Markiere den Startknoten als Rand-Knoten und alle anderen Knoten als ungesehene Knoten.

• Schleife: repeat

– Wähle einen Rand-Knoten x mittels eines Auswahlkriteriums (depth first, breadth first, priority first).

– Dazu: Priority Queue, – Markiere x als Baum-Knoten und bearbeite x.– Markiere alle ungesehenen Nachbar-Knoten von x als Rand-

Knoten.

… until (alle Knoten abgearbeitet)

Algorithmen und Datenstrukturen - Kapitel 5 22

Page 23: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Topologisches Sortieren

• Abhängigkeiten zwischen Aktionen („erst x, dann y“)• Gesucht: Lineare Ordnung der Knoten, sodass für alle 𝑟𝑟, 𝑣𝑣 ∈ 𝐸𝐸 der

Knoten 𝑟𝑟 „vor“ 𝑣𝑣 liegt. → Abarbeitungsfolge/-plan der Aktionen

• formal: Einbettung einer Halbordnung/partiellen Ordnung (reflexiv, transitiv, antisymmetrisch) in eine lineare/totale Ordnung

Algorithmen und Datenstrukturen - Kapitel 5 23

Socken

Schuhe

Hemd

Uhr

U‘wäsche

Hose

Gürtel Krawatte

Jacke

Page 24: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Topologisches Sortieren und DAGs

• topologische Sortierung genau dann möglich, wenn Graph keine Zyklen enthält– anschaulich: alle Kanten „zeigen nach rechts“

• DAG: directed acyclic graph / gerichteter Graph ohne Zyklen• topologische Sortierung im Allgemeinen nicht eindeutig

Algorithmen und Datenstrukturen - Kapitel 5 24

Socken Schuhe Hemd UhrU‘wäsche Hose Gürtel Krawatte Jacke

Socken SchuheHemd UhrU‘wäsche Hose Gürtel Krawatte Jacke

Page 25: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Idee zum Algorithmus

• Nutze Informationen über Anzahl der Vorgänger eines Knotens– Knoten ohne Vorgänger können direkt abgearbeitet werden– Falls Knoten abgearbeitet wurde, verringert sich für alle seine

Nachfolger die Anzahl deren Vorgänger um 1– falls für einen Knoten die Vorgängeranzahl 0 erreicht, kann

auch dieser ausgegeben werden• alle seine Vorgängerknoten wurden bereits abgearbeitet

• Bemerkung: Es existiert ein alternativer Algorithmus, der auf der Tiefensuche basiert.

Algorithmen und Datenstrukturen - Kapitel 5 25

Page 26: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Algorithmus zum topologischen Sortieren

TopoSort(DAG G){S = Ø // Menge der abgearbeiteten Knotenfor (i=0,i<n, i++) {P[i] = Anzahl Vorgänger des Knotens i

}while V \ S ≠ Ø {

wähle w ∈ V \ S mit P[w]==0;gib w aus;S = S ∪ {w};für jeden Nachfolger v von w {

P[v]--;}

}}

Algorithmen und Datenstrukturen - Kapitel 5 26

// nicht-deterministische Auswahl, z.B. mit Hilfe einer Prioritäts-warteschlange für V\S (vgl. Heap)

Page 27: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Kürzeste Wege

• Problemstellung: Suche kürzesten Weg1. Von einem Knoten zu allen anderen:

„Single Source Shortest Path“2. Von allen Knoten zu einem Ziel:

„Single Destination Shortest Path“3. Von allen Knoten zu allen anderen:

„All Pairs Shortest Path“• Gegeben: Gerichteter Graph 𝐺𝐺 mit Kostenfunktion

(=Adjazenzmatrix)

𝑐𝑐 𝑣𝑣,𝑤𝑤 �≥ 0 , falls eine Kante von 𝑣𝑣 nach 𝑤𝑤 existiert= ∞ , falls keine Kante von 𝑣𝑣 nach 𝑤𝑤 existiert= 0 , für 𝑤𝑤 = 𝑣𝑣

Startknoten 𝑣𝑣0, Endknoten 𝑤𝑤• Gesucht: Pfad von 𝑣𝑣0 zu jedem Knoten 𝑤𝑤 mit minimalen

Gesamtkosten

Algorithmen und Datenstrukturen - Kapitel 5 27

Page 28: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Eigenschaften von Pfaden

• Pfadkosten können durch Erweiterung eines Pfades nur wachsen, da Kantengewichte stets positiv sind.

• Falls beste Pfade von 𝑣𝑣0 zu allen anderen Knoten 𝑉𝑉 − 𝑣𝑣0 höhere Kosten haben, ist der kürzeste Pfad bereits gefunden.

• Ein kürzester Pfad hat keinen Zyklus.

• Ein kürzester Pfad hat max. (|𝑉𝑉| − 1) Kanten.

• Notation:– 𝑆𝑆𝑘𝑘: Menge von 𝑘𝑘 Knoten 𝑣𝑣 mit 𝑘𝑘 besten Pfaden von 𝑣𝑣0 nach 𝑣𝑣– 𝐷𝐷𝑘𝑘 𝑣𝑣 : Kosten/Distanz des besten Pfads von 𝑣𝑣0 über maximal 𝑘𝑘 Knoten in 𝑆𝑆𝑘𝑘 nach 𝑣𝑣

Algorithmen und Datenstrukturen - Kapitel 5 28

Page 29: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Dijkstra-Algorithmus

• Edsger Wybe Dijkstra (1930-2002): niederländischer Informatiker & Turingpreisträger

• Ziel: Berechnung des kürzesten Weges von einem Startknoten zu allenanderen Knoten im Graphen

• Idee: – Wir speichern im Array 𝐷𝐷 für jeden Knoten 𝑣𝑣 die aktuell gültige

Kostenschätzung. – Als Initialisierung verwenden wir die Kosten der direkten Pfade

aus der Adjazenzmatrix 𝑐𝑐 𝑣𝑣,𝑤𝑤 .– In jedem Schritt versuchen wir alle Pfade zu verbessern, indem

wir mögliche Zwischenknoten untersuchen, die den Pfad eventuell kürzer machen.

Algorithmen und Datenstrukturen - Kapitel 5 29

𝑣𝑣0𝑤𝑤

𝑣𝑣5

10

3

Page 30: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Dijkstra-Algorithmus: Implementierung

G: Graph, bestehend aus der Adjazenzmatrix c aller Graphknoten V𝑆𝑆: Menge der bereits abgearbeiteten Knoten𝐷𝐷: aktuelle Kostenschätzung für den Pfad von 𝑣𝑣0 zu allen anderen Knoten

Dijkstra(𝐺𝐺,𝑣𝑣0){𝑆𝑆 ← 𝑣𝑣0forall 𝑣𝑣 ∈ 𝑉𝑉 {𝐷𝐷 𝑣𝑣 ← 𝑐𝑐[𝑣𝑣0, 𝑣𝑣]

}while 𝑉𝑉 − 𝑆𝑆 ≠ ∅ {𝑤𝑤𝑚𝑚𝑖𝑖𝑛𝑛 ← argmin

𝑤𝑤∈V−𝑆𝑆𝐷𝐷(𝑤𝑤)

𝑆𝑆 ← 𝑆𝑆 ∪ 𝑤𝑤𝑚𝑚𝑖𝑖𝑛𝑛for each 𝑣𝑣 ∈ 𝑉𝑉 − 𝑆𝑆 {𝐷𝐷(𝑣𝑣) = min 𝐷𝐷 𝑣𝑣 ,𝐷𝐷 𝑤𝑤𝑚𝑚𝑖𝑖𝑛𝑛 + 𝑐𝑐 𝑤𝑤𝑚𝑚𝑖𝑖𝑛𝑛,𝑣𝑣

}}

}

Algorithmen und Datenstrukturen - Kapitel 5 30

Page 31: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Dijkstra-Algorithmus graphisch

Algorithmen und Datenstrukturen - Kapitel 5 31

10

5

1

92 3

7

4 6

2

A

B

C

D

E

𝒌𝒌 𝒘𝒘𝒌𝒌 𝑺𝑺𝒌𝒌 𝑫𝑫𝒌𝒌 𝑩𝑩 𝑫𝑫𝒌𝒌 𝑪𝑪 𝑫𝑫𝒌𝒌 𝑫𝑫 𝑫𝑫𝒌𝒌 𝑬𝑬

Adjazenzmatrix

0 10 5 ∞ ∞∞ 0 2 1 ∞∞ 3 0 9 2∞ ∞ ∞ 0 47 ∞ ∞ 6 0

Page 32: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Dijkstra-Algorithmus graphisch

Algorithmen und Datenstrukturen - Kapitel 5 32

10

5

1

92 3

7

4 6

2

A

B

C

D

E

𝒌𝒌 𝒘𝒘𝒌𝒌 𝑺𝑺𝒌𝒌 𝑫𝑫𝒌𝒌 𝑩𝑩 𝑫𝑫𝒌𝒌 𝑪𝑪 𝑫𝑫𝒌𝒌 𝑫𝑫 𝑫𝑫𝒌𝒌 𝑬𝑬0 − 𝐴𝐴 10 5 ∞ ∞

Adjazenzmatrix

0 10 5 ∞ ∞∞ 0 2 1 ∞∞ 3 0 9 2∞ ∞ ∞ 0 47 ∞ ∞ 6 0

Page 33: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Dijkstra-Algorithmus graphisch

Algorithmen und Datenstrukturen - Kapitel 5 33

10

5

1

92 3

7

4 6

2

A

B

C

D

E

𝒌𝒌 𝒘𝒘𝒌𝒌 𝑺𝑺𝒌𝒌 𝑫𝑫𝒌𝒌 𝑩𝑩 𝑫𝑫𝒌𝒌 𝑪𝑪 𝑫𝑫𝒌𝒌 𝑫𝑫 𝑫𝑫𝒌𝒌 𝑬𝑬0 − 𝐴𝐴 10 𝟓𝟓 ∞ ∞

Adjazenzmatrix

0 10 5 ∞ ∞∞ 0 2 1 ∞∞ 3 0 9 2∞ ∞ ∞ 0 47 ∞ ∞ 6 0

Page 34: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Dijkstra-Algorithmus graphisch

Algorithmen und Datenstrukturen - Kapitel 5 34

10

5

1

92 3

7

4 6

2

A

B

C

D

E

𝒌𝒌 𝒘𝒘𝒌𝒌 𝑺𝑺𝒌𝒌 𝑫𝑫𝒌𝒌 𝑩𝑩 𝑫𝑫𝒌𝒌 𝑪𝑪 𝑫𝑫𝒌𝒌 𝑫𝑫 𝑫𝑫𝒌𝒌 𝑬𝑬0 − 𝐴𝐴 10 5 ∞ ∞1 𝐶𝐶 𝐴𝐴,𝐶𝐶 8 5 14 7

Adjazenzmatrix

0 10 5 ∞ ∞∞ 0 2 1 ∞∞ 3 0 9 2∞ ∞ ∞ 0 47 ∞ ∞ 6 0

Page 35: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Dijkstra-Algorithmus graphisch

Algorithmen und Datenstrukturen - Kapitel 5 35

10

5

1

92 3

7

4 6

2

A

B

C

D

E

𝒌𝒌 𝒘𝒘𝒌𝒌 𝑺𝑺𝒌𝒌 𝑫𝑫𝒌𝒌 𝑩𝑩 𝑫𝑫𝒌𝒌 𝑪𝑪 𝑫𝑫𝒌𝒌 𝑫𝑫 𝑫𝑫𝒌𝒌 𝑬𝑬0 − 𝐴𝐴 10 5 ∞ ∞1 𝐶𝐶 𝐴𝐴,𝐶𝐶 8 5 14 𝟕𝟕

Adjazenzmatrix

0 10 5 ∞ ∞∞ 0 2 1 ∞∞ 3 0 9 2∞ ∞ ∞ 0 47 ∞ ∞ 6 0

Page 36: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Dijkstra-Algorithmus graphisch

Algorithmen und Datenstrukturen - Kapitel 5 36

10

5

1

92 3

7

4 6

2

A

B

C

D

E

𝒌𝒌 𝒘𝒘𝒌𝒌 𝑺𝑺𝒌𝒌 𝑫𝑫𝒌𝒌 𝑩𝑩 𝑫𝑫𝒌𝒌 𝑪𝑪 𝑫𝑫𝒌𝒌 𝑫𝑫 𝑫𝑫𝒌𝒌 𝑬𝑬0 − 𝐴𝐴 10 5 ∞ ∞1 𝐶𝐶 𝐴𝐴,𝐶𝐶 8 5 14 72 𝐸𝐸 𝐴𝐴,𝐶𝐶,𝐸𝐸 8 5 13 7

Adjazenzmatrix

0 10 5 ∞ ∞∞ 0 2 1 ∞∞ 3 0 9 2∞ ∞ ∞ 0 47 ∞ ∞ 6 0

Page 37: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Dijkstra-Algorithmus graphisch

Algorithmen und Datenstrukturen - Kapitel 5 37

10

5

1

92 3

7

4 6

2

A

B

C

D

E

𝒌𝒌 𝒘𝒘𝒌𝒌 𝑺𝑺𝒌𝒌 𝑫𝑫𝒌𝒌 𝑩𝑩 𝑫𝑫𝒌𝒌 𝑪𝑪 𝑫𝑫𝒌𝒌 𝑫𝑫 𝑫𝑫𝒌𝒌 𝑬𝑬0 − 𝐴𝐴 10 5 ∞ ∞1 𝐶𝐶 𝐴𝐴,𝐶𝐶 8 5 14 72 𝐸𝐸 𝐴𝐴,𝐶𝐶,𝐸𝐸 𝟖𝟖 5 13 7

Adjazenzmatrix

0 10 5 ∞ ∞∞ 0 2 1 ∞∞ 3 0 9 2∞ ∞ ∞ 0 47 ∞ ∞ 6 0

Page 38: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Dijkstra-Algorithmus graphisch

Algorithmen und Datenstrukturen - Kapitel 5 38

10

5

1

92 3

7

4 6

2

A

B

C

D

E

𝒌𝒌 𝒘𝒘𝒌𝒌 𝑺𝑺𝒌𝒌 𝑫𝑫𝒌𝒌 𝑩𝑩 𝑫𝑫𝒌𝒌 𝑪𝑪 𝑫𝑫𝒌𝒌 𝑫𝑫 𝑫𝑫𝒌𝒌 𝑬𝑬0 − 𝐴𝐴 10 5 ∞ ∞1 𝐶𝐶 𝐴𝐴,𝐶𝐶 8 5 14 72 𝐸𝐸 𝐴𝐴,𝐶𝐶,𝐸𝐸 8 5 13 73 𝐵𝐵 𝐴𝐴,𝐶𝐶,𝐸𝐸,𝐵𝐵 8 5 9 7

Adjazenzmatrix

0 10 5 ∞ ∞∞ 0 2 1 ∞∞ 3 0 9 2∞ ∞ ∞ 0 47 ∞ ∞ 6 0

Page 39: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Dijkstra-Algorithmus graphisch

Algorithmen und Datenstrukturen - Kapitel 5 39

10

5

1

92 3

7

4 6

2

A

B

C

D

E

𝒌𝒌 𝒘𝒘𝒌𝒌 𝑺𝑺𝒌𝒌 𝑫𝑫𝒌𝒌 𝑩𝑩 𝑫𝑫𝒌𝒌 𝑪𝑪 𝑫𝑫𝒌𝒌 𝑫𝑫 𝑫𝑫𝒌𝒌 𝑬𝑬0 − 𝐴𝐴 10 5 ∞ ∞1 𝐶𝐶 𝐴𝐴,𝐶𝐶 8 5 14 72 𝐸𝐸 𝐴𝐴,𝐶𝐶,𝐸𝐸 8 5 13 73 𝐵𝐵 𝐴𝐴,𝐶𝐶,𝐸𝐸,𝐵𝐵 8 5 𝟗𝟗 7

Adjazenzmatrix

0 10 5 ∞ ∞∞ 0 2 1 ∞∞ 3 0 9 2∞ ∞ ∞ 0 47 ∞ ∞ 6 0

Page 40: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Dijkstra-Algorithmus graphisch

Algorithmen und Datenstrukturen - Kapitel 5 40

10

5

1

92 3

7

4 6

2

A

B

C

D

E

𝒌𝒌 𝒘𝒘𝒌𝒌 𝑺𝑺𝒌𝒌 𝑫𝑫𝒌𝒌 𝑩𝑩 𝑫𝑫𝒌𝒌 𝑪𝑪 𝑫𝑫𝒌𝒌 𝑫𝑫 𝑫𝑫𝒌𝒌 𝑬𝑬0 − 𝐴𝐴 10 5 ∞ ∞1 𝐶𝐶 𝐴𝐴,𝐶𝐶 8 5 14 72 𝐸𝐸 𝐴𝐴,𝐶𝐶,𝐸𝐸 8 5 13 73 𝐵𝐵 𝐴𝐴,𝐶𝐶,𝐸𝐸,𝐵𝐵 8 5 9 74 𝐷𝐷 𝐴𝐴,𝐶𝐶,𝐸𝐸,𝐵𝐵,𝐷𝐷 8 5 9 7

Adjazenzmatrix

0 10 5 ∞ ∞∞ 0 2 1 ∞∞ 3 0 9 2∞ ∞ ∞ 0 47 ∞ ∞ 6 0

Page 41: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Dijkstra-Algorithmus: Analyse

• Liefert optimale Lösung, nicht nur Näherung

• Falls Zyklen mit negativen Kosten zugelassen wären, gäbe es keinen eindeutigen Pfad mit minimalen Kosten mehr

• Komplexität:

– Falls 𝐺𝐺 zusammenhängend, mit Adjazenzmatrix 𝑂𝑂 𝑉𝑉 2

– Einsatz als „All Pairs Shortest Path“ prinzipiell möglich,ergibt Zeitkomplexität 𝑂𝑂 𝑉𝑉 ⋅ 𝑉𝑉 2 = 𝑂𝑂 𝑉𝑉 3 .

Algorithmen und Datenstrukturen - Kapitel 5 41

-10

3 2A

B C

Page 42: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Floyd-Algorithmus

• Robert W Floyd (1936 – 2001): Amerikanischer Informatiker & Turingpreisträger

• „All Pairs Shortest Path“• Gegeben: Gerichteter Graph 𝐺𝐺 mit Kostenfunktion

𝑐𝑐 𝑣𝑣,𝑤𝑤 �≥ 0= ∞= 0

falls eine Kante 𝑣𝑣 nach 𝑤𝑤 existiertfalls keine Kante 𝑣𝑣 nach 𝑤𝑤 existiert

𝑣𝑣 = 𝑤𝑤• Gesucht: Pfad von jedem Knoten 𝑣𝑣 zu jedem Knoten 𝑤𝑤 mit

minimalen Gesamtkosten

• Idee:– Existierende Kanten im Graphen zugrunde legen– Versuche sukzessive, zwei Knoten über einen Zwischenknoten

günstiger zu verbinden als bisher– Lösung: Dynamische Programmierung

Algorithmen und Datenstrukturen - Kapitel 5 42

Page 43: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Floyd-Algorithmus: Dynamische Programmierung

• Grundidee– Betrachte alle Knoten der Reihe nach

als mögliche Zwischenknoten 𝑘𝑘– Speicherung in einer Matrix 𝑖𝑖[𝑖𝑖, 𝑗𝑗],

die in jedem Schritt aktualisiert wird

• Initialisierung durch direkte Kanten des gegebenen Graphen– Für alle 𝑖𝑖, 𝑗𝑗 ∈ 1, … , 𝑉𝑉 : setze 𝑖𝑖0 𝑖𝑖, 𝑗𝑗 = 𝑐𝑐 𝑖𝑖, 𝑗𝑗– Entspricht Lösung der Elementarprobleme

• Aktualisiere Matrix 𝑖𝑖 𝑖𝑖, 𝑗𝑗 für Zwischenknoten 𝑘𝑘:– Sind Wege über Knoten 𝑘𝑘 günstiger als bisherige Wege?– 𝑖𝑖𝑘𝑘[𝑖𝑖, 𝑗𝑗] = min 𝑖𝑖𝑘𝑘−1 𝑖𝑖, 𝑗𝑗 ,𝑖𝑖𝑘𝑘−1 𝑖𝑖, 𝑘𝑘 + 𝑖𝑖𝑘𝑘−1 𝑘𝑘, 𝑗𝑗– Entspricht Zusammensetzen der Teilergebnisse zur

Gesamtlösung

Algorithmen und Datenstrukturen - Kapitel 5 43

k

ji

𝑖𝑖𝑘𝑘−1 𝑖𝑖, 𝑘𝑘 𝑖𝑖𝑘𝑘−1 𝑘𝑘, 𝑗𝑗

𝑖𝑖𝑘𝑘−1[𝑖𝑖, 𝑗𝑗]

Page 44: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Floyd-Algorithmus: Pseudo-Code

Gegeben: Kosten 𝑐𝑐 𝑣𝑣,𝑤𝑤 ∈ ℝ ∪ {∞} von Knoten 𝑣𝑣 nach 𝑤𝑤

Für alle Knotenpaare 𝑖𝑖, 𝑗𝑗 ∈ 0, … , 𝑉𝑉 − 1𝑖𝑖 𝑖𝑖 𝑗𝑗 ← 𝑐𝑐 𝑖𝑖, 𝑗𝑗

Für alle 𝑖𝑖 ∈ 0, … , 𝑉𝑉 − 1Für alle 𝑗𝑗 ∈ 0, … , 𝑉𝑉 − 1

Für alle 𝑘𝑘 ∈ 0, … , 𝑉𝑉 − 1𝑖𝑖 𝑖𝑖 𝑗𝑗 ← min 𝑖𝑖 𝑖𝑖 𝑗𝑗 ,𝑖𝑖 𝑖𝑖 𝑘𝑘 + 𝑖𝑖 𝑘𝑘 𝑗𝑗

Algorithmen und Datenstrukturen - Kapitel 5 44

Falls Weg über 𝑘𝑘besser / kürzer alsbisher bester Weg, ist dieser Weg nun der Favorit.

Initialisierung von Matrix 𝑖𝑖:- Jeder Knoten hat Distanz

0 zu sich selbst- Sonst übernehmen wir

erst einmal die direkten (schon bekannten) Verbindungen

k

ji

𝑖𝑖 𝑖𝑖, 𝑘𝑘 𝑖𝑖 𝑘𝑘, 𝑗𝑗

𝑖𝑖[𝑖𝑖, 𝑗𝑗]

Page 45: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Floyd-Algorithmus: Weginformationen

Gegeben: Kosten 𝑐𝑐 𝑣𝑣,𝑤𝑤 ∈ ℝ ∪ {∞} von Knoten 𝑣𝑣 nach 𝑤𝑤

Für alle Knotenpaare 𝑖𝑖, 𝑗𝑗 ∈ 0, … , 𝑉𝑉 − 1𝑖𝑖 𝑖𝑖 𝑗𝑗 ← 𝑐𝑐 𝑖𝑖, 𝑗𝑗𝑃𝑃 𝑖𝑖 𝑗𝑗 ← 𝑗𝑗 (sonst undef.)

Für alle 𝑖𝑖 ∈ 0, … , 𝑉𝑉 − 1Für alle 𝑗𝑗 ∈ 0, … , 𝑉𝑉 − 1

Für alle 𝑘𝑘 ∈ 0, … , 𝑉𝑉 − 1𝑖𝑖 𝑖𝑖 𝑗𝑗 ← min 𝑖𝑖 𝑖𝑖 𝑗𝑗 ,𝑖𝑖 𝑖𝑖 𝑘𝑘 + 𝑖𝑖 𝑘𝑘 𝑗𝑗𝑃𝑃 𝑖𝑖 𝑗𝑗 ← 𝑘𝑘

Algorithmen und Datenstrukturen - Kapitel 5 45

𝑃𝑃 speichert für zwei Knoten 𝑖𝑖, 𝑗𝑗 den Knoten 𝑘𝑘, der auf dem optimalen Pfad als nächster Knoten gewählt wird.

𝑃𝑃11 ⋯ 𝑃𝑃1𝑖𝑖 ⋯ 𝑃𝑃1𝑛𝑛⋮ ⋱ ⋮ ⋱ ⋮𝑃𝑃𝑖𝑖1 ⋯ 𝑃𝑃𝑖𝑖𝑖𝑖 ⋯ 𝑃𝑃𝑖𝑖𝑛𝑛⋮ ⋱ ⋮ ⋱ ⋮𝑃𝑃𝑛𝑛1 ⋯ 𝑃𝑃𝑛𝑛𝑖𝑖 ⋯ 𝑃𝑃𝑛𝑛𝑛𝑛

Der kürzeste Weg von 𝑖𝑖 nach 𝑗𝑗verläuft über 𝑃𝑃𝑖𝑖𝑖𝑖.

Page 46: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Floyd-Algorithmus: Beispiel

Algorithmen und Datenstrukturen - Kapitel 5 46

A B

C D

2

5

6

7

4

8

Initialisierung:0 5 2 ∞∞ 0 8 ∞∞ ∞ 0 74 6 ∞ 0

𝑘𝑘 = 𝐴𝐴0 5 2 ∞∞ 0 8 ∞∞ ∞ 0 74 6 𝟔𝟔 0

𝑘𝑘 = 𝐵𝐵0 5 2 ∞∞ 0 8 ∞∞ ∞ 0 74 6 6 0

𝑘𝑘 = 𝐶𝐶0 5 2 𝟗𝟗∞ 0 8 𝟏𝟏𝟓𝟓∞ ∞ 0 74 6 6 0

𝑘𝑘 = 𝐷𝐷0 5 2 9𝟏𝟏𝟗𝟗 0 8 15𝟏𝟏𝟏𝟏 𝟏𝟏𝟏𝟏 0 74 6 6 0

Page 47: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Floyd-Algorithmus: Beispiel

Algorithmen und Datenstrukturen - Kapitel 5 47

A B

C D

2

5

6

7

4

8

Initialisierung:0 5 2 ∞∞ 0 8 ∞∞ ∞ 0 74 6 ∞ 0

𝑘𝑘 = 𝐴𝐴0 5 2 ∞∞ 0 8 ∞∞ ∞ 0 74 6 𝟔𝟔 0

𝑘𝑘 = 𝐵𝐵0 5 2 ∞∞ 0 8 ∞∞ ∞ 0 74 6 6 0

𝑘𝑘 = 𝐶𝐶0 5 2 𝟗𝟗∞ 0 8 𝟏𝟏𝟓𝟓∞ ∞ 0 74 6 6 0

𝑘𝑘 = 𝐷𝐷0 5 2 9𝟏𝟏𝟗𝟗 0 8 15𝟏𝟏𝟏𝟏 𝟏𝟏𝟏𝟏 0 74 6 6 0

𝑃𝑃𝐴𝐴:𝐴𝐴 𝐵𝐵 𝐶𝐶 −− 𝐵𝐵 𝐶𝐶 −− − 𝐶𝐶 𝐷𝐷𝐴𝐴 𝐵𝐵 𝑨𝑨 𝐷𝐷

𝑃𝑃0:𝐴𝐴 𝐵𝐵 𝐶𝐶 −− 𝐵𝐵 𝐶𝐶 −− − 𝐶𝐶 𝐷𝐷𝐴𝐴 𝐵𝐵 − 𝐷𝐷

𝑃𝑃𝐵𝐵:𝐴𝐴 𝐵𝐵 𝐶𝐶 −− 𝐵𝐵 𝐶𝐶 −− − 𝐶𝐶 𝐷𝐷𝐴𝐴 𝐵𝐵 𝐴𝐴 𝐷𝐷

𝑃𝑃𝐶𝐶:𝐴𝐴 𝐵𝐵 𝐶𝐶 𝑪𝑪− 𝐵𝐵 𝐶𝐶 𝑪𝑪− − 𝐶𝐶 𝐷𝐷𝐴𝐴 𝐵𝐵 𝐴𝐴 𝐷𝐷

𝑃𝑃𝐷𝐷:𝐴𝐴 𝐵𝐵 𝐶𝐶 𝐶𝐶𝑫𝑫 𝐵𝐵 𝐶𝐶 𝐶𝐶𝑫𝑫 𝑫𝑫 𝐶𝐶 𝐷𝐷𝐴𝐴 𝐵𝐵 𝐴𝐴 𝐷𝐷

Page 48: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Floyd-Algorithmus: Komplexität

• 3 geschachtelte Schleifen mit 𝑖𝑖, 𝑗𝑗, 𝑘𝑘 über 𝑉𝑉

• Zeitkomplexität: 𝑂𝑂 𝑉𝑉 3

• Platzkomplexität: 𝑂𝑂 𝑉𝑉 2

• Warshall-Algorithmus– Aus demselben Jahr (1962) stammt ein Algorithmus von

Warshall, der statt Kosten nur die Existenz von Verbindungen betrachtet (transitive Hülle).

– Innere Schleife läuft auf booleschen Werten:falls ¬𝑖𝑖 𝑖𝑖 [𝑗𝑗]𝑖𝑖 𝑖𝑖 𝑗𝑗 = 𝑖𝑖 𝑖𝑖 𝑘𝑘 ∧ 𝑖𝑖[𝑘𝑘][𝑗𝑗]

Algorithmen und Datenstrukturen - Kapitel 5 48

Page 49: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Floyd-Algorithmus: Negative Kanten

• Wir haben negative Kanten nicht ausgeschlossen: 𝑐𝑐 𝑣𝑣,𝑤𝑤 ∈ ℝ ∪ {∞}

• Was passiert mit einer negativen Kante?

• Scheint ok. Noch ein Beispiel:

Algorithmen und Datenstrukturen - Kapitel 5 49

A B

C D

2

5

6

7

-4

8

𝑖𝑖 =

0 5 2 9𝟏𝟏𝟏𝟏 0 8 15𝟏𝟏 𝟖𝟖 0 7−𝟒𝟒 𝟏𝟏 −𝟐𝟐 0

A B

C D

2

5

6

-7

4

8

𝑖𝑖 =

−𝟏𝟏 𝟏𝟏 𝟏𝟏 −𝟔𝟔𝟓𝟓 0 𝟕𝟕 𝟎𝟎−𝟏𝟏 −𝟏𝟏 −𝟏𝟏 −𝟖𝟖𝟏𝟏 𝟓𝟓 𝟓𝟓 −𝟐𝟐

Page 50: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Negative Kreise

• Einzelne negative Kanten → kein Problem, kürzeste Wege bleiben meist wohldefiniert.

• Negative Kreise

– Falls es einen Pfad von 𝑣𝑣 nach 𝐾𝐾 und einen Pfad von 𝐾𝐾 nach 𝑤𝑤gibt mit 𝐾𝐾 < 0, dann ist der kürzeste Pfad von 𝑣𝑣 nach 𝑤𝑤 nicht definiert.

– Für 𝐾𝐾 ≥ 0 gibt es keine Probleme. Der kürzeste Pfad ist wohldefiniert.

Algorithmen und Datenstrukturen - Kapitel 5 50

𝐾𝐾1

−1

𝑤𝑤𝑣𝑣 𝐴𝐴

𝐾𝐾2 𝐾𝐾3

𝐾𝐾6 𝐾𝐾5

𝐾𝐾4

3−1

−1

−1

−13 2𝐾𝐾

Page 51: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Informierte Suche

• Dijkstra-Algorithmus: – Greedy: Füge Kante sofort hinzu, falls sie geringere Kosten

verspricht– Kosten zu allen potentiellen Zielen (= Knoten) werden bestimmt

• Verbesserung: Falls das Ziel bekannt ist, können Kanten gezielt ausgewählt werden

• Eine Heuristik ist eine Strategie, um das Auffinden von Lösungen zu beschleunigen, indem zusätzliches Wissen genutzt wird.

• Viele Heuristiken orientieren sich an menschlichen Problemlösungen.

• Heuristik gibt in der Regel eine Schätzung von Kosten an.

Algorithmen und Datenstrukturen - Kapitel 5 51

Page 52: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

A*-Algorithmus: Idee

• Besuche zuerst Knoten, die wahrscheinlich schnell zum Ziel führen.• Jeder besuchte Knoten erhält einen Wert 𝑓𝑓 𝑥𝑥 , der angibt, wie

lange der Pfad vom Start zum Ziel über den Knoten 𝑥𝑥 im günstigsten Fall ist.

• Der Knoten mit dem niedrigsten 𝑓𝑓-Wert wird als nächstes untersucht:

𝑓𝑓 𝑥𝑥 = 𝑔𝑔 𝑥𝑥 + ℎ 𝑥𝑥• Dabei gibt

– 𝑔𝑔 𝑥𝑥 die tatsächlichen Kosten vom Startknoten 𝑆𝑆 zu 𝑥𝑥 und– ℎ 𝑥𝑥 die geschätzten Kosten von 𝑥𝑥 bis zum Zielknoten an.

• Die verwendete Heuristik ℎ 𝑥𝑥 darf die Kosten für keinen Knoten 𝑥𝑥überschätzen, da sonst die optimale Lösung vielleicht nicht gefunden wird.

Algorithmen und Datenstrukturen - Kapitel 5 52

𝑆𝑆 𝑥𝑥

𝑍𝑍

𝑔𝑔 𝑥𝑥 ℎ 𝑥𝑥

Page 53: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

A*-Algorithmus: Datenstrukturen

• Jeder Knoten des Graphen kann einer der folgenden Zustände zugeordnet werden. Die Knoten werden dementsprechend in Listen verwaltet:

– Der Knoten wurde noch nicht verarbeitet und wir kennen noch keinen Weg dorthin.

– Ein Weg zum Knoten ist bekannt, aber es könnte einen kürzeren Weg geben → OpenList

– Der kürzeste Weg zum Knoten wurde gefunden → ClosedList

Algorithmen und Datenstrukturen - Kapitel 5 53

Page 54: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

A*-Algorithmus: Beispiel

Idee: Darstellung des Straßen-netzes als gewichteter Graph.

Knoten:

• Jeder Knoten steht für eine Stadt. • Zwei Knoten sind verbunden wenn es eine direkte

Straßenverbindung zwischen den entsprechenden Städten gibt. • Die Kosten der Kanten entsprechen der Länge der Straße zwischen

den Städten.• Gesucht ist der kürzeste Weg von Stadt S nach Stadt Z.• Als Heuristik ℎ(𝑥𝑥) nutzen wir die Luftlinie zwischen der Stadt 𝑥𝑥 und

der Zielstadt Z.

Algorithmen und Datenstrukturen - Kapitel 5 54

C108k

m

Z0km

E87km

D140k

m

S222k

m

A158k

m

B96km

145km

70km

103km 116km

183km

102km

84km

53km

xh(x)

StadtLuftlinie zum Ziel=

Page 55: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

A*-Algorithmus: Beispiel

Algorithmen und Datenstrukturen - Kapitel 5 55

C108k

m

Z0km

E87km

D140k

m

S222k

m

A158k

m

B96km

145km

70km

103km 116km

183km

102km

84km

53km

= Zeiger auf den Vorgänger

Schritt OpenList (Stadt, f ) ClosedList (Stadt, Entfernung von S)

0 (S, 0) ---

Page 56: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

A*-Algorithmus: Beispiel

Algorithmen und Datenstrukturen - Kapitel 5 56

C108k

m

Z0km

E87km

D140k

m

S222k

m

A158k

m

B96km

145km

70km

103km 116km

183km

102km

84km

53km

= Zeiger auf den Vorgänger

Schritt OpenList (Stadt, f ) ClosedList (Stadt, Entfernung von S)

0 (S, 0) ---

1 (A, 228),(D, 285) (S, 0)

Page 57: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

A*-Algorithmus: Beispiel

Algorithmen und Datenstrukturen - Kapitel 5 57

C108k

m

Z0km

E87km

D140k

m

S222k

m

A158k

m

B96km

145km

70km

103km 116km

183km

102km

84km

53km

= Zeiger auf den Vorgänger

Schritt OpenList (Stadt, f ) ClosedList (Stadt, Entfernung von S)

0 (S, 0) ---

1 (A, 228),(D, 285) (S, 0)

2 (D, 285), (B, 269), (C, 231) (S, 0), (A, 70)

Page 58: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

A*-Algorithmus: Beispiel

Algorithmen und Datenstrukturen - Kapitel 5 58

C108k

m

Z0km

E87km

D140k

m

S222k

m

A158k

m

B96km

145km

70km

103km 116km

183km

102km

84km

53km

= Zeiger auf den Vorgänger

Schritt OpenList (Stadt, f ) ClosedList (Stadt, Entfernung von S)

0 (S, 0) ---

1 (A, 228),(D, 285) (S, 0)

2 (D, 285), (B, 269), (C, 231) (S, 0), (A, 70)

3 (D, 285), (B, 269), (Z, 306) (S, 0), (A, 70), (C, 123)

Page 59: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

A*-Algorithmus: Beispiel

Algorithmen und Datenstrukturen - Kapitel 5 59

= Zeiger auf den Vorgänger

Schritt OpenList (Stadt, f ) ClosedList (Stadt, Entfernung von S)

0 (S, 0) ---

1 (A, 228),(D, 285) (S, 0)

2 (D, 285), (B, 269), (C, 231) (S, 0), (A, 70)

3 (D, 285), (B, 269), (Z, 306) (S, 0), (A, 70), (C, 123)

4 (D, 285), (Z, 289) (S, 0), (A, 70), (C, 123), (B, 173)

C108k

m

Z0km

E87km

D140k

m

S222k

m

A158k

m

B96km

145km

70km

103km 116km

183km

102km

84km

53km

Page 60: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

A*-Algorithmus: Beispiel

Algorithmen und Datenstrukturen - Kapitel 5 60

= Zeiger auf den Vorgänger

Schritt OpenList (Stadt, f ) ClosedList (Stadt, Entfernung von S)

0 (S, 0) ---

1 (A, 228),(D, 285) (S, 0)

2 (D, 285), (B, 269), (C, 231) (S, 0), (A, 70)

3 (D, 285), (B, 269), (Z, 306) (S, 0), (A, 70), (C, 123)

4 (D, 285), (Z, 289) (S, 0), (A, 70), (C, 123), (B, 173)

5 (Z, 289),(E, 316) (S, 0), (A, 70), (C, 123), (B, 173),(D, 145)

C108k

m

Z0km

E87km

D140k

m

S222k

m

A158k

m

B96km

145km

70km

103km 116km

183km

102km

84km

53km

Page 61: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

A*-Algorithmus: Beispiel

Algorithmen und Datenstrukturen - Kapitel 5 61

= Zeiger auf den Vorgänger

Schritt OpenList (Stadt, f ) ClosedList (Stadt, Entfernung von S)

0 (S, 0) ---

1 (A, 228),(D, 285) (S, 0)

2 (D, 285), (B, 269), (C, 231) (S, 0), (A, 70)

3 (D, 285), (B, 269), (Z, 306) (S, 0), (A, 70), (C, 123)

4 (D, 285), (Z, 289) (S, 0), (A, 70), (C, 123), (B, 173)

5 (Z, 289),(E, 316) (S, 0), (A, 70), (C, 123), (B, 173),(D, 145)

6 (E, 316) Pfad gefunden: S A B Z

C108k

m

Z0km

E87km

D140k

m

S222k

m

A158k

m

B96km

145km

70km

103km 116km

183km

102km

84km

53km

Page 62: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

A*-Algorithmus: Qualitätseigenschaften

• VollständigWenn es eine Lösung gibt, so wird diese auch gefunden.

• OptimalEs wird immer eine optimale Lösung gefunden.

• Optimal effizientBezogen auf die Laufzeit gibt es keinen Algorithmus, der die gleiche Heuristik verwendet und weniger Knoten besucht.

Algorithmen und Datenstrukturen - Kapitel 5 62

Page 63: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

A*-Algorithmus: Eigenschaft der Heuristik

• Die verwendete Heuristik für ℎ 𝑥𝑥 darf die Kosten für keinen Knoten 𝑥𝑥überschätzen.

Werden die Kosten überschätzt, so ist die Optimalität des Algorithmus nicht mehr gewährleistet:

• Für die schlechteste Heuristik ℎ 𝑥𝑥 = 0 gilt:

− die geschätzten Kosten für jeden Knoten entsprechen genau den Kosten, um diesen Knoten zu erreichen.

− Der A*-Algorithmus bildet den Dijkstra-Algorithmus nach.

Algorithmen und Datenstrukturen - Kapitel 5 63

A100k

m

Z0km

158km

B96km100km 16km

100km

50km

S

OpenList ClosedList

(S, 0) ---

(A, 150),(B,196) (S, 0)

(B,196), (Z,150) (S, 0), (A, 150)

Page 64: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Minimaler Spannbaum

Gegeben: Ungerichteter zusammenhängender Graph 𝐺𝐺 = 𝑉𝑉,𝐸𝐸mit Kantengewichten 𝑐𝑐:𝐸𝐸 → ℝ.

Gesucht: Ungerichteter Subgraph 𝐺𝐺′ = (𝑉𝑉,𝐸𝐸′) mit

• 𝐸𝐸′ ⊆ 𝐸𝐸.• 𝐺𝐺′ ist zykelfrei und zusammenhängend.

(Äquivalent: 𝐺𝐺′ ist ein Baum).• Für alle Subgraphen 𝐺𝐺′′ = (𝑉𝑉,𝐸𝐸′′) gilt

�𝑒𝑒∈𝐸𝐸′

𝑐𝑐(𝑟𝑟) ≤ �𝑒𝑒∈𝐸𝐸′′

𝑐𝑐(𝑟𝑟)

Algorithmen und Datenstrukturen - Kapitel 5 64

Page 65: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Prim-Algorithmus

• Idee: – Beginne mit einem beliebigen Knoten des Graphen.– Finde sukzessive die minimale Kante, die den Subgraphen mit

einem noch nicht gewählten Knoten verbindet.– In jedem Schritt wird der aktuelle Subgraph um jeweils diese

Kante und den inzidenten Knoten erweitert.

• Komplexität ist 𝑂𝑂 𝑉𝑉 2 , denn für jeden neu einzufügenden Knoten werden die Kanten zu anderen Knoten überprüft.

Algorithmen und Datenstrukturen - Kapitel 5 65

𝑉𝑉′ ← 𝑣𝑣0 beliebig𝐸𝐸′ ← ∅Solange 𝑉𝑉 ≠ 𝑉𝑉′:𝑟𝑟, 𝑣𝑣 = argmin

𝑒𝑒∈𝑉𝑉′× 𝑉𝑉−𝑉𝑉′𝑐𝑐 𝑟𝑟

𝐸𝐸′ = 𝐸𝐸′ ∪ 𝑟𝑟, 𝑣𝑣𝑉𝑉′ = 𝑉𝑉′ ∪ 𝑣𝑣

Page 66: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Prim-Algorithmus: Beispiel

Algorithmen und Datenstrukturen - Kapitel 5 66

5

4

6

3

1

2

6 5

2

6

3 6

5

4

1

𝑽𝑽′ 𝑬𝑬′

Page 67: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Prim-Algorithmus: Beispiel

Algorithmen und Datenstrukturen - Kapitel 5 67

5

4

6

3

1

2

6 5

2

6

3 6

5

4

1

𝑽𝑽′ 𝑬𝑬′1 ∅

Page 68: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Prim-Algorithmus: Beispiel

Algorithmen und Datenstrukturen - Kapitel 5 68

5

4

6

3

1

2

6 5

2

6

3 6

5

4

1

𝑽𝑽′ 𝑬𝑬′1 ∅

1,3 1,3

Page 69: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Prim-Algorithmus: Beispiel

Algorithmen und Datenstrukturen - Kapitel 5 69

5

4

6

3

1

2

6 5

2

6

3 6

5

4

1

𝑽𝑽′ 𝑬𝑬′1 ∅

1,3 1,31,3,6 1,3 , 3,6

Page 70: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Prim-Algorithmus: Beispiel

Algorithmen und Datenstrukturen - Kapitel 5 70

5

4

6

3

1

2

6 5

2

6

3 6

5

4

1

𝑽𝑽′ 𝑬𝑬′1 ∅

1,3 1,31,3,6 1,3 , 3,6

1,3,6,4 1,3 , 3,6 , 6,4

Page 71: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Prim-Algorithmus: Beispiel

Algorithmen und Datenstrukturen - Kapitel 5 71

5

4

6

3

1

2

6 5

2

6

3 6

5

4

1

𝑽𝑽′ 𝑬𝑬′1 ∅

1,3 1,31,3,6 1,3 , 3,6

1,3,6,4 1,3 , 3,6 , 6,41,3,6,4,2 1,3 , 3,6 , 6,4 , 3,2

Page 72: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Prim-Algorithmus: Beispiel

Algorithmen und Datenstrukturen - Kapitel 5 72

5

4

6

3

1

2

6 5

2

6

3 6

5

4

1

𝑽𝑽′ 𝑬𝑬′1 ∅

1,3 1,31,3,6 1,3 , 3,6

1,3,6,4 1,3 , 3,6 , 6,41,3,6,4,2 1,3 , 3,6 , 6,4 , 3,2

1,3,6,4,2,5 1,3 , 3,6 , 6,4 , 3,2 , 2,5

Page 73: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Algorithmus von Kruskal

• Idee (ähnlich zu Prim): – Starte mit leerer Kantenmenge.– Füge sukzessive minimale Kanten bezüglich ihrer Kosten hinzu,

sodass kein Kreis entsteht.– Stoppe, falls keine solche Kante mehr gefunden werden kann

(die nächste Kante bildet einen Kreis, alle Knoten erreichbar).

• Das Sortieren dominiert hier die Laufzeit: 𝑂𝑂 𝐸𝐸 log 𝐸𝐸 .

Algorithmen und Datenstrukturen - Kapitel 5 73

𝐸𝐸′ ← ∅Sortiere 𝐸𝐸 aufsteigend nach 𝑐𝑐(𝐸𝐸).Solange 𝐸𝐸 ≠ ∅𝑟𝑟 ← min 𝐸𝐸𝐸𝐸 = 𝐸𝐸 − 𝑟𝑟Falls 𝐺𝐺 𝑉𝑉,𝐸𝐸′ ∪ 𝑟𝑟 kreisfrei𝐸𝐸′ = 𝐸𝐸′ ∪ 𝑟𝑟

Page 74: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Algorithmus von Kruskal: Beispiel

Algorithmen und Datenstrukturen - Kapitel 5 74

5

4

6

3

1

2

6 5

2

6

3 6

5

4

1

𝑬𝑬1,3 → 14,6 → 22,5 → 33,6 → 41,4 → 52,3 → 51,2 → 63,5 → 65,6 → 6

Page 75: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Algorithmus von Kruskal: Beispiel

Algorithmen und Datenstrukturen - Kapitel 5 75

5

4

6

3

1

2

6 5

2

6

3 6

5

4

1

𝑬𝑬1,3 → 14,6 → 22,5 → 33,6 → 41,4 → 52,3 → 51,2 → 63,5 → 65,6 → 6

Page 76: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Algorithmus von Kruskal: Beispiel

Algorithmen und Datenstrukturen - Kapitel 5 76

5

4

6

3

1

2

6 5

2

6

3 6

5

4

1

𝑬𝑬1,3 → 14,6 → 22,5 → 33,6 → 41,4 → 52,3 → 51,2 → 63,5 → 65,6 → 6

Page 77: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Algorithmus von Kruskal: Beispiel

Algorithmen und Datenstrukturen - Kapitel 5 77

5

4

6

3

1

2

6 5

2

6

3 6

5

4

1

𝑬𝑬1,3 → 14,6 → 22,5 → 33,6 → 41,4 → 52,3 → 51,2 → 63,5 → 65,6 → 6

Page 78: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Algorithmus von Kruskal: Beispiel

Algorithmen und Datenstrukturen - Kapitel 5 78

5

4

6

3

1

2

6 5

2

6

3 6

5

4

1

𝑬𝑬1,3 → 14,6 → 22,5 → 33,6 → 41,4 → 52,3 → 51,2 → 63,5 → 65,6 → 6

Page 79: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Algorithmus von Kruskal: Beispiel

Algorithmen und Datenstrukturen - Kapitel 5 79

𝑬𝑬1,3 → 14,6 → 22,5 → 33,6 → 41,4 → 52,3 → 51,2 → 63,5 → 65,6 → 6

5

4

6

3

1

2

6 5

2

6

3 6

5

4

1

→ Kreis

Page 80: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Algorithmus von Kruskal: Beispiel

Algorithmen und Datenstrukturen - Kapitel 5 80

𝑬𝑬1,3 → 14,6 → 22,5 → 33,6 → 41,4 → 52,3 → 51,2 → 63,5 → 65,6 → 6

5

4

6

3

1

2

6 5

2

6

3 6

5

4

1

Page 81: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Algorithmus von Kruskal: Beispiel

Algorithmen und Datenstrukturen - Kapitel 5 81

𝑬𝑬1,3 → 14,6 → 22,5 → 33,6 → 41,4 → 52,3 → 51,2 → 63,5 → 65,6 → 6

5

4

6

3

1

2

6 5

2

6

3 6

5

4

1

→ Kreis

Page 82: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Algorithmus von Kruskal: Beispiel

Algorithmen und Datenstrukturen - Kapitel 5 82

𝑬𝑬1,3 → 14,6 → 22,5 → 33,6 → 41,4 → 52,3 → 51,2 → 63,5 → 65,6 → 6

5

4

6

3

1

2

6 5

2

6

3 6

5

4

1

→ Kreis

Page 83: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Algorithmus von Kruskal: Beispiel

Algorithmen und Datenstrukturen - Kapitel 5 83

𝑬𝑬1,3 → 14,6 → 22,5 → 33,6 → 41,4 → 52,3 → 51,2 → 63,5 → 65,6 → 6

5

4

6

3

1

2

6 5

2

6

3 6

5

4

1

→ Kreis

Page 84: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Flussnetzwerke

• Ein Flussnetzwerk 𝐺𝐺, 𝑐𝑐 ist ein gerichteter Graph 𝐺𝐺 = 𝑉𝑉,𝐸𝐸 , wobei– jede Kante 𝑟𝑟, 𝑣𝑣 ∈ 𝐸𝐸 die Kapazität 𝑐𝑐 𝑟𝑟, 𝑣𝑣 ≥ 0 hat– und es eine Quelle 𝑞𝑞 ∈ 𝑉𝑉 und eine Senke 𝑐𝑐 ∈ 𝑉𝑉 gibt.

• Wir setzen 𝑐𝑐 𝑟𝑟, 𝑣𝑣 = 0, falls 𝑟𝑟, 𝑣𝑣 ∉ 𝐸𝐸

• anschaulich:– Wasserleitungen mit unterschiedlichen Kapazitäten– Verkehrsströme, Straßenkapazitäten– Kommunikationswege mit Bandbreiten

Algorithmen und Datenstrukturen - Kapitel 5 84

𝑞𝑞 𝑐𝑐

12

9 7

14

20

4

104

13

16

Page 85: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Fluss in einem Flussnetzwerk

• Ein Fluss ist eine Funktion 𝑓𝑓:𝑉𝑉 × 𝑉𝑉 → ℝ mit den Eigenschaften

– Kapazitätsbeschränkung: Für 𝑟𝑟, 𝑣𝑣 ∈ 𝑉𝑉 gilt 𝑓𝑓 𝑟𝑟, 𝑣𝑣 ≤ 𝑐𝑐 𝑟𝑟, 𝑣𝑣

– Symmetrie: Für 𝑟𝑟, 𝑣𝑣 ∈ 𝑉𝑉 gilt 𝑓𝑓 𝑟𝑟, 𝑣𝑣 = −𝑓𝑓 𝑣𝑣,𝑟𝑟„𝑟𝑟 gibt 𝑣𝑣 7 Einheiten“ „𝑣𝑣 nimmt 𝑟𝑟 7 Einheiten“ „𝑣𝑣 gibt 𝑟𝑟 −7 Einheiten“

– Flusserhaltung: Für 𝑟𝑟 ∈ 𝑉𝑉 − {𝑞𝑞, 𝑐𝑐} gilt ∑𝑣𝑣∈𝑉𝑉 𝑓𝑓 𝑟𝑟, 𝑣𝑣 = 0

Algorithmen und Datenstrukturen - Kapitel 5 85

u v7/12

𝑓𝑓 𝑟𝑟,𝑣𝑣 = 7 ≤ 12 = 𝑐𝑐(𝑟𝑟,𝑣𝑣)

u

𝑓𝑓 𝑟𝑟, 𝑣𝑣5 = −7

𝑓𝑓 𝑟𝑟,𝑣𝑣3 = 4

𝑓𝑓 𝑟𝑟, 𝑣𝑣2 = 2

𝑓𝑓 𝑟𝑟,𝑣𝑣1 = 4

𝑓𝑓 𝑟𝑟,𝑣𝑣4 = −3u

𝑓𝑓 𝑣𝑣5,𝑟𝑟 = 7

𝑓𝑓 𝑟𝑟, 𝑣𝑣3 = 4

𝑓𝑓 𝑟𝑟,𝑣𝑣2 = 2

𝑓𝑓 𝑟𝑟,𝑣𝑣1 = 4

𝑓𝑓 𝑣𝑣4,𝑟𝑟 = 3Symmetrie

Page 86: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Maximaler Fluss

• Der Wert 𝑤𝑤 𝑓𝑓 eines Flusses 𝑓𝑓 ist definiert als 𝑤𝑤 𝑓𝑓 = ∑𝑣𝑣∈𝑉𝑉 𝑓𝑓 𝑞𝑞, 𝑣𝑣– entspricht Gesamtfluss aus der Quelle 𝑞𝑞 heraus

• Problem des maximalen Flusses– Gegeben ein Flussnetzwerk 𝐺𝐺, 𝑐𝑐– Gesucht ein Fluss 𝑓𝑓 auf 𝐺𝐺, 𝑐𝑐 mit maximalem Wert 𝑤𝑤 𝑓𝑓

Algorithmen und Datenstrukturen - Kapitel 5 86

𝑞𝑞 𝑐𝑐

-/6

4/7 -/1

4/5

-/84/4

𝑤𝑤 𝑓𝑓 = 0 + 4 = 4

Page 87: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Residualnetzwerk

• Restkapazität 𝑐𝑐𝑓𝑓 𝑟𝑟, 𝑣𝑣 zwischen 𝑟𝑟, 𝑣𝑣 ∈ 𝑉𝑉 ist 𝑐𝑐𝑓𝑓 𝑟𝑟, 𝑣𝑣 = 𝑐𝑐 𝑟𝑟, 𝑣𝑣 −𝑓𝑓 𝑟𝑟, 𝑣𝑣– beachte: formal ist 𝑓𝑓 𝑟𝑟, 𝑣𝑣 < 0 möglich (vgl. Symmetrie)

• Der Restgraph 𝐺𝐺𝑓𝑓 = 𝑉𝑉,𝐸𝐸𝑓𝑓 bzgl. Flussnetzwerk 𝐺𝐺, 𝑐𝑐 und Fluss 𝑓𝑓ist definiert durch die Kantenmenge 𝐸𝐸𝑓𝑓 =𝑟𝑟, 𝑣𝑣 ∈ 𝑉𝑉 × 𝑉𝑉 𝑐𝑐𝑓𝑓 𝑟𝑟, 𝑣𝑣 > 0

• 𝐺𝐺𝑓𝑓, 𝑐𝑐𝑓𝑓 ist das sogenannte Residualnetzwerk

„Flussnetzwerk minus Fluss = Residualnetzwerk“

Algorithmen und Datenstrukturen - Kapitel 5 87

𝑞𝑞 𝑐𝑐

-/6

4/7 -/1

4/5

-/84/4

𝑞𝑞 𝑐𝑐

6

3 5 1

84

4Flussnetzwerk

𝐺𝐺, 𝑐𝑐 mit Fluss 𝑓𝑓Residualnetz-werk 𝐺𝐺𝑓𝑓, 𝑐𝑐𝑓𝑓

Page 88: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Flussvergrößernder Pfad

• Ein Pfad 𝑝𝑝 von 𝑞𝑞 nach 𝑐𝑐 im Residualnetzwerk heißt flussvergrößernder oder augmentierender Pfad.

• Die Restkapazität von 𝑝𝑝 ist 𝑐𝑐𝑓𝑓 𝑝𝑝 = min{𝑐𝑐𝑓𝑓(𝑟𝑟, 𝑣𝑣)| 𝑟𝑟, 𝑣𝑣 ∈ 𝑝𝑝}

• Fluss 𝑓𝑓 in (𝐺𝐺, 𝑐𝑐) kann entlang des Pfades 𝑝𝑝 um 𝑐𝑐𝑓𝑓 𝑝𝑝 erhöht werden

Algorithmen und Datenstrukturen - Kapitel 5 88

q s

1/6

4/7 -/1

5/5

-/84/4

q s

6

3 5 1

84

4Residualnetz-werk (Gf,cf) Restkapazität

des „roten“ Pfades p ist 1

q s

-/6

4/7 -/1

4/5

-/84/4

Erhöhung um „1“ entlang p

(G,c) mit Fluss f

(G,c) mit Fluss f2

Page 89: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Beispiel (fortgesetzt)

Algorithmen und Datenstrukturen - Kapitel 5 89

q s

1/6

4/7 -/1

5/5

-/84/4

Residualnetz-werk (Gf2,cf2)

(G,c) mit Fluss f2

q s

5

3 51

84

5

q s

6/6

-/7 1/1

5/5

5/84/4

(G,c) mit Fluss f3

Achtung: „Rückwärtskante“ entlang p

q s

6

85

34

5

kein Pfad von q nach s möglich maximalen Fluss gefunden

Residualnetz-werk (Gf3,cf3)

Page 90: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Min-Cut-Max-Flow-Theorem

• Ein s-t-Schnitt (𝑆𝑆,𝑇𝑇) in einem Flussnetzwerk ist eine Partition der Knotenmenge in zwei disjunkte Mengen 𝑐𝑐 ∈ 𝑆𝑆 und 𝑐𝑐 ∈ 𝑇𝑇.

• Die Kapazität eines Schnitts ist das Gesamtgewicht der Kanten von 𝑆𝑆 nach 𝑇𝑇:

𝑐𝑐 𝑆𝑆,𝑇𝑇 = �𝑢𝑢∈𝑆𝑆,𝑣𝑣∈𝑇𝑇| 𝑢𝑢,𝑣𝑣 ∈𝐸𝐸

𝑐𝑐(𝑟𝑟, 𝑣𝑣)

• Die folgenden Aussagen sind äquivalent:– 𝑓𝑓 ist der maximale Fluss in 𝐺𝐺.

– Das Residualnetzwerk 𝐺𝐺𝑓𝑓 enthält keinen augmentierenden Pfad.

– Für mindestens einen Schnitt (𝑆𝑆,𝑇𝑇) ist der Wert des Flusses gleich der Kapazität des Schnittes: 𝑓𝑓 = 𝑐𝑐(𝑆𝑆,𝑇𝑇)

• Damit gilt: Der maximale Fluss entspricht der Kapazität des minimalen Schnittes.

Algorithmen und Datenstrukturen - Kapitel 5 90

Page 91: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Ford-Fulkerson-Methode

• Idee: Initialisiere Fluss 𝑓𝑓 mit 0Solange es einen flussvergrößernden Pfad 𝑝𝑝 gibt

erhöhe 𝑓𝑓 entlang 𝑝𝑝

• Formal ist Erhöhung von 𝑓𝑓 entlang 𝑝𝑝 für alle 𝑟𝑟, 𝑣𝑣 ∈ 𝑉𝑉 definiert durch

𝑓𝑓𝑛𝑛𝑒𝑒𝑢𝑢 𝑟𝑟, 𝑣𝑣 = 𝑓𝑓𝑎𝑎𝑎𝑎𝑎𝑎 𝑟𝑟, 𝑣𝑣 + �𝑐𝑐𝑓𝑓(𝑝𝑝)−𝑐𝑐𝑓𝑓(𝑝𝑝)

0

, 𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑐𝑐 𝑟𝑟, 𝑣𝑣 𝑓𝑓𝑟𝑟𝑓𝑓 𝑝𝑝, 𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑐𝑐 𝑣𝑣,𝑟𝑟 𝑓𝑓𝑟𝑟𝑓𝑓 𝑝𝑝

, 𝑐𝑐𝑐𝑐𝑛𝑛𝑐𝑐𝑐𝑐

Algorithmen und Datenstrukturen - Kapitel 5 91

Page 92: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Laufzeit der Ford-Fulkerson-Methode

• Die Laufzeit kann beliebig schlecht sein– im Beispiel: wähle flussvergrößernden Pfad

stets über mittlere Kanten sehr langsame Erhöhung des Gesamtflusses

• Falls alle Kapazitäten ganzzahlig sind, benötigtdie Methode O(f*) Iterationen, um das Problem zu lösen(dabei ist f* der Wert des maximalen Flusses)

– in jeder Iteration wird der Wert des Flusses um cf(p)≥1 erhöht– zu Beginn 0 und am Ende f*

• Verbesserung:– wähle einen kürzesten flussvergrößernden Pfad

• im Beispiel würden mittlere Kanten vermieden schnellere Terminierung

Algorithmus von Edmonds und Karp

Algorithmen und Datenstrukturen - Kapitel 5 92

q s

1000

1 1

1000

10001000

Page 93: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Edmonds-Karp-Algorithmus

• Idee: Initialisiere Fluss 𝑓𝑓 mit 0Solange es einen flussvergrößernden Pfad 𝑝𝑝 gibt

finde einen kürzesten flussvergrößernden Pfad 𝑝𝑝erhöhe 𝑓𝑓 entlang 𝑝𝑝

• Laufzeit der Methode ist polynomiell in der Größe des Netzwerks

– 𝑂𝑂( 𝑉𝑉 · 𝐸𝐸 2) = 𝑂𝑂 𝑉𝑉 5 bei spezieller Implementierung

• Weitere Verbesserungen durch Dinic (1970) führten zu– 𝑂𝑂 𝑉𝑉 2 · 𝐸𝐸 = 𝑂𝑂 𝑉𝑉 4

Algorithmen und Datenstrukturen - Kapitel 5 93

Page 94: Kapitel 5: Graphen · Motivation zu Graphen • Viele reale Fragestellungen lassen sich durch Graphen darstellen Algorithmen und Datenstrukturen - Kapitel 5 2

Graph-Anwendungen: Euler-Tour

• Historisches Problem („Königsberger Brückenproblem):– 1736 lebte der deutsche Mathematiker Leonhard Euler in Königsberg

• Fluß Pregel bildete dort eine Insel mit mehreren Brücken.

– Häufige Frage: Ist ein Spaziergang möglich, so dass man• schließlich wieder am Ausgangspunkt ankommt und• alle Brücken genau einmal überquert?

• Graphentheoretisch:– „Geschlossene Euler-Tour“– Existiert geschlossener, einfacher Pfad

über alle Kanten?

– Eulers Antwort: Genau dann, wenn alle Knoten von geradem Grad sind bzw. die Spalten- / Zeilensummen der Adjazenzmatrix alle gerade sind.

Algorithmen und Datenstrukturen - Kapitel 5 94

A

C

B D

0111102012021020