Einführung in die Graphentheorie Modellierung mit Graphen

Werbung
Einführung in die Graphentheorie
Modellierung mit Graphen
Aufgabe
Ein Mann steht mit einem Wolf, einer Ziege und einem Kohlkopf
am einen Ufer eines Flusses, den er überqueren will.
• Motivation
Er hat ein Boot, das groß genug ist, ihn und ein weiteres Objekt zu
transportieren, so dass er immer nur eins der drei mit sich
hinübernehmen kann.
• Ungerichtete Graphen
• Gerichtete Graphen
Falls der Mann allerdings den Wolf und die Ziege oder die Ziege
und den Kohlkopf unbewacht an einem Ufer zurücklässt, so wird
einer gefressen werden.
Credits:
Ist es möglich, den Fluss zu überqueren, ohne dass die Ziege oder
der Kohlkopf gefressen werden? Wie viele Fahrten benötigt man
mindestens?
D. Jungnickel: Graphen, Netzwerke und Algorithmen, BI 1994
G. Goos: Vorlesungen über Informatik, Springer 2000
www.easy-mod.de
www.fh-bochum.de
www.usa.de
www.matheprisma.uni-wuppertal.de
ag-kastens.upb.de/lehre/material/model/
(Alkuin, Abt des Klosters St. Martin in Tours, Lehrer und Ratgeber Karls des Großen)
Man fängt natürlich sofort an, im Kopf die verschiedenen
Möglichkeiten zum Transport durchzuspielen und die sich
ergebenden Verteilungen von Mann, Wolf, Ziege und Kohlkopf auf
die beiden Ufer zu überprüfen.
Wie kann man die Möglichkeiten systematisch durchsuchen?
• Modellierung der Situationen
• Modellierung der Übergänge von Situation zu Situation
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-1
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-2
Eine Modellierung des Rätsels
Modellierung mit Graphen
Eine Situation ist eine mögliche Verteilung von Mann, Wolf, Ziege,
Kohlkopf auf die beiden Flussufer.
symbol.
Modell
Situationen können modelliert werden durch Paare von Teilmengen
von S := {M, W, Z, K}:
:= {(S1, S2) | S1 ∪ S2 = S, S1 ∩ S2 = ∅}
Simulation
Verhalten
Transfer
Abstraktion
Durch Überqueren des Flusses ggf. mit einem Objekt kann der
Mann die Situation verändern.
graph.
Modell
Überquerungen können modelliert werden durch Verbindungen
zwischen Zuständen. Die Verbindungen werden beschriftet mit den
transportierten Elementen aus S.
({M,W,Z,K},{})
({W,Z,K},{M})
({Z,K},{M,W})
({W,K},{M,Z})
({M,K},{W,Z})
({W},{M,Z,K})
({M,Z,K},{W})
({M,W,Z},{K})
Verhalten
Abstraktion
Transfer
({W,Z},{M,K})
System
({M,W,K},{Z})
({K},{M,W,Z})
Simulation
Experiment
Verhalten
Domäne
({M,W},{Z,K})
({Z},{M,W,K})
({M,Z},{W,K})
({},{M,W,Z,K})
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-3
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-4
Ungerichteter Graph
Beispiele für Graphen
Definition
Ein (ungerichteter) Graph G = (V, E) ist ein Paar bestehend aus
• V einer endlichen Menge von Knoten (vertices) und
• E ⊂ P(V ) einer Menge von Kanten (edges), i.e.
zweielementigen Teilmengen von V .
Knoten modellieren Zustände, Situationen, Positionen, . . .
Kanten modellieren Relationen zwischen den Knoten.
Für eine Kante e = {v, w} ∈ E zwischen den Knoten v ∈ V und
w ∈ V verwendet man folgende Bezeichnungen:
Knoten = Staat; Kante = gemeinsame Grenze
• v und w heißen inzident zu e,
• e heißt inzident zu v und w und
• v und w heißen adjazent.
3
2
6
4
1
5
Knoten = Bauteil oder Leitungsknoten; Kante = Leitung
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-5
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-6
Verallgemeinerungsmöglichkeiten für ungerichtete
Graphen
Maximale Kantenanzahl ungerichteter Graphen
Lemma
Für jeden ungerichteten Graphen G = (V, E) gilt:
• Schlaufen oder Schlingen
Eine Kante führt von einem Knoten zu diesem selbst zurück.
|E| ≤ |V | · (|V | − 1)
3
2
Die Kantenanzahl für Graphen ohne Schlingen ist höchstens
|V | · (|V | − 1), da jeder Knoten von V als Anfangs- oder als
Endpunkt auftreten kann, aber nicht gleichzeitig Anfangs- und
Endpunkt sein darf.
6
4
1
5
• Mehrfachkanten
Die Kantenanzahl für Graphen mit Schlingen ist höchstens |V |2, da
jeder Knoten von V als Anfangs- und als Endpunkt auftreten kann.
Zu zwei Knoten gibt es (eventuell) mehrere Kanten, die sie
miteinander verbinden.
Die Kantenanzahl für Multigraphen ist nicht beschränkt, da zu zwei
Knoten von V beliebig viele Kanten inzident sein können.
3
2
6
Die Kantenanzahl für Hypergraphen ist höchstens 2|V | , da jede
Teilmenge von V als Kante auftreten kann.
4
1
5
• Hypergraphen
Kanten sind Mengen von Knoten.
3
2
6
4
1
5
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-7
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-8
Datenstrukturen zur Verarbeitung von Graphen
Teilgraphen ungerichteter Graphen
Für einen Graphen G = (V, E) sei eine lineare Sortierung der
Knoten gegeben:
V = {v1, . . . , vn }
Definition
Ein Graph G = (V , E ) ist ein Teilgraph eines Graphen G = (V, E),
wenn gilt V ⊆ V und E ⊆ E mit E ⊂ P(V ).
3
3
2
2
Adjazenzmatrix :
6
mit ai,j =
6
MG = (ai,j )i,j∈{1,...,n}
4
4
1
1 {vi , vj } ∈ E
0 1
5
5
Definition
Ein Teilgraph G = (V , E ) eines Graphen G = (V, E) mit V = V
heißt erzeugender Teilgraph (spanning subgraph).
Adjazenzliste:
LG = ((v1, al1), . . . , (vn, aln))
3
mit ali sortierte Liste der zu vi adjazenten Knoten (bzgl. E) in V .
3
2
2
6
6
Beispiel:
1
1
G = ({a, b, c, d}, {{a, b}, {a, d}, {b, c}, {c, d}})

0

1
MG = 
0
1
4
4
1
0
1
0
0
1
0
1

1

0

