1. Graphen

Werbung
1
1. Graphen
1. Graphen
1.1 Einige Beispiele
Beispiel 1: Bahnverbindungen zwischen mehreren Orten
Az
zB
Cz
zD
Fz
zE
zG
Beispiel 2: Planung eines Hausbaus
E8
●
E4
●
E1
●
E2
●
E3
●
E5
E7
●
E6
●
ES
Vorgang
Ausbau des Kellers
Errichtung des Mauerwerks
Errichtung des Dachstuhls
Decken des Daches
Durchführung der Installationen
Anbringen des Außenputzes
Anbringen des Innenputzes
Anbringen des Innenanstrichs
Verlegung der Böden
Fertigstellung des Schutzraumes
Endkommissionierung
E11
●
E10
●
Bezeichnung
des Vorganges
E1
E2
E3
E4
E5
E6
E7
E8
E9
E10
E11
E9
●
ES ... „Scheinvorgang“
Dauer
(in Tagen)
21
18
4
3
9
5
7
4
6
2
1
Vorgänge, die zuvor
abgeschlossen sein müssen
--E1
E2
E3
E2
E4, E5
E4, E5
E7
E8
E5
E6, E9, E10
2
1. Graphen
1.2 Grundbegriffe der Graphentheorie
Ein Graph besteht aus einer Menge V von „Knoten“ (engl. vertices) und einer Menge E von
„Kanten“ (engl. edges), welche je zwei Knoten verbinden. Die Kanten können gerichtet sein
wie in Beispiel 2 oder ungerichtet wie in Beispiel 1. Dementsprechend spricht man von
gerichteten Graphen (oder Digraph, engl.: directed graph) bzw. ungerichteten Graphen.
Ist V = {v1, v2, ... , vn} die Menge der Knoten des Graphen, so lässt sich eine gerichtete
Kante von vi nach vk durch ein geordnetes Zahlenpaar (vi, vk) beschreiben, eine ungerichtete
Kante kann durch eine zweielementige Menge {vi, vk}angegeben werden.
Etwas formaler: Ein gerichteter Graph G ist ein Paar (V, E), wobei V eine beliebige Menge
und E ⊆ VxV ist.
Für eine gerichtete Kante ( x , y) ∈ E wird x der Anfangsknoten und y der Endknoten genannt
und die beiden Knoten heißen adjazent (oder benachbart). Statt „gerichtete Kante“ sagt man
auch „Bogen“.
Ist V = {v1 , v 2 ,..., v n } endlich, was bei den von uns betrachteten Anwendungen stets der Fall
sein wird, so kann die Relation E auch durch eine Matrix A= (a ij ) , die sog. Adjazenzmatrix
des Graphen, beschrieben werden, für die gilt
⎧ 1, falls (v i , v j ) ∈ E
a ij := ⎨
sonst
⎩ 0
Hat der Graph nur wenige Kanten, so eignet sich die Darstellung des Graphen mit Hilfe von
sog. Adjazenzlisten (A v ) v∈V allerdings besser, wobei hier A v für jedes v ∈ V die Menge
bezeichnet, welche genau die Knoten w enthält, für die (v,w) ∈ E ist. (In der Computerpraxis
sind die A v sog. verkettete Listen.)
Endliche Digraphen lassen sich auch graphisch sehr schön durch sog. (Pfeil-) Diagramme
veranschaulichen, indem man die Elemente v1 , v 2 ,..., v n durch Punkte der Ebene symbolisiert
und genau dann einen Pfeil von v i nach v j zeichnet, wenn ( v i , v j ) ∈ E gilt.
Beispiel 3: Gegeben sei der gerichtete Graph G= (V, E) mit V = {v1 , v 2 , v 3 , v 4 , v 5 , v 6 } und
E = {( v1 , v 2 ), ( v 2 , v1 ), ( v 3 , v 4 ), ( v 3 , v 5 ), ( v 4 , v 5 ), ( v 5 , v 6 ), ( v 6 , v 3 ), ( v 6 , v 4 )}
G = ( V, E ) kann dann etwa durch folgendes Diagramm veranschaulicht werden:
v2
v5
v4
v3
v1
v6
3
1. Graphen
Die zugehörige Adjazenzmatrix
⎛0
⎜
⎜1
⎜0
A= ⎜
⎜0
⎜0
⎜
⎜0
⎝
1
0
0
0
0
0
0
0
0
0
0
1
0
0
1
0
0
1
0
0
1
1
0
0
bzw.
die Adjazenzlisten:
A 1 = {v 2 }
A 2 = {v1 }
A 3 = {v 4 , v 5 }
A 4 = {v 5 }
A 5 = {v 6 }
A 6 = {v 3 , v 4 }
0⎞
⎟
0⎟
0⎟
⎟
0⎟
1 ⎟⎟
0 ⎟⎠
Die Anzahl der Pfeile, welche für einen gegebenen Knoten v ∈ V „wegführen”, wird der
Weggrad von v genannt, i.Z. d + ( v). Analog heißt die Anzahl der Pfeile, welche zu v
„hinführen”, der Hingrad von v, i.Z. d − ( v). (In obigem Beispiel wäre etwa d + ( v 4 ) = 1 und
d − ( v 4 ) = 2. )
Offensichtlich ist d + ( v) bzw. d − ( v) gerade die Anzahl der Einsen in der Zeile bzw. Spalte
von v in der Adjazenzmatrix A. Indem man nun die Anzahl der Einsen in der Adjazenzmatrix
A insgesamt, welche ja gerade die Kantenzahl E ist, einmal zeilenweise und einmal
spaltenweise zählt, erhält man sofort
Satz: In jedem gerichteten Graphen G=(V,E) ist
∑d
v∈V
+
( v) = ∑ d − ( v) = E ,
v∈V
d.h. die Summe aller Weg- bzw. Hingrade für den Graphen G ist gleich der Anzahl seiner
Kanten.
Gelegentlich ist für einen (gerichteten oder ungerichteten) Graphen auch noch eine Funktion
w definiert, welche jedem Bogen bzw. jeder Kante eine reelle Zahl zuordnet, wobei diese von
der Problemstellung her meist nichtnegativ ist. (Z.B. könnte diese Bewertung für einen
Graphen, welcher ein Straßennetz repräsentiert, die Längen bzw. die Transportkosten für die
Straßenstücke sein, welche die Knoten verbinden.) Man spricht in diesem Fall von
bewerteten Graphen.
Analog wie für gerichtete Graphen definiert man den Grad d(v) eines Knotens v ∈ V in
einem ungerichteten Graphen G=(V,E) als die Anzahl der Kanten mit v als einen Endknoten.
Der zum obigen Satz entsprechende Satz lautet dann
Satz („Handschlaglemma”): In jedem ungerichteten Graphen G=(V,E) gilt
∑ d ( v) = 2 E ,
v∈V
d.h. die Summe aller Grade des Graphen ist gleich der doppelten Anzahl seiner Kanten.
In einem Digraph (V,E) heißt nun jede Folge v 0 v1 ...v k mit
v 0 , v1 ,..., v k ∈ V und
( v 0 , v1 ), ( v1 , v 2 ),..., ( v k −1 , v k ) ∈ E eine (gerichtete) Kantenfolge. v 0 und v k heißen dann
(durch die Kantenfolge) verbunden. Die Zahl k wird dabei die Länge der Kantenfolge
genannt. Ist dabei v 0 = v k so spricht man von einer geschlossenen Kantenfolge, sonst von
einer offenen. Eine geschlossene Kantenfolge, die jede Kante des Graphen genau einmal
enthält, wird (wie dann auch der sie enthaltende Graph selbst) Eulersch genannt.
4
1. Graphen
Falls alle Knoten der Kantenfolge paarweise verschieden sind, spricht man von einer Bahn
oder einem (gerichteten) Weg, falls dies mit genau der Ausnahme v 0 = v k zutrifft von einem
Zyklus oder einem (gerichteten) Kreis. Ein Kreis, der alle Knoten des Graphen genau
einmal enthält, wird (wie dann auch der diesen Kreis enthaltende Graph selbst) Hamiltonsch
genannt. Existieren in dem gerichteten Graphen keine Zyklen positiver Länge, so heißt er
azyklisch.
Alle zuvor eingeführten Begriffe lassen sich auch wieder auf ungerichtete Graphen
spezialisieren, wodurch man insbesondere die zu den Begriffen Bahn und Zyklus analogen
Begriffe Weg bzw. Kreis erhält. Statt azyklisch sagt man auch kreisfrei. Ein ungerichteter
kreisfreier Graph wird auch Wald genannt.
In ungerichteten Graphen (V,E) kann für alle a,b ∈ V
a ~ b :⇔ a und b sind durch einen Weg verbunden
eine Äquivalenzrelation definiert werden. (Vgl. 1.3) Die Klassen der zugehörigen Partition
heißen die Zusammenhangskomponenten des Graphen. Besitzt der Graph nur eine
Zusammmenhangskomponente (d.h. sind je zwei seiner Knoten verbunden), so heißt er
zusammenhängend. Diesen Zusammenhangsbegriff kann man in ganz analoger Weise auch
gerichteten Graphen einführen, indem man verlangt, dass a und b auf einem gerichteten Kreis
liegen, was dann auf sog. stark zusammenhängende gerichtete Graphen führt. Für sie ist
aber auch noch die Abschwächung sehr wichtig, bei der man nur verlangt, dass der
zugrundeliegende ungerichtete Graph (sein sog. Schatten, der aus dem gerichteten Graphen
im wesentlichen durch Weglassung der Kantenorientierung hervorgeht, wobei dadurch
entstehende Mehrfachkanten bis auf genau eine gestrichen werden) zusammenhängend ist. In
diesem Fall spricht man von schwach zusammenhängenden Digraphen.
Ein ungerichteter Graph, welcher zusammenhängend und kreisfrei ist, wird Baum genannt.
Insbesondere sind also die Zusammenhangskomponenten eines Waldes stets Bäume.
Beispiel:
Der durch das nachfolgende Diagramm gegebene ungerichtete Graph ist ein Wald mit zwei
Bäumen:
Bäume sind besonders strukturierte Graphen, welche in vielen Anwendungen eine wichtige
Rolle spielen. Sie lassen sich auf verschieden Weisen einfach charakterisieren, wie der
folgende Satz zeigt:
Satz: Für einen (ungerichteten) Graphen G=(V,E) mit n Knoten sind folgende Aussagen
äquivalent:
(1) G ist ein Baum.
5
1. Graphen
(2) Je zwei Knoten von G sind durch genau einen Weg verbunden.
(3) G ist zusammenhängend, aber der Graph Ge, der aus G durch Wegnahme einer beliebigen
Kante e ∈ E entsteht, ist nicht mehr zusammenhängend.
(4) G ist zusammenhängend und hat genau n-1 Kanten.
(5) G ist kreisfrei und hat genau n-1 Kanten.
(6) G ist kreisfrei, aber der Graph G v , w , welcher aus G entsteht, indem man zwei
ursprünglich nicht benachbarte Knoten v, w ∈ V durch eine Kante verbindet, enthält genau
einen nichttrivialen Kreis.
Ist G=(V,E) ein ungerichteter Graph, so heißt G ′ = (V ′, E ′ ) ein Teilgraph von G, wenn gilt
V ′ ⊆ V und E ′ ⊆ E . Gilt dabei insbesondere V′ = V , so heißt G ′ ein spannender Teilgraph
von G. Ist ferner G zusammenhängend und G′ ein spannender Teilgraph, welcher ein Baum
ist, so heißt G ′ auch ein Gerüst von G.
1.3 Relationen und Graphen
In (Zahlen-)Mengen können oft gewisse „relationale” Zusammenhänge zwischen den
Elementen existieren, wie z.B. a ≤ b oder auch a b („a teilt b”) für a,b ∈ Z.
Allgemein:
Definition: Unter einer Relation R auf einer Menge M versteht man eine beliebge Teilmenge
von M × M:= {( x, y ) x ∈ M , y ∈ M } :
R = Relation auf M
⇔
R⊆M×M
Gilt dabei (x,y) ∈ R , wofür man oft auch kurz x R y schreibt, so sagt man, „x stehe in
Relation mit y (bez. R)”.
Einige besonders wichtige Eigenschaften von Relationen sind:
•
Reflexivität: x R x für alle x ∈ M
•
Irreflexivität: x R y ⇒ x ≠ y für alle x , y ∈ M
•
Symmetrie: x R y ⇒ y R x für alle x , y ∈ M .
•
Antisymmetrie: x R y ∧ y R x ⇒ x = y für alle x , y ∈ M .
•
Transitivität: x R y ∧ y R z ⇒ x R z für alle x , y, z ∈ M .
Definition: Eine Relation R auf M heißt eine Äquivalenzrelation auf M, wenn sie reflexiv,
symmetrisch und transitiv ist.
Definition: Eine Relation R auf M heißt eine Ordungsrelation auf M, wenn sie reflexiv,
antisymmetrisch und transitiv ist. In diesem Fall nimmt man für R oft das Symbol ≤ und (M,
≤ ) wird dann auch eine geordnete Menge genannt.
Ist R speziell eine Äquivalenzrelation, so kann man für jedes a ∈ M die Teilmenge
[a ]R := {x ∈ M
x R a}
6
1. Graphen
betrachten, welche auch Äquivalenzklasse von a genannt wird. Ist R vom Kontext her klar
vorgegeben, so wird der Index R auch oft weggelassen, d.h. man schreibt nur [a] oder
manchmal auch a für die Äquivalenzklasse von a.
Ist R eine Äquivalenzrelation auf M, so bildet die Menge
M / R := {[a ]R a ∈ M }
aller Äquivalenzklassen eine sog. Partition oder Klasseneinteilung von M, d.h. es gelten
folgende 3 Eigenschaften:
1. [a ]R ≠ ∅ für alle a ∈ M (es ist ja stets a ∈ [a ]R !)
2. [a ]R ∩ [b]R ≠ ∅ ⇒ [a ]R = [b]R für alle a,b ∈ M .
3.
U [a ]
R
= M.
a∈M
Wegen 2. liegt also dann jedes a ∈ M in höchstens einer Äquivalenzklasse und wegen 3. in
mindestens einer Äquivalenzklasse, insgesamt gesehen daher in genau einer Äquivalenzklasse
bez. R.
Umgekehrt kann man jeder Partition von M, d.h. jeder Menge P= {M i i ∈ I } von nichtleeren
Teilmengen von M, welche paarweise elementfremd sind und deren Vereinigung M ist, eine
Äquivalenzrelation R P auf M zuordnen, welche definiert ist durch
x R P y :⇔ ∃i ∈ I : x, y ∈ M i
und diese Zuordnung P a R P ist eine Bijektion zwischen den Partitionen und den
Äquivalenzrelationen auf M.
Beispiele:
1. Auf jeder Menge M gibt es die beiden sog. trivialen Äquivalenzrelationen, nämlich die
identische Relation ι M := {(a, a) a ∈ M } , wobei man statt a ι M b meist a=b schreibt, und die
Allrelation α M = M x M, bei der also a α M b ∀a , b ∈ M gilt. Wenn M vom Zusammenhang
her klar ist, schreibt man für sie auch kürzer ι bzw. α . Die zugeordneten Partitionen sind
dabei Pι = {{a} a ∈ M} bzw. Pα = {M} .
2. Für jede Teilmenge A der Menge R der reellen Zahlen ist ferner ≤ (hier in seiner
ursprünglichen Bedeutung!) eine Ordnungsrelation, welche mit der gew. Addition +
verträglich ist. Ist A ⊆ R 0+ , d.h. enthält es keine negativen Zahlen, so gilt auch die
Verträglichkeit mit der gew. Multiplikation. Diese Ordnungsrelation hat überdies die spezielle
Eigenschaft, dass für beliebige a , b ∈ A stets a ≤ b oder b ≤ a zutrifft. Eine
Ordnungsrelation mit dieser Eigenschaft nennt man auch total oder linear.
3. Ist M eine beliebige Menge und P(M) die Menge aller Teilmengen von M, welche auch
Potenzmenge von M genannt wird, so ist auf P(M) durch A ⊆ B eine Ordnungsrelation ⊆
gegeben, die sog. mengentheoretische Inklusion.
4. Ein gerichteter Graph G ist ein Paar (V,E), wobei V eine beliebige Menge und E eine
Relation auf V ist.
7
1. Graphen
5. Ein gewöhnlicher oder ungerichteter Graph ist ein Digraph (V,E) eine besonders
wichtige Teilklasse, für welchen die Relation E irreflexiv und symmetrisch ist. (Manche
Autoren fordern auch bereits für einen gerichteten Graphen die Irreflexivität von E, d.h. sie
schließen Schlingen aus.)
1.4 Einige Algorithmen der Graphentheorie
1) Algorithmus für Minimalgerüst
In vielen Anwendungen ist nun z.B. für einen zusammenhängenden ungerichteten Graphen
mit einer Bewertung ein Minimalgerüst gesucht, d.h. ein Gerüst, für welches die Summe
aller Bewertungen seiner Kanten minimal ist. (In obigem Beispiel eines Straßennetzes sollten
z.B. nach der „Stilllegung” von möglichst vielen Straßen doch alle Knoten verbunden bleiben
und die Summe der Distanzen insgesamt ein Minimum sein.)
Der nachfolgende Algorithmus von Kruskal ist vom Typ her ein sog. Greedy-Algorithmus.
Damit ist gemeint, dass in den einzelnen Schritten des Algorithmus immer gerade das
gemacht wird, was im Moment das Beste zu sein scheint („den besten Happen zuerst”), um zu
einer insgesamt optimalen Lösung zu gelangen.
Algorithmus von Kruskal: Sei G=(V,E) ein zusammenhängender Graph mit einer
Bewertung w. Auf nachfolgende Weise erhält man dann für ihn ein Minimalgerüst:
1. Sortiere zunächst die Kantenmenge E = {e1 , e 2 ,..., e m } so um, dass danach gilt
w (e1 ) ≤ w (e 2 ) ≤ ... ≤ w (e m )
und setze zu Beginn
B ← ∅ , M ← {{v} v ∈ V } , k ← 1.
Die Elemente von M werden dabei im folgenden als „Komponenten” angesprochen.
(Tatsächlich repräsentieren sie die jeweiligen Zusammenhangskomponenten beim
sukzessiven Aufbau des Minimalgerüsts B.)
2. Füge die Kante e k zu B dazu , d.h. B:= B ∪ {e k } , falls die Endknoten von e k in
verschiedenen Komponenten K 1 , K 2 von M liegen und führe in diesem Fall die Ersetzung
M ← ( M \ { K 1 , K 2 }) ∪ {K 1 ∪ K 2 }
durch, d.h. die beiden Komponenten K1 und K 2 werden zu einer „verschmolzen”.
3. Ist M = 1 , so stoppe das Verfahren mit der Ausgabe des Minimalgerüsts B. Ansonsten
setze k ← k+1 und fahre bei 2. fort.
Herunterladen