Sie sind auf Seite 1von 62

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.
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
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. G e 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. G e nicht zusammenhängend ist
Wie findet man Artikulationsknoten
bzw Brücken effizient ?
Tiefensuche

root
Tiefensuche

3
root
1 4

2 8
7
5

6
Tiefensuche

9 3
root
1 4

2 8
12
7
5

10 6

11
Tiefensuche

9 3
root
1 4

2 8
12
7
5

10 6

11
Tiefensuche

9 3
root
1 4

2 8
12
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
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

root

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

3/3
root
1/1 4/4

2/2 8/8
7/7
5/5

6/6

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

3/3
root
1/1 4/4

2/2 8/3
7/7
5/5

6/6

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

3/3
root
1/1 4/3

2/2 8/3
7/3
5/3

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

9/1 3/3
root
1/1 4/3

2/2 8/3
7/3
5/3

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.
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)
Königsberger Brückenproblem

Leonard Euler
(1707 - 1783)
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.

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.)
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
Idee des Algorithmus
Idee des Algorithmus
Idee des Algorithmus
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.

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.)
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
Hamiltonkreis

Sir William Hamilton


(1805 - 1865)
Ikosaeder Spiel

Gesucht: Hamiltonkreis
Hamiltonkreis - Beispiele

Ikosaeder Petersengraph
Hamiltonkreis - Beispiele
Hamiltonkreis - Beispiele
Hamiltonkreis - Beispiele
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 n*m gerade ist.

Beweis:

„⇐“ siehe Skizze:

Das könnte Ihnen auch gefallen