1
0
b
5
5
Definition
Für einen Graphen G = (V, E) und V ⊆ V heißt der Graph
G = (V , E ) mit E := {{v1, v2} ∈ E | v1, v2 ∈ V } der von V induzierte Teilgraph von G.
d
3
3
2
LG = ( a,
b,
c,
d,
c LETTMANN 2003/04
(b, d)
(a, c)
(b, d)
(a, c) )
2
6
6
4
4
1
a
1
c
5
Modellierung — Graphentheorie
VI-9
c LETTMANN 2003/04
5
Modellierung — Graphentheorie
VI-10
Isomorphie von Graphen
Knoten- und Kantenmarkierungen
Definition
Für zwei Graphen G1 = (V1, E1) und G2 = (V2, E2) sei eine totale
und bijektive Abbildung f : V1 → V2 gegeben. f heißt
Isomorphismus von V1 auf V2 genau dann, wenn für alle Knoten
v, w ∈ V gilt:
{v, w} ∈ E1
⇐⇒
Definition
Eine Knotenmarkierung eines Graphen G = (V, E) ist eine
Abbildung
m:V →M
die jedem Knoten v eine Markierung m(v) ∈ M zuordnet.
{f (v), f (w)} ∈ E2
Definition
Eine Kantenmarkierung eines Graphen G = (V, E) ist eine
Abbildung
m:E→M
Offenes Problem der Komplexitätstheorie
Gibt es ein effizientes (d.h. polynomielles) Verfahren, um zu
entscheiden, ob zwei Graphen G1 und G2 isomorph sind?
die jeder Kante e eine Markierung m(e) ∈ M zuordnet.
Durch Verwendung von Kantenmarkierungen lassen sich
Multigraphen auf einfache Graphen zurückführen:
Kantenmarkierung = Anzahl paralleler Kanten
Dies Problem tritt meist in (vielleicht?) schärferer Form als
Teilgraph-Isomorphismus-Problem auf:
Gibt es einen Teilgraphen in G1, der isomorph zu G2 ist?
Identifiziere in einer hydraulischen Anlage die Linearachsen.
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-11
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-12
Knotengrade
Beispiel: Landkarte
Definition
Für einen Graphen G = (V, E) und einen Knoten v ∈ V heißt
(v) := |{v ∈ V | {v, v } ∈ E}|
der (Knoten-)Grad von v in G.
Der Knotengrad von v in G ist die Anzahl der mit v inzidenten
Kanten.
Definition
Für einen Graphen G = (V, E) heißt
(G) := max (v)
v∈V
der (Knoten-)Grad von G.
Satz
Die Anzahl der Punkte mit ungeradem Grad in einem Graphen ist
gerade.
Knoten = Autobahnkreuze/-dreiecke, nächste Städte
Kanten = Autobahnteilstücke
Knotenmarkierungen:
Name des Autobahnkreuzes/-dreiecks, Name der Stadt,...
Die Summe der Knotengrade aller Knoten ist 2∗(Anzahl Kanten),
also gerade.
Kantenmarkierungen:
Nummer der Autobahn, Entfernung in Straßenkilometern, Anzahl
der parallelen Spuren,...
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-13
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-14
Wege
Wege und Adjazenzmatrix
Beispiel: G = ({a, b, c, d}, {{a, b}, {a, d}, {b, c}, {c, d}})
Induktive Definition
Sei G = (V, E) ein Graph.

0

1
MG = 
0
1
• Für jeden Knoten v0 ∈ V ist (v0) ein Weg in G von v0 nach v0.
• Für Knoten v0, . . . , vn, vn+1 ∈ V , eine Kante e = {vn, vn+1} ∈ E
ist mit einem Weg (v0, . . . , vn) von v0 nach vn in G auch
(v0, . . . , vn , vn+1) ein Weg in G und zwar von v0 nach vn+1.

2
0

MG2 = MG · MG = 
2
0
Ein Weg ist also eine nicht-leere Folge von Knoten, die durch
Kanten miteinander verbunden sind.
1
0
1
0
0
1
0
1

1

0

1
0
0
2
0
2
2
0
2
0

0
2


