Informatik II

Werbung
Informatik II ‐ SS 2014
(Algorithmen & Datenstrukturen)
Vorlesung 16 (2.7.2014)
Graphtraversierung II,
Minimale Spannbäume I
Fabian Kuhn
Algorithmen und Komplexität
Fabian Kuhn
Informatik II, SS 2014
Tiefensuche: Pseusocode
DFS‐Traversal:
for all u in V: u.color = white;
DFS‐visit(root, NULL)
DFS‐visit(u, p):
u.color = gray;
u.parent = p;
for all v in u.neighbors do
if v.color = white
DFS‐visit(v, u)
visit node u;
u.color = black;
Fabian Kuhn
Informatik II, SS 2014
2
DFS‐ “Klammer”‐Theorem
Beispiel (aus [CLRS])
Fabian Kuhn
Informatik II, SS 2014
3
Weiße Pfade
Theorem: In einem DFS‐Baum ist ein Knoten genau dann im
Teilbaum eines Knoten , falls unmittelbar vor dem Markieren von , ein komplett weißer Pfad von nach besteht.
Fabian Kuhn
Informatik II, SS 2014
4
Klassifizierung der Kanten (bei DFS‐Suche)
Baumkanten:
•
, ist eine Baumkante, falls
von aus entdeckt wird
2
8
1
Rückwärtskanten:
•
, ist eine Rückwärtskante, falls
eine Vorgängerknoten von ist
Vorwärtskanten:
•
, ist eine Vorwärtskante, falls
ein Nachfolgerknoten von ist
Querkanten:
• Alle übrigen Kanten
Fabian Kuhn
7
3
9
4
5
6
Informatik II, SS 2014
5
DFS – Ungerichtete Graphen
Theorem: Bei einer DFS‐Suche in ungerichteten Graphen ist jede
Kante entweder eine Baumkante oder eine Rückwärtskante.
Fabian Kuhn
Informatik II, SS 2014
6
DFS – Gerichtete Graphen
Theorem: Ein gerichteter Graph hat genau dann keine Zyklen, falls es bei der DFS‐Suche keine Rückwärtskanten gibt.
Fabian Kuhn
Informatik II, SS 2014
7
Anwendung: Topologische Sortierung
Zyklenfreie, gerichtete Graphen:
• DAG: directed acyclic graph
• Modellieren z.B. zeitliche Abhängigkeiten von Aufgaben
• Beispiel: Anziehen von Kleidungsstücken
Unterhemd
Pullover
Mantel
Unterhose
Hose
Schuhe
Brille
Socken
Topologische Sortierung:
• Sortiere die Knoten eines DAGs so, dass vor erscheint, falls ein
gerichteter Pfad von nach existiert
• Im Beispiel: Finde eine mögliche Anziehreihenfolge
Fabian Kuhn
Informatik II, SS 2014
8
Topologische Sortierung: Etwas formaler…
Zyklenfreie, gerichtete Graphen:
• repräsentieren partielle Ordnungsrelationen
– asymmetrisch:
⟹ transitiv: ∧
⟹ – partielle Ordnung: nicht alle Paare müssen vergleichbar sein
• Beispiel: Teilmengenrelation bei Mengen
Topologische Sortierung:
• Sortiere die Knoten eines DAGs so, dass vor erscheint, falls ein
gerichteter Pfad von nach existiert
• Erweitere eine partielle Ordnung zu einer totalen Ordnung
Fabian Kuhn
Informatik II, SS 2014
9
Topologische Sortierung: Algorithmus
Führe DFS aus…
2
1
3
7
6
11
5
4
8
12
9
13
10
14
Beobachtung:
• Knoten ohne Nachfolger werden als erstes besucht (schwarz gef.)
• Besuchreihenfolge ist umgekehrte topologische Sortierung
Fabian Kuhn
Informatik II, SS 2014
10
Topologische Sortierung: Algorithmus
Theorem: Umgekehrte “Visit”‐Reihenfolge (schwarz färben) der Knoten bei DFS‐Traversierung ergibt topologische Sortierung
Fabian Kuhn
Informatik II, SS 2014
11
Topologische Sortierung: Algorithmus
Theorem: Umgekehrte “Visit”‐Reihenfolge (schwarz färben) der Knoten bei DFS‐Traversierung ergibt topologische Sortierung
Fabian Kuhn
Informatik II, SS 2014
12
DFS‐Traversierung: Weitere Anwendungen
Stark zusammenhängende Komponenten
• Stark zus.‐hängende Komponente eines gerichteten Graphen:
“Maximale Knoten‐Teilmenge, so dass jeder jeden erreichen kann”
Bild: Wikipedia
• Benötigt 2 DFS‐Traversierungen (Zeit ∈
)
– auf und auf (alle Kanten umgedreht)
– und haben die gleichen stark zus.‐hängenden Komponenten
• Details z.B. in [CLRS]
Fabian Kuhn
Informatik II, SS 2014
13
DFS‐Traversierung: Weitere Anwendungen
Artikulationsknoten, Brücken, Biconnected Components
• Annahme: ungerichteter Graph
• Artikulationsknoten :
entfernen vergrössert die Anzahl Komponenten
• Brücke :
Kante entfernen vergrössert die Anzahl Komponenten
Fabian Kuhn
Informatik II, SS 2014
14
DFS‐Traversierung: Weitere Anwendungen
Biconnected Components
• Komponenten, welche übrig bleiben, wenn man alle Brücken entfernt
Bild: [CLRS]
• Artikulationsknoten und Brücken können mit einer DFS‐
Traversierung in Zeit gefunden werden
– Algorithmus von Hopcroft, Tarjan (1973)
• Zerlegung in Biconnected Components daher in der gleichen Zeit
Fabian Kuhn
Informatik II, SS 2014
15
Bäume
• Als ungerichtete Graphen (mit Knoten) betrachtet…
Baum:
• Zusammenhängender ungerichteter Graph, ohne Zyklen
– Ein nicht zus.‐hängender zyklenfreier (unger.) Graph heisst Wald
– Anzahl Kanten: 1 (jede Kante reduziert die #Komponenten um 1)
Äquivalente Definitionen:
• Minimaler zusammenhängender Graph
• Maximaler zyklenfreier Graph
• Eindeutiger Pfad zwischen jedem Knotenpaar
• Zusammenhängender Graph mit 1 Kanten
Fabian Kuhn
Informatik II, SS 2014
16
Spannbaum
Gegeben: Zusammenhängender, ungerichteter Graph ,
Spannbaum ,
: Teilgraph ( ⊆ )
•
ist ein Baum ist, welcher alle Knoten von enthält
• Alternativ: ist ein Baum mit 1 Kanten aus 1
2
8
3
4
5
6
Fabian Kuhn
Informatik II, SS 2014
7
17
Minimaler Spannbaum
Gegeben: Zus.‐hängender, ungerichteter Graph Kantengewichten ∶ →
, ,
mit
Minimaler Spannbaum ,
:
• Spannbaum mit kleinstem Gesamtgewicht
1
1
2
3
9
3
15
3
7
8
4
2
6
1
6
5
8
Fabian Kuhn
6
9
Informatik II, SS 2014
7
18
Minimale Spannbäume
Ziel: Gegeben ein gewichteter, ungerichteter Graph , finde einen Spannbaum mit minimalem Gesamtgewicht.
• Minimaler Spannbaum = Minimum Spanning Tree = MST
• Ein grundlegendes Optimierungsproblem auf Graphen
– eines von sehr vielen Optimierungsproblemen auf Graphen
• kommt oft als Teilproblem vor
• ist aber auch interessant an sich
Fabian Kuhn
Informatik II, SS 2014
19
Basis‐MST‐Algorithmus
Idee: Starte mit leerer Kantenmenge und füge die Kanten schrittweise hinzu, bis es ein Spannbaum ist
Invariante:
Algorithmus hat zu jeder Zeit eine Kantenmenge , so dass
Teilmenge eines minimalen Spannbaums ist.
• Am Anfang ist
∅
• Danach wird jeweils eine Kante hinzugefügt, ohne die Invariante zu verletzen
• Wir nennen eine Kante, für welche wir sicher sein können, dass wir sie zu hinzufügen können eine sichere Kante für • Wie man sichere Kanten findet, werden wir sehen…
Fabian Kuhn
Informatik II, SS 2014
20
Basis‐MST‐Algorithmus
Invariante:
Algorithmus hat zu jeder Zeit eine Kantenmenge , so dass
Teilmenge eines minimalen Spannbaums ist.
Basis‐MST‐Algorithmus:
= ∅
while
ist kein Spannbaum do
,
für
Finde sichere Kante
= ∪
,
return
• Invariante ist eine gültige Schleifeninvariante
• Invariante + Abbruchbedingung ⟹
Fabian Kuhn
Informatik II, SS 2014
ist ein MST!
21
Wie findet man sichere Kanten?
• Invariante  es gibt immer mindestens eine sicher Kante
–
ist Teilmenge eines MST und kann daher zu einem MST erweitert werden
• Zuerst benötigen wir ein paar Begriffe…
Schnitt
,
∖
:
• Kante , ∈ ist eine Schnittkante bezüglich , ∖ , falls ein
Ende in und ein Ende in ∖ ist.
• Wir nennen Kante , eine leichte Schnittkante bez. , ∖ , falls sie das kleinste Gewicht von allen Schnittkanten hat
Fabian Kuhn
Informatik II, SS 2014
22
Sichere Kanten
Annahmen:
•
, ,
ist zus.‐h., unger. Graph mit Kantengewichten •
ist Teilmenge (Teilgraph) eines MST
Theorem: Sei , ∖ ein Schnitt, so dass keine Schnittkanten
enthält und sei , , ∈ , ∈ ∖ eine leichte Schnittkante
bezüglich , ∖ . Dann ist , eine sichere Kante für .
1
1
3
9
3
2
15
3
7
8
4
2
6
6
1
5
8
Fabian Kuhn
6
9
7
Informatik II, SS 2014
23
Sichere Kanten
Theorem: Sei , ∖ ein Schnitt, so dass keine Schnittkanten
enthält und sei , , ∈ , ∈ ∖ eine leichte Schnittkante
bezüglich , ∖ . Dann ist , eine sichere Kante für .
Fabian Kuhn
Informatik II, SS 2014
24
Herunterladen