Kapitel IV Minimale Spannb¨ aume
1. Grundlagen
Ein Graph G = (V, E) besteht aus einer Menge V von Knoten und einer Menge E von Kanten. Wir werden nur endliche Knoten- (und damit auch Kanten-) Mengen betrachten. Die Anzahl der Knoten bezeichnen wir mit n (|V | = n), die Anzahl der Kanten mit m (|E| = m). Eine gerichtete Kante mit den Endknoten u und v wird mit (u, v), eine ungerichtete mit {u, v} notiert. Eine Kante
(v, v) ∈ E (bzw. {v, v}) heißt Schlinge. Falls E eine Multimenge ist, spricht man von Mehrfachkanten. Kanten (u, v) und (v, u) heißen antiparallel. Graphen ohne Schlingen und Mehrfachkanten heißen einfache Graphen (engl. simple). F¨ ur einfache ungerichtete Graphen gilt daher:
E ⊆ V
2
:= {X ⊆ V, |X| = 2}
EADS 1 Grundlagen 414/530
ľErnst W. Mayr
Graphische Darstellung:
t
t t
t
t
v
1v
2v
3v
4v
5K
5J J J J J J
D D D D D D D D D D
`` `` `` `` ``
Z
Z Z
Z Z
Z Z
Z P P
P P P P
A A
A A
t t t
t t t
v
1v
2v
3v
4v
5v
6H
H H H H
H H H H H
H H H H
H H
@
@
@
@
@
@
@
@ K
3,3EADS 1 Grundlagen 415/530
ľErnst W. Mayr
Ist E ⊆ V × V , dann heißt G gerichteter Graph (engl. digraph).
ss - s
u v
Der zu G geh¨ orige ungerichtete Graph ist G
0= (V, E
0). E
0erh¨ alt man, indem man in E die Richtungen wegl¨ asst und
Mehrfachkanten beseitigt.
Sei v ∈ V . Unter der Nachbarschaft
N(v) := {w; (v, w) oder (w, v) ∈ E} eines Knotens v versteht man die Menge der direkten Nachbarn von v. Der Grad eines Knotens ist definiert als:
deg(v) =
( |N (v)| ; falls G ungerichtet und indeg(v) + outdeg(v) ; falls G gerichtet.
Dabei ist indeg(v) die Anzahl aller Kanten, die v als Endknoten, und outdeg(v) die Anzahl aller Kanten, die v als Anfangsknoten haben.
EADS 1 Grundlagen 416/530
ľErnst W. Mayr
Beobachtung: F¨ ur einfache (gerichtete oder ungerichtete) Graphen gilt
X
v∈V
deg(v) = 2|E| .
Korollar 94
In jedem (einfachen) Graphen ist die Anzahl der Knoten mit ungeradem Grad eine gerade Zahl.
EADS 1 Grundlagen 417/530
ľErnst W. Mayr
Das Komplement G ¯ = (V,
V2\ E) eines Graphen G = (V, E) besitzt die gleiche Knotenmenge V und hat als Kantenmenge alle Kanten des vollst¨ andigen Graphen ohne die Kantenmenge E.
Ein Graph H = (V
0, E
0) heißt Teilgraph (aka. Subgraph) von G = (V, E), falls V
0⊆ V und E
0⊆ E. H heißt (knoten-) induzierter Teilgraph, falls H Teilgraph von G ist und
E
0= E ∩ V
02
.
EADS 1 Grundlagen 418/530
ľErnst W. Mayr
Ein Kantenzug (oder Pfad) ist eine Folge
e
1:= {v
0, v
1}, . . . , e
l:= {v
l−1, v
l}. v
0und v
lsind die Endknoten, l ist die L¨ ange des Kantenzuges. Sind bei einem Pfad alle v
i(und damit erst recht alle e
i) verschieden, so sprechen wir von einem einfachen Pfad. Ein Kantenzug mit v
l= v
0heißt Zykel oder Kreis.
Ein Kreis, in dem alle v
iverschieden sind, heißt einfacher Kreis.
Ein (ungerichteter) Graph G heißt zusammenh¨ angend, wenn es f¨ ur alle u, v ∈ V einen Pfad gibt, der u und v verbindet. Ein
(knoten-)maximaler induzierter zusammenh¨ angender Teilgraph heißt (Zusammenhangs-)Komponente.
EADS 1 Grundlagen 419/530
ľErnst W. Mayr
s
s s
s s
s
s s
s s
A A A A
'
&
$
% '
&
$
% K
1K
2K
3K
4Ein Graph G heißt azyklisch, wenn er keinen Kreis enth¨ alt. Wir bezeichnen einen solchen ungerichteten Graphen dann als Wald. Ist dieser auch zusammenh¨ angend, so sprechen wir von einem Baum.
Ist der Teilgraph T = (V, E
0) ⊆ G = (V, E) ein Baum, dann heißt T ein Spannbaum von G.
EADS 1 Grundlagen 420/530
ľErnst W. Mayr
Satz 95
Ist T = (V, E) ein Baum, dann ist |E| = |V | − 1.
Beweis:
Induktion ¨ uber die Anzahl n der Knoten:
n = 0, 1: klar.
n → n + 1: Sei |V | = n + 1. Da T zusammenh¨ angend ist, ist deg(v) ≥ 1 f¨ ur alle v ∈ V . T muss einen Knoten v mit deg(v) = 1 enthalten, denn ansonsten w¨ urde, wie wiederum eine einfache Induktion zeigt, T einen Kreis enthalten. Wende nun die
Induktionsannahme auf den durch V − {v} induzierten Teilgraphen an.
Korollar 96
Ein (ungerichteter) Graph G ist zusammenh¨ angend, gdw G einen Spannbaum hat.
EADS 1 Grundlagen 421/530
ľErnst W. Mayr
2. Traversierung von Graphen
Sei G = (V, E) ein ungerichteter Graph. Anhand eines Beipiels betrachten wir die zwei Algorithmen DFS (Tiefensuche) und BFS (Breitensuche).
EADS 2 Traversierung von Graphen 422/530
ľErnst W. Mayr
2.1 DFS-Algorithmus
while ∃ unvisited v do
r := pick (random) unvisited node push r onto stack
while stack 6= ∅ do v := pop top element if v unvisited then
mark v visited
push all neighbours of v onto stack perform operations DFS Ops(v) fi
od od
EADS 2.1 DFS-Algorithmus 423/530
ľErnst W. Mayr
Beispiel 97
A A
A
A @
@
@
@
A
A A
A @
@
@
@
A A
A A
U -
6
@
@
@
@ I
? * 1 g
2 g
3 g
4 g 5 g 6 g
7 g
8 g
9 g 1 t
2 t
3 t
4 t 5 t
t 6 t 7 8 t
9 t B
B B
B B
B Q
Q Q
Q Q
Q B
B B
B B
B Q
Q Q
Q Q
Q
H H H H
EADS 2.1 DFS-Algorithmus 424/530
ľErnst W. Mayr
Beobachtung: Die markierten Kanten bilden einen Spannbaum:
A A
A
A @
@
@
@
A A
A
A @
@
@
@
A A
A A
U -
6
@
@
@
@ I
? * 1 g
2 g
3 g
4 g 5 g 6 g
7 g
8 g
9 g 1 t
2 t
3 t
4 t 5 t
t 6 t 7 8 t
9 t B
B B
B B
B Q
Q Q
Q Q
Q B
B B
B B
B Q
Q Q
Q Q
Q H H H H
R¨ uckw¨ artskante
9 g 8 g 6 g 7 g
5 g 4 g 3 g 2 g
1 g
@
@
s s
s s
s s s s s
EADS 2.1 DFS-Algorithmus 425/530
ľErnst W. Mayr
Folge der Stackzust¨ ande
1 2
8 7
3 9 8 1 8 7
4 9 2 9 8 1 8 7
5 3 9 2 9 8 1 8 7
9 8 6 4 3 9 2 9 8 1 8 7
2 3 5 8 6 4 3 9 2 9 8 pp ppppp 1
7 6 5 2 1 6 4 3 9 2 9 pp ppppp 8
6 8 1 6 5 2 1 6 4 3 9 pp ppppp 2
7 8 5 8 1 6 5 2 1 6 4 pp ppppp 3 h h
h
h h h h h h h h h h h h 6 6
h
? ? ? ? ? ? ? ? ? visited visited
Stack:
: oberstes Stackelement : schon besuchte Knoten
: Nachbarn Zustand:
a) b) c) d) e) f)
g)
h) i) j)
EADS 2.1 DFS-Algorithmus 426/530
ľErnst W. Mayr
Wir betrachten den Stackzustand:
Im Zustand g) sind die Elemente 2, 3 und 5 als visited markiert (siehe Zust¨ ande b), c) und e)). Deswegen werden sie aus dem Stack entfernt, und das Element 8 wird zum obersten
Stackelement. Im Zustand j) sind alle Elemente markiert, so dass eins nach dem anderen aus dem Stack entfernt wird.
EADS 2.1 DFS-Algorithmus 427/530
ľErnst W. Mayr
2.2 BFS-Algorithmus
while ∃ unvisited v do
r := pick (random) unvisited node push r into (end of) queue
while queue 6= ∅ do
v := remove front element of queue if v unvisited then
mark v visited
append all neighbours of v to end of queue perform operations BFS Ops(v)
fi od od
EADS 2.2 BFS-Algorithmus 428/530
ľErnst W. Mayr
Beispiel 98
B B
B B
B B A
A A
A
B B
B B
B B Q
Q Q
Q Q
Q
H H H H
B B
B B
B B A
A A
A
B B
B B
B B Q
Q Q
Q Q
Q
H H H H
B B
B B
B B N A
A A
A
U ?
B B
B B
B B N Q
Q Q
Q Q
Q s H H
H H j 1 g
2 g
6 g
9 g g
8 5 g
3 g
4 g
7 g 1 t
2 t
3 t
4 t 5 t
t 6 t 7 8 t
9 t Q
Q Q
Q Q
Q
@
@
@
@
EADS 2.2 BFS-Algorithmus 429/530
ľErnst W. Mayr
Beobachtung: Die markierten Kanten bilden einen Spannbaum:
B B
B B
B B A
A A
A
B B
B B
B B Q
Q Q
Q Q
Q
H H H H
B B
B B
B B A
A A
A
B B
B B
B B Q
Q Q
Q Q
Q
H H H H
B B
B B
B B N A
A A
A
U ?
B B
B B
B B N Q
Q Q
Q Q
Q s H
H H H j 1 g
2 g
6 g
9 g g
8 5 g
3 g
4 g
7 g 1 t
2 t
3 t
4 t 5 t
t 6 t 7 8 t
9 t Q
Q Q
Q Q
Q
@
@
@
@
pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
ppppppppppppppppppppppppppppppppppp
pppppp pppppp pppppp pppppp pppppppppppppppppppppppp pppp pppp pppp H H
Y R¨ uckw¨ artskanten
1 g
2 g 3 g 4 g
5 g 6 g
7 g 8 g
9 g
B B
B H
H H H H
H
J J
J J
J J
J J
J s
s s s
s
s s s
s
EADS 2.2 BFS-Algorithmus 430/530
ľErnst W. Mayr
Folge der Queuezust¨ ande
1 2 8 7 8 7 1 8 9 3 7 1 8 9 3 1 2 6 7 5 1 8 9 3 1 2 6 7 5 1 8 6 3 1 2 6 7 5 1 8 6 5 3 2 1 2 6 7 5 1 8 6 5 3 2 4 9 2 7 5 1 8 6 5 3 2 4 9 2 7 8 5 1 8 6 5 3 2 4 9 2 7 8 5 6 8 9 4
9 2 7 8 5 6 8 9 4 5 3
j j
j j j
j j j j j j
j j j j j j j j j j j visited
visited visited visited
visited
Zustand:
Queue:
(a (b (c (d (e (f (g (h (i (j
EADS 2.2 BFS-Algorithmus 431/530
ľErnst W. Mayr
Wir betrachten die Folge der Queuezust¨ ande. Wiederum bedeutet die Notation:
i : vorderstes Queue-Element : schon besuchte Knoten
: Nachbarn
Im Zustand e) sind die Elemente 1 und 8 als visited markiert (siehe Zust¨ ande a) und c)). Deswegen werden sie aus der Queue entfernt, und so wird das Element 9 das vorderste Queueelement. Das gleiche passiert in den Zust¨ anden g), h) und i). Im Zustand j) sind alle Elemente markiert, so dass sie eins nach dem anderen aus der Queue entfernt werden.
EADS 2.2 BFS-Algorithmus 432/530
ľErnst W. Mayr
3. Minimale Spannb¨ aume
Sei G = (V, E) ein einfacher ungerichteter Graph, der o.B.d.A.
zusammenh¨ angend ist. Sei weiter w : E → R eine Gewichtsfunktion auf den Kanten von G.
Wir setzen
E
0⊆ E: w(E
0) = P
e∈E0
w(e),
T = (V
0, E
0) ein Teilgraph von G: w(T ) = w(E
0).
Definition 99
T heißt minimaler Spannbaum (MSB, MST) von G, falls T Spannbaum von G ist und gilt:
w(T ) ≤ w(T
0) f¨ ur alle Spannb¨ aume T
0von G.
EADS 3.0 BFS-Algorithmus 433/530
ľErnst W. Mayr
Beispiel 100
q q
q q q q
@
@ @
@
@ @
8 3
5 6 7
1 2
4 minimaler - Spannbaum
q q
q q q q
Anwendungen:
Telekom: Verbindungen der Telefonvermittlungen Leiterplatinen
EADS 3.0 BFS-Algorithmus 434/530
ľErnst W. Mayr
3.1 Konstruktion von minimalen Spannb¨ aumen
Es gibt zwei Prinzipien f¨ ur die Konstruktion von minimalen Spannb¨ aumen (Tarjan):
” blaue“ Regel
” rote“ Regel
EADS 3.1 Konstruktion von minimalen Spannb¨aumen 435/530
ľErnst W. Mayr
Satz 101
Sei G = (V, E) ein zusammenh¨ angender ungerichteter Graph, w : E → R eine Gewichtsfunktion, C = (V
1, V
2) ein Schnitt (d.h.
V = V
1∪ V
2, V
1∩ V
2= ∅, V
16= ∅ 6= V
2). Sei weiter E
C= E ∩ (V
1× V
2) die Menge der Kanten
” ¨ uber den Schnitt hinweg“. Dann gilt: (
” blaue“ Regel)
1
Ist e ∈ E
Cdie einzige Kante minimalen Gewichts (¨ uber alle Kanten in E
C), dann ist e in jedem minimalen Spannbaum f¨ ur (G,w) enthalten.
2
Hat e ∈ E
Cminimales Gewicht (¨ uber alle Kanten in E
C), dann gibt es einen minimalen Spannbaum von (G,w), der e enth¨ alt.
EADS 3.1 Konstruktion von minimalen Spannb¨aumen 436/530
ľErnst W. Mayr
Beweis:
[durch Widerspruch]
1
Sei T ein minimaler Spannbaum von (G, w), sei e ∈ E
Cdie minimale Kante. Annahme: e / ∈ T . Da T Spannbaum
⇒ T ∩ E
C6= ∅.
Sei T ∩ E
C= {e
1, e
2, . . . , e
k}, k ≥ 1. Dann enth¨ alt T ∪ {e}
einen eindeutig bestimmten Kreis (den sogenannten durch e bzgl. T bestimmten Fundamentalkreis). Dieser Kreis muss mindestens eine Kante ∈ E
C∩ T enthalten, da die beiden Endpunkte von e auf verschiedenen Seiten des Schnitts C liegen.
EADS 3.1 Konstruktion von minimalen Spannb¨aumen 437/530
ľErnst W. Mayr
Beweis (Forts.):
r r r A A
A A A A
r r r j j
j e
e
0V
1V
2@ @ r
H H H
H H H
@ @ H H H
r
@ @ r
r
r r A A
A A
A A A A
r r
j j
e T
e
0Sei e
0∈ E
C∩ T . Dann gilt nach Voraussetzung w(e
0) > w(e). Also ist T
0:= T − {e
0} ∪ {e} ein Spannbaum von G, der echt kleineres Gewicht als T hat, Widerspruch zu
” T ist minimaler Spannbaum“.
EADS 3.1 Konstruktion von minimalen Spannb¨aumen 438/530
ľErnst W. Mayr
Beweis (Forts.):
2
Sei e ∈ E
Cminimal. Annahme: e kommt in keinem minimalen Spannbaum vor. Sei T ein beliebiger minimaler Spannbaum von (G, w).
r r r
j r
j j
j r
r e
V
1V
2e / ∈ T ∩ E
c6= ∅
e / ∈ T ∩ E
C6= ∅. Sei e
0∈ E
C∩ T eine Kante auf dem durch e bez¨ uglich T erzeugten Fundamentalkreis. Dann ist
T
0= T − {e
0} ∪ {e} wieder ein Spannbaum von G, und es ist w(T
0) ≤ w(T ). Also ist T
0minimaler Spannbaum und e ∈ T
0.
EADS 3.1 Konstruktion von minimalen Spannb¨aumen 439/530
ľErnst W. Mayr
Satz 102
Sei G = (V, E) ein ungerichteter, gewichteter,
zusammenh¨ angender Graph mit Gewichtsfunktion w : E → R . Dann gilt: (
” rote“ Regel)
1
Gibt es zu e ∈ E einen Kreis C in G, der e enth¨ alt und w(e) > w(e
0) f¨ ur alle e
0∈ C \ {e} erf¨ ullt, dann kommt e in keinem minimalen Spannbaum vor.
2
Ist C
1= e
1, . . . , e
kein Kreis in G und
w(e
i) = max{w(e
j); 1 ≤ j ≤ k}, dann gibt es einen minimalen Spannbaum, der e
inicht enth¨ alt.
EADS 3.1 Konstruktion von minimalen Spannb¨aumen 440/530
ľErnst W. Mayr
Beweis:
1
Nehmen wir an, dass es einen minimalen Spannbaum T gibt, der e = {v
1, v
2} enth¨ alt. Wenn wir e aus T entfernen, so zerf¨ allt T in zwei nicht zusammenh¨ angende Teilb¨ aume T
1und T
2mit v
i∈ T
i, i = 1, 2. Da aber e auf einem Kreis in G liegt, muss es einen Weg von v
1nach v
2geben, der e nicht ben¨ utzt.
Mithin gibt es eine Kante e ˆ 6= e auf diesem Weg, die einen Knoten in T
1mit T
2verbindet. Verbinden wir T
1und T
2entlang ˆ e, so erhalten wir einen von T verschiedenen Spannbaum T ˆ . Wegen w(ˆ e) < w(e) folgt w( ˆ T ) < w(T ), im Widerspruch zur Minimalit¨ at von T .
EADS 3.1 Konstruktion von minimalen Spannb¨aumen 441/530
ľErnst W. Mayr
Beweis (Forts.):
2
Wir nehmen an, e
iliege in jedem minimalen Spannbaum (MSB) von G, und zeigen die Behauptung durch Widerspruch.
Sei T ein beliebiger MSB von G. Entfernen wir e
iaus T , so zerf¨ allt T in zwei nicht zusammenh¨ angende Teilb¨ aume T
1und T
2. Da e
iauf einem Kreis C
1= e
1, . . . , e
kin G liegt, k¨ onnen wir wie zuvor e
idurch eine Kante e
jdes Kreises C
1ersetzen, die T
1und T
2verbindet. Dadurch erhalten wir einen von T verschiedenen Spannbaum T ˜ , der e
inicht enth¨ alt. Da nach Voraussetzung w(e
j) ≤ w(e
i) gilt, folgt w( ˜ T ) ≤ w(T ) (und sogar w( ˜ T ) = w(T ), da T nach Annahme ein MSB ist). Also ist T ˜ ein MSB von G, der e
inicht enth¨ alt, im Widerspruch zur Annahme, e
iliege in jedem MSB von G.
EADS 3.1 Konstruktion von minimalen Spannb¨aumen 442/530
ľErnst W. Mayr
Literatur
Robert E. Tarjan:
Data Structures and Network Algorithms
SIAM CBMS-NSF Regional Conference Series in Applied Mathematics Bd. 44 (1983)
EADS 3.1 Konstruktion von minimalen Spannb¨aumen 443/530
ľErnst W. Mayr