0
2
b
d
a
c
Sei G = (V, E) ein Graph mit |V | = n und Adjazenzmatrix MG.
Meistens findet man die folgende Definition:
Definition
Für einen Graphen G = (V, E), n ∈ N und Knoten v0, . . . , vn ∈ V mit
{vi, vi+1} ∈ E für 0 ≤ i < n ist
(v0, . . . , vn) ein Weg von v0 nach vn in G.
Die Induktion steckt hier in der Verwendung der (induktiv
definierten) endlichen Folgen (v0, . . . , vn ) von Knoten.
• Das Matrixelement ai,j von MG gibt die Anzahl der Wege der
Länge 1 von vi nach vj an.
• Das Matrixelement ai,j von MG gibt die Anzahl der Wege der
Länge 2 von vi nach vj an.
Satz
Für einen Graphen G = (V, E) mit Adjazenzmatrix MG gibt die
Matrix MGk die Anzahl der Wege an zwischen Knoten aus V mit
genau der Länge k.
Definition
Die Länge l eine Weges (v0, . . . , vn) in einem GraphenG ist die
Anzahl der Kanten auf dem Weg:
l((v0, . . . , vn)) = n
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-15
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-16
Königsberger Brückenproblem
Spezielle Wege
Königsberg liegt an den Ufern und zwei Inseln des Pregel. Inseln
und Ufer sind mit sieben Brücken miteinander verbunden.
Gibt es eine Rundweg in Köningsberg, auf dem man die sieben
Brücken jeweils genau einmal überschreitet?
Definition
Ein Eulerscher Weg in einem Graphen G = (V, E) ist ein Weg, der
jede Kante von E genau einmal enthält.
Definition
Ein Hamiltonscher Weg in einem Graphen G = (V, E) ist ein Weg,
der jeden Knoten von V genau einmal enthält.
Definition
Ein Kreis in einem Graphen G = (V, E) ist ein Weg (v, . . . , v) von v
nach v der Länge l(v, . . . , v) ≥ 1.
Definition
Ein Eulerscher Kreis in G = (V, E) ist ein Kreis, der jede Kante von
E genau einmal enthält.
Die Untersuchung dieser Frage durch Euler im Jahre 1736 stellt
den Anfangspunkt der modernen Graphentheorie dar.
Definition
Ein Hamiltonscher Kreis in G = (V, E) ist ein Kreis, der jeden
Knoten von V genau einmal enthält (ausser Anfangspunkt).
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-17
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-18
Beispiele für Wege
Aussagen über Wege
Kreis in einem Graphen:
Lemma
Die Länge jedes Weges in einem Graphen G = (V, E) ist
beschränkt durch |E|.
3
2
6
Lemma
Jeder Weg w in einem Graphen G = (V, E) mit Länge l(w) ≥ |V |
enthält einen Kreis.
4
1
5
Satz
Jeder kreisfreie Graph mit n Knoten enthält höchstens n − 1
Kanten.
Eulerweg in einem Graphen:
3
1
2
2
9
Satz
Ist in einem Graph mit mindestens drei Knoten der Grad jedes
Knotens grösser gleich der halben Anzahl von Knoten, dann
enthält der Graph einen Hamiltonschen Kreis.
3
6
10
4
6
1
4
8
5
7
5
Hamiltonweg in einem Graphen:
3
2
6
4
1
5
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-19
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-20
Traveling Salesman Problem
Zusammenhang
Optimierungsproblem
Gegeben ist ein Menge von Städten, die durch Straßen bekannter
Längen verbunden sind. Gesucht ist ein kürzester Rundweg durch
alle Städte.
Definition
Ein Knoten w ∈ V eines Graphen G = (V, E) ist erreichbar vom
Knoten v ∈ V aus genau dann, wenn es einen Weg (v, . . . , w) in G
gibt.
Entscheidungsproblem
Gegeben ist ein Menge von Städten, die durch Straßen bekannter
Längen verbunden sind. Gesucht ist ein Rundweg durch alle
Städte, der höchstens eine vorgegebene Länge B hat.
Definition
Ein Graph G = (V, E) heißt zusammenhängend, wenn für alle
v, w ∈ V gilt, w ist von v aus erreichbar.
Entscheidungsproblem
Gegeben ist ein Gitter von n × n Prozessoren. Eine Nachricht soll
eine sequentiell von Prozessor zu Prozessor weitergegeben
werden. Sie soll jeden Prozessor erreichen und zum Initiator
zurückkehren. Für welche n ist das möglich?
Entscheidungsproblem
Gegeben ist ein Graph G = (V, E). Enthält G einen Hamiltonschen
Kreis?
Definition
Eine Zusammenhangskomponente eines Graphen G = (V, E) ist
der von einer maximalen Knotenmenge V ⊆ V induzierte
Teilgraph von G, so dass G zusammenhängend ist, d.h. der durch
Hinzufügen eines weiteren Knotens v ∈ V \ V von V ∪ {v }
induzierte Teilgraph von G ist nicht zusammenhängend.
Definition
Eine Zusammenhangskomponente eines Graphen, die nur aus
einem Knoten besteht, heißt auch isolierter Knoten.
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-21
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-22
Existenz von Eulerwegen
Sätze zum Zusammenhang
Beispiel: Das Haus vom Nikolaus
Satz
Jeder zusammenhängende Graph mit n Knoten enthält
mindestens n − 1 Kanten.
Satz
Ein Graph G = (V, E) enthält genau dann einen Eulerschen Weg,
wenn G zusammenhängend ist und höchstens zwei Knoten mit
ungeradem Grad enthält.
Satz
Für einen zusammenhängenden Graphen G = (V, E) sind folgende
Aussagen äquivalent:
Nicht nur ein Eulerweg existiert, sondern sogar mehrere.
Was ist, wenn das Haus vom Nikolaus einen Anbau erhält?
• G enthält einen Eulerschen Kreis.
• Jeder Knoten in G hat einen geraden Grad.
• Die Kantenmenge von G kann in Kreise zerlegt werden.
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-23
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-24
Verbindungen und Zusammenhang
Bäume
Definition
Ein Knoten v ∈ V eines zusammenhängenden Graphen G = (V, E)
heißt Schnittknoten in G, falls der von V \ {v} induzierte Teilgraph
nicht zusammenhängend ist.
Definition
Eine Kante e ∈ E eines zusammenhängenden Graphen G = (V, E)
heißt Brückenkante in G, falls der Graph (V, E \ {e}) nicht
zusammenhängend ist.
Schnittknoten und Brückenkanten sind also kritische Knoten bzw.
Kanten, da der Graph durch ihre Entfernung in verschiedene
Zusammenhangskomponenten zerfällt. Schnittkanten spielen bei
der Orientierung von Graphen eine Rolle.
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-25
Definition
Ein Baum ist ein zusammenhängender, kreisfreier Graph
G = (V, E).
Die Klassenhierarchie des Pakets java.lang in Java bildet einen
Baum mit Wurzelklasse Object.
Definition
Ein Wald ist ein kreisfreier Graph G = (V, E), d.h. die
Zusammenhangskomponenten von G sind Bäume.
Definition
Ein erzeugender Baum (spanning tree) für einen Graphen
G = (V, E) ist ein Teilgraph G = (V, E ), der ein Baum ist, d.h. ein
Baum, der alle Knoten von G enthält.
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-26
Beispiele für Bäume
Sätze über Bäume
Vollständiger binärer Baum der Tiefe 3
Satz
Für einen Graphen G = (V, E) sind folgende Aussagen äquivalent:
• G ist eine Baum.
• G ist zusammenhängend und für jede Kante e ∈ E ist der
Teilgraph G = (V, E \ {e}) nicht zusammenhängend.
• G ist kreisfrei und für zwei Knoten v, w ∈ V mit {v, w} ∈ E ist
der
Wald von vollständigen binären Bäumen
Graph G = (V, E ∪ {{v, w}}) nicht kreisfrei.
• Zwischen je zwei Knoten aus V gibt es genau einen Weg.
Korollar
Für einen Baum G = (V, E) mit |V | ≥ 1 gilt:
• |V | = |E| + 1
• G hat mindestens einen Knoten v ∈ V mit Grad (v) < 2.
Erzeugender Baum für das Nikolaushaus mit Anbau
Vom Wurzelknoten des Spannbaumes aus erreicht man jeden
Knoten des Graphen über Kanten des Spannbaumes! Meist
werden Spannbäume mit zusätzlichen Eigenschaften gesucht,
beispielsweise minimales Gesamtgewicht aller Kanten.
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-27
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-28
Gewurzelte Bäume (1)
Beispiele für Bäume
Wurzel
Induktive Definition
• Für jeden Knoten v ist der Graph G = ({v}, { }) ein Baum mit
Wurzel v.
• Für ein k ∈ N seinen G1 = (V1, E1), ..., Gk = (Vk , Ek ) Bäume mit
Wurzeln v1, ..., vk und paarweise disjunkten Knotenmengen
V1, ..., Vk und sei v ∈ V1 ∪ ... ∪ Vk . Dann ist
G = ({v} ∪ V1 ∪ ... ∪ Vk , {{v, vi}|1 ≤ i ≤ k} ∪ E1 ∪ ... ∪ Ek )
innere Knoten

























