Algorithmen und Wahrscheinlichkeit Angelika Steger Institut für Theoretische Informatik
Kapitel 1.3
Zusammenhang
Zusammenhang Definition: Sei G = (V, E) ein Graph. G heisst zusammenhängend, wenn
⇤u, v
V, u ⇥= v gilt: es gibt einen u-v-Pfad in G.
Heute: Gegeben ein zusammenhängender Graph. Wie (sehr) zusammenhängend ist dieser Graph?
k-Zusammenhang Definition: Sei G = (V, E) ein Graph. G heisst k-zusammenhängend, wenn gilt: und
⇥X
V
mit
|X| < k
ist
G[V \ X]
zusammenhängend
Definition: Sei G = (V, E) ein Graph. G heisst k-kanten-zusammenhängend, wenn gilt:
8X ✓ E
mit
|X| < k
ist (V, E \ X) zusammenhängend
Heute:
Spezialfall
k=1
Artikulationsknoten Definition: Sei G = (V, E) ein zusammenhängender Graph. Ein Knoten v 2 V heisst Artikulationsknoten (engl. cut vertex) gdw. G[V \ {v}] nicht zusammenhängend ist
Brücken Definition: Sei G = (V, E) ein zusammenhängender Graph. Ein Kante e 2 E heisst Brücke (engl. cut edge) gdw. nicht zusammenhängend ist G e
Wie findet man Artikulationsknoten bzw Brücken effizient ?
Tiefensuche
9
3
root 1
4 12
2
8 7 5
10
6 11
Tiefensuche
9
3
root 1
4 12
2
8 7 5
10
6 11
Tiefensuche
9
3
root 1
4 12
2
8 7 5
10
6 11
Tiefensuche dfs / low 9/1
3/1
root 1
4/3 12/10
2/1
8/3 7/3 5/3 6/3
10/10 11/10
Tiefensuche dfs / low 9/1
3/1
s=root 1
4/3 12/10
2/1
8/3 7/3 5/3 6/3
10/10 11/10
Tiefensuche 9/1
3/3
root 1/1
4/3 4/4 2/2
8/8 8/3 7/7 7/3 5/5 5/3 6/6 6/3
Berechnung der low-Werte: - Initialisierung mit dfs-Wert - ggf update, wenn Rückwärtskanten gefunden werden - ggf update, wenn Algorithmus während des backtracks zum Knoten zurückkehrt
Tiefensuche
Brücken dfs / low 9/1
3/1
root 1
4/3 12/10
2/1
8/3 7/3
2/1
5/3 7/3 6/3
10/10 11/10 eine Kante e ={v,w} ist eine Brücke
gdw. e ∈ T (im DFS Baum) und
w ein Kind von v ist mit low[w] > dfs[v]
Artikulationsknoten und Brücken
Satz:
Die um die Berechnung von low[] ergänzte Tiefensuche berechnet in einem zusammenhängenden Graphen alle Artikulationsknoten und Brücken in Zeit O(m).
Blöcke Sei G = (V, E) ein zusammenhängender Graph.
Eine Block ist eine maximale Menge von Kanten, so dass je zwei dieser Kanten auf einem gemeinsamen Kreis liegen.
Kapitel 1.3
Kreise
Hamiltonkreise und Eulertouren
• Sei G = (V, E) ein Graph.
• Hamiltonkreis: • Ein Kreis in G, der jeden Knoten genau einmal enthält.
• Eulertour: • Ein geschlossener Weg in G, der jede Kante genau einmal enthält.
Königsberger Brückenproblem
Leonard Euler (1707 - 1783)
Gesucht:
Eulertour
Eulertour: Charakterisierung Satz: Ein zusammenhängender Graph G = (V, E) enthält eine Eulertour
gdw.
der Grad jedes Knotens gerade ist.
… und eine solche kann man in O(|E|) Zeit finden
Bem: Sind in einem zusammenhängenden Graphen G = (V, E) alle bis auf zwei Knotengrade gerade, so enthält der Graph einen Eulerweg
(Ein Eulerweg ist ein Weg, der alle Kanten des Graphen enthält — aber nicht notwendigerweise im gleichen Knoten startet und endet.)
Idee des Algorithmus
Idee des Algorithmus
Idee des Algorithmus
Idee des Algorithmus
Idee des Algorithmus
Idee des Algorithmus
Eulertour: Charakterisierung Satz: Ein zusammenhängender Graph G = (V, E) enthält eine Eulertour
gdw.
der Grad jedes Knotens gerade ist.
… und eine solche kann man in O(|E|) Zeit finden
Bem: Sind in einem zusammenhängenden Graphen G = (V, E) alle bis auf zwei Knotengrade gerade, so enthält der Graph einen Eulerweg
(Ein Eulerweg ist ein Weg, der alle Kanten des Graphen enthält — aber nicht notwendigerweise im gleichen Knoten startet und endet.)
Hamiltonkreise und Eulertouren
• Sei G = (V, E) ein Graph.
• Hamiltonkreis: • Ein Kreis in G, der jeden Knoten genau einmal enthält.
• Eulertour: • Ein geschlossener Weg in G, der jede Kante genau einmal enthält.
Hamiltonkreis
Sir William Hamilton (1805 - 1865) Ikosaeder Spiel
Gesucht:
Hamiltonkreis
Hamiltonkreis - Beispiele
Ikosaeder
Petersengraph
Hamiltonkreis - Beispiele
Satz:
Ein n×m Gitter enthält einen Hamiltonkreis gdw
n*m gerade ist.
Hamiltonkreis - Beispiele
Satz:
Ein n×m Gitter enthält einen Hamiltonkreis gdw
Beweis:
„⇐“ siehe Skizze:
n*m gerade ist.