Blätter
ein Baum mit Wurzel v.
Mit einer anderen Wurzel
ergibt sich der folgende
Baum:
• Nur so gebildete Graphen sind Bäume.
Schränkt man in der Definition die Wahl für k weiter ein, so erhält
man spezielle Bäume:
• Für k ≤ 2 erhält man die Menge der binären Bäume.
• Für k ≤ 3 erhält man die Menge der ternären Bäume.
• Für festes k ∈ N erhält man die Menge der k-ären Bäume.
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-29
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-30
Gewurzelte Bäume (2)
Kantorowitsch-Baum
Beobachtung
Für einen Baum G = (V, E) kann man jeden Knoten w ∈ V als
Wurzel von G festlegen.
Definition
Ein Kantorowitsch-Baum ist ein Baum G = (V, E) mit Wurzel w ∈ V
sowie einer Knotenmarkierung m : V → F ∪ V , so dass
Definition
In einen Baum G = (V, E) mit Wurzel w heißen für einen Knoten
v ∈ V sind alle die Knoten v ∈ V Nachfolger von v, für die v im
kürzesten Weg von w nach v enthalten ist. Knoten ohne
Nachfolger heißen Blätter, Knoten mit Nachfolgern heißen innere
Knoten. Die Nachfolger v von v mit {v, v } ∈ E heißen unmittelbare
oder direkte Nachfolger von v.
• jeder innere Knoten als Markierung einen Operator hat mit
einer Stelligkeit k > 0, sowie genau k unmittelbare
Nachfolgerknoten hat und
• jeder Blattknoten als Markierung eine Variabe hat oder einen
nullstelligen Operator.
Kantorowitsch-Baum für die Formel ∀x(∃yP (x, f (y, a)) → P (x, a))
Definition
Für einen Baum G = (V, E) mit Wurzel w ∈ V und einen Knoten
v ∈ V heißt die Länge eines kürzesten Weges von w nach v die
Tiefe von v in G. Die Tiefe des Baumes G mit Wurzel w ist die
maximale Tiefe eines Knotens in G.
A
x
Die Tiefe eines Baumes richtet sich also danach, welcher Knoten
im Baum als Wurzel festgelegt worden ist. Die Tiefe ist die
maximale Länge eines kürzesten Weges von der Wurzel zu einem
Knoten.
Modellierung — Graphentheorie
VI-31
P
y P
x a
x f
Definition
Für n-ärer Baum G = (V, E) mit Wurzel w ∈ V heißt vollständiger
n-ärer Baum genau dann, wenn jeder innere Knoten genau n
unmittelbare Nachfolger besitzt und alle Blätter die gleiche Tiefe
haben.
c LETTMANN 2003/04
E
y a
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-32
Sätze über k-äre Bäume
Induktive Beweise mit k-ären Bäume
Satz
Ein vollständiger k-ärer Baum G = (V, E) mit Wurzel w ∈ V und
n−1 i
k
Tiefe n, k, n ∈ N, k > 0 hat genau k n Blätter und genau i=0
innere Knoten.
Satz
Ein vollständiger k-ärer Baum G = (V, E) mit Wurzel w ∈ V und
n−1 i
k
Tiefe n, k, n ∈ N, k > 0 hat genau k n Blätter und genau i=0
innere Knoten.
Beweis
Beweise über Knotenanzahlen k-ärer Bäume werden durch
Induktion über die Tiefe n der Bäume und ihren Aufbau geführt.
Die Gesamtzahl der Knoten ist also für k ∈ N, k > 1
n−1
i=0
i
n
k +k =
n
i=0
ki =
k n+1 − 1
k−1
n=0
Der einzige k-äre Baum der Tiefe 0 ist der Baum der nur aus
einem Wurzelknoten besteht. Dieser Baum ist auch vollständig.
i
Er hat genau k 0 = 1 Blätter und 0−1
i=0 k = 0 innere Knoten.
Der Beweis des Satzes wird durch eine Induktion über den Aufbau
k-ärer Bäume geführt.
Korollar
Ein k-ärer Baum G = (V, E) mit Wurzel w ∈ V und Tiefe n,
n+1
k, n ∈ N, k > 0 hat höchstens k k−1−1 Knoten.
n≥0
Jeder vollständige k-äre Baum G = (V, E) mit Wurzel w ∈ V
n−1 i
k innere
und Tiefe n hat genau k n Blätter und genau i=0
Knoten.
n → n + 1
Sei G = (V, E) ein vollständiger k-ärer Baum mit Wurzel w ∈ V
und Tiefe n + 1. Also hat w genau k unmittelbare Nachfolger
v1 , . . . , v k ∈ V .
Der Graph (V \ {w}, E \ {{w, v1}, . . . , {w, vk }}) besteht dann
aus genau k Zusammenhangskomponenten, die jeweils
vollständige k-äre Bäume mit Wurzeln v1, . . . , vk sind. Diese
Zusammenhangskomponenten haben also jeweils genau k n
n−1 i
Blätter und i=0
k innere Knoten.
Insgesamt ergibt sich damit für G = (V, E)
• k · k n = k n+1 als Gesamtzahl der Blätter und
n−1 i
n−1 i+1
(n+1)−1 i (n+1)−1 i
• 1 + k · i=0
k 1 + i=0
k = 1 + i=1
k = i=0
k
als Gesamtzahl der inneren Knoten.
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-33
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-34
Bipartite Graphen
Beispiele für bipartite Graphen
3
Definition
Ein Graph G = (V, E) heißt bipartit, wenn es zwei disjunkte
Knotenmengen V1, V2 ⊆ V (also V1 ∩ V2 = ∅ gibt, so dass
E ⊆ {{v1, v2} | v1 ∈ V1, v2 ∈ V2} gilt.
2
6
Die Knotenmenge von G kann also in zwei disjunkte Mengen
aufgeteilt werden, so dass Kanten immer mit je einem Knoten aus
jeder dieser Mengen inzident sind.
4
1
Ein bipartiter Graph wird auch mit (V1 V2, E) beschrieben, wenn
gilt E ⊆ {{v1, v2} | v1 ∈ V1, v2 ∈ V2} und zusätzlich |V1| ≥ |V2|.
5
nicht bipartit
Definition
Ein Matching (Korrespondenz) in einem bipartiten Graph
G = (V1 ∪ V2, E) ist eine Menge von Kanten, die paarweise keine
gemeinsamen Knoten haben.
3
2
Für jeden Knoten aus vi ∈ Vi gehört also maximal eine mit vi
inzidente Kante zu einem Matching (i = 1, 2).
6
4
1
Definition
Ein Matching in einem bipartiten Graph G = (V1 V2, E) heißt
vollständig, wenn jeder Knoten aus V2 mit einer Kante des
Matching inzident ist. (Beachte hierbei |V1| ≥ |V2|.)
5
bipartit
Definition
Ein Matching heißt perfekt, wenn alle Knoten aus V1 ∪ V2 mit einer
Kante des Matchings inzident sind.
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-35
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-36
Beispiele für bipartite Graphen
Modellierung mit bipartiten Graphen
Satz (P. Hall 1935)
In einem bipartiten Graph G = (V1 V2, E) mit |V1| ≥ |V2| gibt es
genau dann ein vollständiges Matching, wenn es für jede Menge
J ⊆ V2 gilt
|{v1 ∈ V1|∃v2 ∈ J : {v1, v2} ∈ E}| ≥ |J|
also mindestens |J| Knoten aus V1 zu den Knoten aus J adjazent
sind.
bipartit
Falls |V1| = |V2| gilt, dann ist ein vollständiges Matching auch ein
perfektes Matching und umgekehrt.
Beispiel: Heiratsproblem
Es sei eine endliche Menge V1 von Damen und eine endliche
Menge V2 von Herren gegeben. Die Funktion : V2 → P gibt zu
jedem Herren die Menge der Damen an, die zu ehelichen er bereit
ist. Außerdem sei |V1| ≥ |V2|. Nach dem Satz von Hall gibt es ein
vollständiges Matching, wenn für jede Teilmenge J von Herren die
Menge v∈J (v) mindestens |J| Elemente enthält.
vollständiges Matching
maximales Matching
“Wenn die Herren nicht zu wählerisch sind,
bekommt jeder eine Dame ab.”
maximal = maximale Mächtigkeit
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-37
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-38
Färbung von Graphen
Vierfarbenproblem
Definition
Eine Färbung eines Graphen G = (V, E) ist eine Knotenmarkierung
m : V → M , die jedem Knoten eine Farbe aus M zuordnet, so
dass für adjazente Knoten v, w ∈ V gilt m(v) = m(w).
Ist jede Landkarte mit maximal vier Farben färbbar?
(Länder = Knoten, Kante = gemeinsame Grenze)
Definition
Ein Graph heißt k-färbbar, falls eine Färbung des Graphen mit k
Farben existiert, d.h. mit |M | = k.
Eine Färbung eines Graphen mit einer beschränkten Anzahl
Farben nennt man auch eine konfliktfreie Knotenmarkierung.
Anwendungen sind:
Knoten
Staat auf
Partygast
Kursus
Prozess
Variable im Programm
Kante
gemeinsame Grenze
verfeindet
haben gemeinsame Teilnehmer
benötigen gleiche Ressource
gleichzeitig lebendig
Farbe / Marke
Farbe
Zuordnung auf Tisch
Termin
Ausführungszeitpunkt
Registerspeicher
Ja! (Appel & Haken 1977)
Definition
Die chromatische Zahl χ(G) ist die minimale Anzahl von Farben,
mit der eine Färbung des Graphen G möglich ist.
Satz
Für jeden Graphen G gilt χ(G) ≤ 1 + (G).
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-39
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-40
Kantendisjunkte Wege
Gerichteter Graph
Definition
Ein (gerichteter) Graph G = (V, E) ist ein Paar bestehend aus
In einem Computernetzwerk bilden die Computer und
Netzwerk-Komponenten die Knoten und die
Netzwerk-Kabelverbindungen die Kanten.
• V einer endlichen Menge von Knoten (vertices) und
• E ⊂ V × V einer Menge von Kanten (edges, arcs), i.e. Paaren
von Knoten aus V .
3
2
Knoten modellieren Zustände, Situationen, Positionen, . . .
Kanten modellieren gerichtete Übergänge zwischen den Knoten.
6
4
Für eine Kante e = (v, w) ∈ E zwischen den Knoten v ∈ V und
w ∈ V verwendet man folgende Bezeichnungen:
1
• v und w heißen inzident zu e,
• e heißt inzident zu v und w und
5
• v und w heißen adjazent.
• v heißt Startknoten und w Endknoten von e.
Typische Fragen:
3
Wie viele Netzwerkverbindungen können ausfallen, ohne dass die
Verbindung von Computer A zu Computer B unterbrochen wird?
2
Auf wie vielen komplett verschiedenen Wegen können Nachrichten
von Computer A an Computer B übermittelt werden?
6
4
1
5
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-41
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-42
Verallgemeinerungsmöglichkeiten für gerichtete
Graphen
• Schlaufen oder Schlingen
Beachte: Schlaufen oder Schlingen, d.h. eine Kante von einem
Knoten aus zu diesem selbst zurück, sind nach Definition der
gerichteten Graphen ERLAUBT.
Maximale Kantenanzahl gerichteter Graphen
Lemma
Für jeden gerichteten Graphen G = (V, E) gilt:
|E| ≤ |V |2
Die Kantenanzahl für gerichtete Graphen kann den Wert |V |2
erreichen, da jeder Knoten von V als Start- und als Endpunkt
auftreten kann.
3
2
6
4
1
Die Kantenanzahl für Multigraphen ist nicht beschränkt, da zu zwei
Knoten von V beliebig viele Kanten inzident sein können.
5
• Mehrfachkanten
Beachte: Zwischen zwei Knoten können nach Definition
bereits bis zu zwei Kanten existieren, eine hin und eine zurück.
3
Die Kantenanzahl für Hypergraphen ist höchstens (2|V | )2 = 22|V |, da
jede Teilmenge von V als Kante auftreten kann.
2
6
4
1
5
• Hypergraphen
Kanten sind Paare von Mengen von Knoten.
3
2
6
4
1
5
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-43
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-44
Datenstrukturen zur Verarbeitung von Graphen
Teilgraphen gerichteter Graphen
Für einen gerichteten Graphen G = (V, E) sei eine lineare
Sortierung der Knoten gegeben:
Definition
Ein gerichteter Graph G = (V , E ) ist ein Teilgraph eines
gerichteten Graphen G = (V, E), wenn gilt V ⊆ V und E ⊆ E mit
E ⊆ V × V .
V = {v1, . . . , vn }
3
3
2
2
Adjazenzmatrix :
mit ai,j =
6
MG = (ai,j )i,j∈{1,...,n}
6
4
1 (vi , vj ) ∈ E
0 1
4
1
5
5
Definition
Ein Teilgraph G = (V , E ) eines gerichteter Graphen G = (V, E)
mit V = V heißt erzeugender Teilgraph (spanning subgraph).
Adjazenzliste:
LG = ((v1, al1), . . . , (vn, aln))
mit ali sortierte Liste der Endknoten in V von Kanten in E mit
Startknoten vi.
3
3
2
2
6
6
4
Beispiel:
1
G = ({a, b, c, d}, {(a, b), (d, a), (c, b), (c, d)})

0

0
MG = 
0
1
1
0
1
0
0
0
0
0
5
b
5
Definition
Für einen gerichteten Graphen G = (V, E) und V ⊆ V heißt der
gerichtete Graph G = (V , E ) mit E := {(v1, v2) ∈ E | v1, v2 ∈ V }
der von V induzierte Teilgraph von G.

0

0

1
0
4
1
d
3
3
2
LG = ( a,
b,
c,
d,
c LETTMANN 2003/04
(b)
()
(b, d)
(a) )
2
6
6
4
1
a
Modellierung — Graphentheorie
4
1
5
c
VI-45
c LETTMANN 2003/04
5
Modellierung — Graphentheorie
VI-46
Isomorphie von gerichteten Graphen
Knoten- und Kantenmarkierungen
Definition
Für zwei Graphen G1 = (V1, E1) und G2 = (V2, E2) sei eine totale
und bijektive Abbildung f : V1 → V2 gegeben. f heißt
Isomorphismus von V1 auf V2 genau dann, wenn für alle Knoten
v, w ∈ V gilt:
(v, w) ∈ E1
⇐⇒
Definition
Eine Knotenmarkierung eines gerichteten Graphen G = (V, E) ist
eine Abbildung
m:V →M
die jedem Knoten v eine Markierung m(v) ∈ M zuordnet.
(f (v), f (w)) ∈ E2
Definition
Eine Kantenmarkierung eines gerichteten Graphen G = (V, E) ist
eine Abbildung
m:E→M
Offenes Problem der Komplexitätstheorie
Gibt es ein effizientes (d.h. polynomielles) Verfahren, um zu
entscheiden, ob zwei gerichtete Graphen G1 und G2 isomorph
sind?
die jeder Kante e eine Markierung m(e) ∈ M zuordnet.
Durch Verwendung von Kantenmarkierungen lassen sich
gerichtete Multigraphen auf einfache gerichtete Graphen
zurückführen:
Kantenmarkierung = Anzahl paralleler Kanten mit gleicher
Kantenrichtung
Dies Problem tritt meist in (vielleicht?) schärferer Form als
Teilgraph-Isomorphismus-Problem auf:
Gibt es einen Teilgraphen in G1, der isomorph zu G2 ist?
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-47
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-48
Wege
Knotengrade in gerichteten Graphen
Definition
Für einen gerichteten Graphen G = (V, E) und einen Knoten v ∈ V
heißt
(v) := |{v ∈ V | (v, v ) ∈ E}|
Definition
Für einen gerichteten Graphen G = (V, E), n ∈ N und Knoten
v0, . . . , vn ∈ V mit (vi, vi+1) ∈ E oder (vi+1, vi) ∈ E für 0 ≤ i < n ist
(v0, . . . , vn) ein Kantenzug von v0 nach vn in G.
der Eingangsgrad von v in G,
Definition
Für einen gerichteten Graphen G = (V, E), n ∈ N und Knoten
v0, . . . , vn ∈ V mit (vi, vi+1) ∈ E für 0 ≤ i < n ist
(v0, . . . , vn) ein Weg von v0 nach vn in G. vn ist dann von v0 aus
erreichbar.
(v) := |{v ∈ V | (v , v) ∈ E}|
der Ausgangsgrad von v in G und
(v) := (v) + (v)
der Grad von v in G.
Knoten mit Eingangsgrad 0 heißen auch Quellen und Knoten mit
Ausgangsgrad 0 heißen auch Senken.
Der Knotengrad von v in G ist die Anzahl der mit v inzidenten
Kanten, außer eine Schleife führt von v zu v.
Die Kantenrichtung aller Kanten auf dem Weg führt also vom
Startknoten v0 des Weges zu seinem Endknoten vn . Ein Weg ist
also eine nicht-leere Folge von Knoten, die durch Kanten
passender Richtung miteinander verbunden sind. In der Literatur
findet man hierfür auch den Begriff des gerichteten Weges.
Definition
Die Länge l eine Weges (v0, . . . , vn) in einem gerichteten
GraphenG ist die Anzahl der Kanten auf dem Weg:
Definition
Für einen Graphen G = (V, E) heißt
(G) := max (v)
v∈V
l((v0, . . . , vn)) = n
der (Knoten-)Grad von G.
Satz
Die Summe der Eingangsgrade aller Knoten ist gleich der Summe
der Ausgangsgrade aller Knoten eines gerichteten Graphen. Die
Anzahl der Punkte mit ungeradem Grad in einem gerichteten
Graphen ist gerade.
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-49
Definition
Ein Zyklus in einem gerichteten Graphen G = (V, E) ist ein Weg
(v, . . . , v) von v nach v der Länge l(v, . . . , v) ≥ 1.
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-50
Wege und Adjazenzmatrix

0

0
MG = 
0
1
1
0
1
0
0
0
0
0
Beispiele für Wege

0

0

1
0
Zyklus in einem Graphen:
3
2
6
Beispiel: G = ({a, b, c, d}, {(a, b), (d, a), (c, b), (c, d)})

0
0

MG = 
0
1

0

0
MG2 = MG · MG = 
1
0
1
0
1
0
0
0
0
1
0
0
0
0
0
0
0
0

0
0


1
0
4
1
b
d
5
Gerichteter Eulerweg in einem Graphen:

0

0

0
0
3
1
2
2
a
c
9
3
6
10
4
6
1
8
Sei G = (V, E) ein gerichteter Graph mit |V | = n und
Adjazenzmatrix MG.
5
• Das Matrixelement ai,j von MG gibt die Anzahl der Wege der
Länge 2 von vi nach vj an.
Satz
Für einen gerichteten Graphen G = (V, E) mit Adjazenzmatrix MG
gibt die Matrix MGk die Anzahl der Wege an zwischen Knoten aus V
mit genau der Länge k.
Modellierung — Graphentheorie
5
7
• Das Matrixelement ai,j von MG gibt die Anzahl der Wege der
Länge 1 von vi nach vj an.
c LETTMANN 2003/04
4
VI-51
Nach der hier vorgestellten Definition für Wege dürfen auch Kanten
mehrfach in Wegen benutzt werden. In der Literatur findet man für
diese allgemeine Variante auch den Begriff Kantenzug (walk). Bei
Kantenzügen und Wegen (trail) ist dabei oft auch die
Kantenrichtung irrelevant, man unterscheidet z.B. Wege und
gerichtete Wege. Außerdem dürfen Wege meist keine Kante
mehrfach nutzen und einfache Wege oder Pfade (path) keinen
Knoten mehrfach nutzen.
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-52
Zusammenhang
Aussagen über Wege
Lemma
Die Länge jedes Weges in einem gerichteten Graphen G = (V, E)
ist beschränkt durch |E|.
Lemma
Jeder Weg w in einem gerichteten Graphen G = (V, E) mit Länge
l(w) ≥ |V | enthält einen Zyklus.
Bemerkung
Es gibt zyklenfreie gerichtete Graphen mit n Knoten und mehr als
n − 1 Kanten.
Definition
Zwei Knoten v, w ∈ V eines gerichteten Graphen G = (V, E)
heißen zusammenhängend genau dann, wenn es einen
Kantenzug (v, . . . , w) in G gibt.
Definition
Ein gerichteter Graph G = (V, E) heißt zusammenhängend, wenn
für alle v, w ∈ V gilt, v und w sind zusammenhängend.
Definition
Eine Zusammenhangskomponente eines gerichteten Graphen
G = (V, E) ist der von einer maximalen Knotenmenge V ⊆ V
induzierte Teilgraph von G, so dass G zusammenhängend ist, d.h.
der durch Hinzufügen eines weiteren Knotens v ∈ V \ V von
V ∪ {v } induzierte Teilgraph von G ist nicht zusammenhängend.
Satz
Jeder zusammenhängende gerichtete Graph mit n Knoten enthält
mindestens n − 1 Kanten.
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-53
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-54
Starker Zusammenhang
Beispiele zum Zusammenhang
Definition
Ein gerichteter Graph G = (V, E) heißt stark zusammenhängend,
wenn für alle v, w ∈ V gilt, dass ein Weg von v nach w in G
existiert.
Definition
Eine starke Zusammenhangskomponente eines gerichteten
Graphen G = (V, E) ist der von einer maximalen Knotenmenge
V ⊆ V induzierte Teilgraph G von G, so dass G stark
zusammenhängend ist, d.h. der durch Hinzufügen eines weiteren
Knotens v ∈ V \ V von V ∪ {v } induzierte Teilgraph von G ist
nicht mehr stark zusammenhängend.
Beispiel 1: Einbahnstraßenregelung zu Libori
Aufgrund des hohen Verkehrsaufkommens bei Volksfesten
überlegt der Stadtrat, ob nicht sämtliche Straßen für diese Zeit zu
Einbahnstraßen gemacht werden.
Können Sie den Stadtrat davon überzeugen, dass alle Stellen im
Stadtgebiet erreichbar bleiben?
Eine starke Zusammenhangskomponente S in G kann man
folgendermaßen ermitteln:
1. Setzte S := {v} für einen Knoten v ∈ V .
Beispiel 1: Baustelle auf dem Rathausvorplatz
2. Solange ein Knoten w ∈ V \ S existiert mit
(a) Es gibt einen Weg von einem Knoten v ∈ S nach w und
(b) es gibt einen Weg von w zu einem Knoten v ∈ S.
füge w zu S hinzu.
3. Kann kein Knoten aus V \ S mehr zu S hinzugefügt werden, so
ist S eine starke Zusammenhangskomponente.
Der schlechte Zustand des Pflasters vor dem Rathaus macht eine
Erneuerung nötig. Können Fußgänger noch alle Bereiche der
Fußgängerzone erreichen, wenn der Rathausvorplatz komplett
gesperrt wird, ohne dass sie den Fußgängerbereich verlassen
müssen?
Ein gerichteter Graph G = (V, E) kann in starke
Zusammenhangskomponenten S1 , ..., Sk zerlegt werden, so dass
für die S1 , ..., Sk definierenden Knotenmengen V1, ..., Vk gilt
V = V1 ... Vk
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-55
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-56
Orientierung
Vollständige Orientierung
Definition
Ein gerichteter Graphen Gg = (Vg , Eg ) heißt Orientierung eines
ungerichteten Graphen Gu = (Vu, Eu ), falls gilt
Definition
Ein gerichteter Graph Gg = (Vg , Eg ) heißt vollständige Orientierung
eines ungerichteten Graphen Gu = (Vu, Eu ), falls gilt
1. Vg = Vu und
1. Vg = Vu und
2. für jede Kante {v, w} ∈ Eu gilt (v, w) ∈ Eg oder (w, v) ∈ Eg und
2. für jede Kante {v, w} ∈ Eu gilt (v, w) ∈ Eg und (w, v) ∈ Eg .
3. |Eu | = |Eg |.
Die vollständige Orientierung eines ungerichteten Graphen
G = (V, E) erhält man also, in dem man jede Kante durch die
beiden entgegengesetzt gerichteten Kanten ersetzt.
Eine Orientierung eines ungerichteten Graphen G = (V, E) kann
man als Abbildung auffassen:
o : E → V × V mit f ({v, w}) ∈ {(v, w), (w, v)} für {v, w} ∈ E
Der gerichtete Graph ergibt sich dann als Go = (V, {f (e) | e ∈ E}).
co : E → V × V mit f ({v, w}) = {(v, w), (w, v)} für {v, w} ∈ E
und damit Gco = (V, e∈E f (e)).
Definition
Für einen gerichteten Graphen G = (V, E) ohne Schleifen heißt der
ungerichtete Graph |G| = (V, {{v, w}|(v, w) ∈ E}) der zughörige
(ungerichtete) Graph (underlying graph) zu G.
Definition
Ein ungerichteter Graph G = (V, E) heißt orientierbar, falls eine
Orientierung von G existiert, die stark zusammenhängend ist.
Satz
Ein zusammenhängender ungerichteter Graph G = (V, E) ist
orientierbar genau dann, wenn G keine Brückenkante enthält.
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-57
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-58
Gerichtete Bäume
Beispiel für Bäume
Definition
Ein gerichteter Baum mit Wurzel w ist ein gerichteter Graph
G = (V, E) mit w ∈ V , so dass |G| ein Baum ist und so dass von w
zu jedem Knoten v ∈ V genau ein Weg existiert.
Ein gerichteter Baum ist also ebenso Zusammenhängend und
zyklenfrei und besitzt genau |V | − 1 Kanten, analog zum
ungerichteten Baum.
Vollständige binäre Bäume
Induktive Definition
• Für jeden Knoten v ist der Graph G = ({v}, { }) ein
vollständiger binärer gerichteter Baum mit Wurzel v der Tiefe 0.
• Seien G1 = (V1, E1), G2 = (V2, E2) vollständige binäre Bäume
der Tiefe n mit Wurzeln v1, v2 und disjunkten Knotenmengen
V1, V2 und sei v ∈ V1 ∪ V2. Dann ist
Für einen ungerichteten Baum G = (V, E) gibt es also für jeden
Knoten w ∈ V genau eine Orientierung von G, die ein gerichteter
Baum mit Wurzel w ist.
G = ({v} ∪ V1 ∪ V2, {v, v1), (v, v2)} ∪ E1 ∪ E2)
ein vollständiger binärer gerichteter Baum mit Wurzel v der
Tiefe n + 1.
• Nur so gebildete Graphen sind vollständige binäre gerichtete
Bäume.
Für einen gerichteten Baum gilt:
• Es existiert genau ein Knoten mit Eingangsgrad 0, nämlich die
Wurzel.
• Jeder Knoten außer der Wurzel hat den Eingangsgrad 1.
• Blätter sind genau die Knoten mit Ausgangsgrad 0.
Definition
Für einen gerichteten Baum G = (V, E) mit Wurzel w ∈ V und
einen Knoten v ∈ V heißt die Länge eines kürzesten Weges von w
nach v die Tiefe von v in G. Die Tiefe des Baumes G mit Wurzel w
ist die maximale Tiefe eines Knotens in G.
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-59
Satz
Ein vollständiger binärer gerichteter Baum G = (V, E) mit Wurzel
w ∈ V und Tiefe n, n ∈ N hat genau 2n Blätter und genau
n−1 i
n
i=0 2 = 2 − 1 innere Knoten.
Satz
Ein binärer gerichteter Baum G = (V, E) mit Wurzel w ∈ V und
Tiefe n, n ∈ N hat b Blätter mit b ≤ 2n und genau b − 1 innere
Knoten.
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-60
Modellierung mit gerichteten Graphen
Modellierung mit gerichteten Graphen
Programmaufrufgraph:
Abhängigkeitsgraph:
Aufrufbeziehung zwischen Funktionen in einem Programm
Abhängigkeiten zwischen Aktionen oder Ereignissen
f Funktion f im Programm
f → g Funktion f enthält Aufruf der Funktion g
• rekursive Funktion
Dauer der Aktion
e1 → e2 Aktion e1 ist Vorbedingung für e2
Der Graph muss zyklenfrei sein!
Schleife im Aufrufgraph
Scheduling:
sequentielle bzw. parallele Anordnung von Aktion/Operationen,
z.B. von Transaktionen auf einer Datenbank
• wechselweise rekursive Aufrufe
Zyklus der Länge 2
• nicht rekursive Funktion
Gesucht ist die kürzestmögliche Gesamtdauer für die Ausführung
aller Aktionen unter Berücksichtigung der Abhängigkeiten.
Knoten nicht in Zyklus
• nicht erreichbare Funktionen
Kritischer Pfad:
Weg von einem Anfangsknoten (Wurzel, Knoten mit Eingangsgrad
0) zu einem Endknoten (Blatt, Knoten mit Ausgangsgrad 0) mit
maximaler Dauer (Summe der Knotenmarkierungen)
Eingangsgrad 0
g
f
e Aktion, Ereignis
h1
Innerhalb eines Plans von kürzestmöglicher Gesamtdauer gibt es
für jede Operation einen frühesten Zeitpunkt für den Beginn der
Ausführung und einen spätesten Zeitpunkt hierfür, ohne die
Gesamtdauer zu erhöhen.
h2
Ist der Pufferzeitraum 0, so spricht man von einer kritischen
Operation. Ein kritischer Pfad enthält nur kritische Operationen.
k
D
4
B
1
A
6
C 5
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-61
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-62
Modellierung mit gerichteten Graphen
Modellierung mit gerichteten Graphen
Zustandsgraph:
Fluss-Netzwerke:
Übergänge zwischen Situationen oder Zuständen
Transport von Punkt zu Punkt über Wege mit beschränkter
Kapazität
s Situation, Zustand
s1 → s2 Aktion überführt Zustand s1 in Zustand s2
Dauer der Operation, Art der Aktion
Beispiel:
Rätsel des Alkuin (Mann, Wolf, Ziege, Kohlkopf), allgemein
Suchräume, Spielbäume, Syntaxdiagramm, Entscheidungsbäume
Nimm-Spiel:
Gegeben ist ein Stapel mit s Streichhölzern, von dem 2 Spieler
abwechselnd mindestens 1 und höchstens n Streichhölzer
wegnehmen. Wer das letzte Streichholz nimmt, hat gewonnen.
s Stationen
s1 → s2 Weg führt von Station s1 zu Station s2
Beispiel:
Netzwerk von Kanälen, über die in jeweils eine Richtung Daten
übertragen werden können. Jeder Kanal hat eine feste Bandbreite.
Wie viele Daten können maximal parallel von einem Knoten s zu
einem Knoten t übertragen werden?
A:3
A:2
7
B:1
6
A:1
A:3
5
4
B:3
B:1
B:2
4
A:1
3
A:1
4
3
B:3
B:1
3
2
A:3
1
3
3
B:3
B:1
4
A:1
A:2
B:2
2
B:3
5
A:2
B:1
6
B:2
A:3
2
3
2
A:2
1
4
B:1
B:2
2
A:1
3
B:3
4
A:3
A:1
2
3
B:1
3
A:3
A:1
A:2
2
4
38
B:3
B:2
3
2
e
8
A:3
7
7
A:2
1
3
2
s
1
1
B:3
b
c
26
1
t
B:2
1
3
2
1
24
2
A:3
2
1
2
8
27
A:2
3
d
10
5
B:2
5
A:2
13
a
8
A:1
Kapazität der Verbindung
1
f
Gewinnstrategie:
Wenn möglich, entferne k der s Streichhölzer mit 1 ≤ k ≤ n, so
dass (s − k) mod (n + 1) = 0 gilt. Ansonsten nimm eine beliebige
Anzahl und warte auf einen Fehler des Gegenspielers.
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-63
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-64
Flüsse und Schnitte (1)
Flüsse und Schnitte (2)
Definition
Sei G = (V, E) ein gerichteter Graph und c : E → R+
0 eine
Kantenmarkierung, die Kapazität der Kanten. t ∈ V sei von s ∈ V
aus erreichbar. Es gelte (s) = 0 und (t) = 0. Dann
heißt N = (G, c, s, t) ein Fluss-Netzwerk mit Quelle s und Senke t.
Ein Fluss auf N ist eine Abbildung f : E → R+
0 , die die folgenden
Bedingungen erfüllt:
1. 0 ≤ f (e) ≤ c(e) für alle e ∈ E.
2.
f ((v1, v)) =
f ((v, v2)) für alle v ∈ V mit s = v = t.
(v1 ,v)∈E
Ein Schnitt (S, T ) von N ist eine disjunkte Aufteilung der Knoten,
also S T = V , so dass s ∈ S und t ∈ T gilt.
c((v1, v2))
c(S, T ) :=
v1 ∈S,v2 ∈T,(v1 ,v2 )∈E
ist die Kapazität des Schnittes (S, T ). Ein Schnitt heißt minimal,
wenn seine Kapazität minimal unter allen Schnitten ist.
Satz (Ford & Fulkerson 1956)
In einem Fluss-Netzwerk N ist der maximale Wert eines Flusses
auf N gleich der minimalen Kapazität eines Schnittes in N .
(v,v2 )∈E
Es gilt dann (s,v)∈E f ((s, v)) = (v,t)∈E f ((v, t)), also liegt ein Fluss
von s nach t vor mit dem Wert
w(f ) =
f ((s, v))
10|13
a
8|8
e
6|8
s
1|1
b
11|26
s
c
1|1
b
1|1
e
7|7
11|26
c
1|1
7|7
7|7
t
14|24
2|2
1|1
2|2
1|1
2|2
8|8
6|8
d
10|10
28|38
d
10|10
28|38
(s,v)∈E
Ein Fluss heißt maximal, wenn sein Wert maximal unter allen
Flüssen ist.
10|13
a
16|27
f
7|7
t
14|24
2|2
16|27
f
(Fluss|Kapazität)
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-65
c LETTMANN 2003/04
Modellierung — Graphentheorie
VI-66
Herunterladen