V - Michael Gamer

Werbung
Formale Grundlagen der Informatik
Michael Gamer
Michael Gamer / 2015
Literatur
‣ Algorithmische Graphentheorie
•
V. Turau
•
Oldenbourg Verlag
•
2. Auflage2004
‣ Graphentheorie
•
R. Diestel
•
Springer Verlag 2000
‣ Algorithmen und Datenstrukturen
•
T. Ottmann, P Widmeyer
•
Spektrum Verlag, 4. Auflage, 2002
Michael Gamer
2
Literatur
‣ Graphentheoretische Konzepte und Algorithmen
• S.O.
Krumke und H. Noltemeier
• Teubner
• 1.
Michael Gamer
Verlag
Auflage 2005
3
Definitionen und Begriffe
‣ Ein Graph besteht aus einer Menge V von Ecken
(Vertices) und Kanten E (Edges). Wird also durch ein
Paar (V,E) definiert.
‣ Beispielsweise wird durch folgende Definition ein
Graph beschrieben:
2
•V
:= {1,2,3,4}
•E
:= {(1,2),(1,3),(2,3),(3,4)}
3
4
1
‣ Graphen werden üblicherweise graphisch (sic!)
dargestellt. Für diesen Graphen erhält man die
nebenstehende Darstellung:
Michael Gamer
4
Einfache Graphen
Ungerichteter Graph:
Keine Unterscheidung der Kanten
(i,j) und (j,i)
gerichteter Graph:
Unterscheidung zwischen (i,j)
und (j,i)
2
3
4
3
4
1
2
1
Für gerichtete Graphen ist die Kante (i,i) zulässig.
Solche Kanten heißen Schlingen.
Michael Gamer
5
Vollständige Graphen und Teilgraphen
‣ Ein Graph heißt vollständig, wenn alle Knoten paarweise
verbunden sind
‣ Ein Teilgraph oder auch Subgraph G1 = (V1,E1) eines
Graphen G = (V,E) der aus einer Teilmenge der Knoten des
Graphen G und der die Kanten
{{u,v} ∈ E | u,v ∈ V1}
enthält.
‣ G1 heißt induzierter Teilgraph von G falls dieser alle Kanten
enthält die im Ausgangsgraphen zu diesen Knoten
existieren.
‣ Eine k-Clique ist ein vollständiger Subgraph eines Graphen
G der k Knoten enthält
Michael Gamer
6
Beispiele
K1
K2
K3
K4
Michael Gamer
P3
C3
C4
C5
P4
P5
7
Grundlegende Begriffe
•Definition gerichteter Graph
•
Ein Paar G = (V,E) mit
‣
V eine nichtleere Menge von Knoten
‣
E ⊆V x V eine Menge von Kanten
heißt gerichteter Graph. Ein Element aus E wird auch
als Pfeil bezeichnet
•
Für G definieren wir Abbildungen
Michael Gamer
‣
α: E→V mit α(u,v) := u (Anfangsecke)
‣
ω: E→V, mit ω(u,v) := v (Endecke)
8
Schlingen und Co
‣ Sei G = (V,E) ein Graph
• Ein
Element e∈E mit α(e) = ω(e) heißt Schlinge in G
• Ein
Graph in dem für alle e∈E gilt: α(e) ≠ ω(e) heißt
schlingenfrei
• Zwei
๏
α(e) = α(f) und ω(e) = ω(f) gilt
• Zwei
๏
Elemente e,f ∈ E heißen parallel, falls
Elemente e,f ∈ E heißen antiparallel, falls
α(e) = ω(f) und ω(e) = α(f) gilt
• Ein
Graph heißt einfach, wenn er schlingenfrei ist
und keine Parallelen enthält
Michael Gamer
9
Beispiele für Graphen
Schlinge
Doppelkante
Michael Gamer
10
Inzidenz, Adjazenz, Grade (1/2)
‣ Sei G = (V,E) ein Graph
• v∈V
heißt inzident zu (x,y)∈E, falls v=x oder v=y ist
• Zwei
Ecken u,v∈V heißen adjazent, falls (u,v)∈E oder
(v,u)∈E gilt
• Für
Michael Gamer
jedes v∈V bezeichnen
๏
δ+(v):= {e∈E|α(e)=v}, das von v ausgehende
Pfeilbüschel
๏
δ-(v):= {e∈E|ω(e)=v}, das in v mündende Pfeilbüschel}
๏
N+(v):={ω(e)|e∈ δ+(v)}, die Nachfolgermenge von v}
๏
N-(v):={α(e)|e∈ δ-(v)}, die Vorgängermenge von v}
11
Inzidenz, Adjazenz, Grade (2/2)
‣ Für jedes v∈V bezeichnen
• g+(v):=
|δ+(v)|, den Außengrad von v
• g-(v):=
|δ-(v)|, den Innengrad von v
• g(v):=
g+(v) + g-(v) den Grad von v
‣ Mit Δ(G) := max{g(v)|v∈V} wird der Maximalgrad von
G bezeichnet.
Michael Gamer
12
Beispiel
g+(v)=5
g(v)=6
g+(v)=1
g-(v)=1
Δ(G)=6
g-(v)=2
g+(v)=1
Michael Gamer
g-(v)=3
13
Bipartite Graphen
K3,4
Anwendungenbipar;terGraphensindinersterLinieZuordnungsprobleme
ArbeiteraufMaschinen
TransportmiHelaufTransportwege,etc.
Michael Gamer
14
Isomorphien bei Graphen
•
Es ist nicht immer einfach zu erkennen, ob zwei
Graphen identisch sind:
ist isomorph zu
K4
Zwei Graphen G = (V,E) und G´ = (V`, E`) heißen isomorph, genau dann,
wenn es eine bijektive Abbildung f : V → V` gibt, so daß für alle u,v ∈V
gilt:
(u,v)∈E (f(u), f(v)) ∈ E`
Michael Gamer
15
Isomorphie von Graphen
‣ Die Isomorphie von Graphen ist oftmals nicht einfach
zu erkennen.
‣ Beispiel: Petersen-Graph
Michael Gamer
16
Zum Petersen-Graphen isomorphe Graphen:
Michael Gamer
17
Beispiel
§ Für jede Zahl zwischen 1
und 6 ist in diesem
Graphen eine Kante
eingezeichnet, wenn die
beiden Zahlen
teilerfremd sind
§ Die vier Zahlen 1, 2, 3
und 5 bilden eine 4Clique
§ Die Zahlen 4, 2 und 6
bilden eine 3-Anticlique
Michael Gamer
18
Anwendungen für Cliquen
Gegeben ist folgende Straßenkreuzung
S5
S1
S8
S2
S7
S6
S3
S4
Michael Gamer
aus Krumke/Noltemeier
19
Modellierung als Graphenproblem
‣ Modellierung der Verkehrsströme als Graph G =
(V,E)
• Knoten:
• Kanten
V = {S1, ... S8}
werden durch folgende Vorschrift
erzeugt
E={(Si,Sj)|SiundSjkönnensimultanund
kollisionsfreiüberdieKreuzung
gehen}
Michael Gamer
20
Graph für das Kreuzungsproblem
S2
S1
S3
S8
S4
S7
S5
S6
Michael Gamer
21
Ergebnis
‣ Jeder vollständige Teilgraph von G (Clique!) kann
konfliktfrei die Kreuzung überqueren
‣ Ziel: Bündelung zu möglichst großen Cliquen
‣ z.B. ist folgende „Bündelung“ möglich
•
C1 = {S1, S2, S6}
C2 = {S2, S5, S6}
•
C3 = {S3, S5, S6}
C4 = {S4, S5, S6}
•
C5 = {S1, S7}
C6 = {S7, S8}
‣ Rahmenbedingung: die Folge Ci1, Ci2,... wird
periodisch wiederholt (Ampelschaltung) und
überdeckt die relevanten Verkehrsströme
Michael Gamer
22
Begriffe im Zusammenhang mit Cliquen
‣ Die Cliquenzahl eines Graphen G = (V,E) ist
• ω(G)
:= max {|C| : C ist Clique in G}
‣ Die Cliquenzerlegungszahl ist definiert als
• χ(G)
:= min {k: C1⊍C2⊍...⊍Ck ist eine
Cliquenzerlegung
von G}
‣ Für jeden Graphen mit n Ecken gilt 1 ≤ χ(G) ≤n
• Jede
natürliche Zahl kann als
Cliquenzerlegungszahl auftreten, Beispiel: Gn =
({1,2,...,n},∅)
Michael Gamer
23
Wege und Spaziergänge
‣ Ein Weg in einem Graphen G = (V,E) ist ein durch
eine Folge von paarweise verschiedenen Knoten und
Kanten verbundener Streckenzug, also eine Folge
•
u1, u2,… un ∈ V mit
•
(u1,u2) ∈ E, (u2,u3) ∈ E, … (un-1,un) ∈ E
‣ Falls u1 = un gilt, so spricht man von einem
geschlossenen Weg, Kreis oder auch Zykel.
‣ Ein Spaziergang von v nach w ist eine alternierende
Folge von Knoten und Kanten
‣ (v=v0 , e1, v1 , e2, v3 , e3, …, vn = w)
Michael Gamer
24
Wege und Spaziergänge 1
‣ Ist M eine Menge so heißt eine Abbildung
‣
d: MxM ➝ R Metrik, genau dann wenn
folgende Bedingungen erfüllt sind:
• d(x,y)
≧ 0 , für alle x, y ∈ M
• d(x,y)
= d(y,x)
• d(x,y)
=0
• d(x,y)
≦d(x,z)+ d(z,y), für alle x,y,z ∈ M
Michael Gamer
x=y
25
Wege und Spaziergänge 2
•
Ein Weg, der jeden Knoten genau einmal enthält wird
Hamilton-Pfad genannt.
•
Ein geschlossener Weg der jeden Knoten des Graphen
(mit Ausnahme des Startknotens) genau einmal enthält
heißt Hamilton-Kreis.
•
Gibt es in einem Graphen zwischen je zwei Knoten
einen Weg, so heißt der Graph zusammenhängend.
•
Ist G ein zusammenhängender Graph, so heißt die
Länge des kürzesten Weges von v nach w Abstand von
v und w, geschrieben: dist(v,w). Die Abstandsfunktion
dist erfüllt als Abbildung die Eigenschaften einer Metrik.
Michael Gamer
26
Hamilton und Euler
‣ Ein geschlossener Weg der jeden Knoten des
Graphen (mit Ausnahme des Startknotens) genau
einmal enthält heißt Hamilton-Kreis
‣ Ein geschlossener Weg der jede Kante in einem
Graph genau einmal durchläuft heißt Euler-Kreis
‣ Das Problem einen Hamilton-Kreis in einem Graphen
zu finden ist NP-vollständig!
Michael Gamer
27
Ein Graph ohne Hamilton-Kreis
DerPetersen-GraphenthältkeinenHamilton-Kreis!
Michael Gamer
28
Codierung von Graphen: Adjazenzmatrizen
Ist V = { v1, v2, … vn} die Knotenmenge eines
Graphen G = (V,E), so heißt die Matrix: A = (ai,j) mit
Adjazenzmatrix von G
Michael Gamer
29
Codierung von Graphen: Inzidenzmatrizen
‣ Ist V = { v1, v2, … vn} die Knotenmenge eines
Graphen G = (V,E), so heißt die Matrix: B = (bi,j) mit
Michael Gamer
30
Die Ordnung eines Knotens
Michael Gamer
5
5
3
2
4
3
31
Effiziente Algorithmen
‣ Ein Algorithmus für ein Problem ist eine Abfolge
wohldefinierter Regeln (Befehlen), die nach einer endlichen
Anzahl von Schritten zu einer gegebenen Eingabe eine
definierte Ausgabe erzeugt. Folgendes soll dabei gelten:
•
Ein Algorithmus läßt sich mit einem Text endlicher Länge
beschreiben
•
Die Abfolge der Schritte ist in jeder Berechnung
eindeutig
•
Jeder Elementarschritt läßt sich mechanisch und effizient
ausführen
•
Der Algorithmus stoppt bei jeder Eingabe nach endlich
vielen Schritten.
Michael Gamer
32
Zusammenhangskomponenten
‣ Ein Graph (V,E) heißt zusammenhängend von einem
Knoten v ∈V aus genau dann, wenn es für jeden
Knoten w∈V einen Weg von v nach W gibt, d.h es
gilt:
∀ ∀
∃
v∈V w∈V v1 ,v2 ,…vn ∈V
(v,v1 ),(v1 ,v2 ),…(vn ,w) ∈E
Ein induzierter Teilgraph U eines Graphen heißt
Zusammenhangskomponente von G, falls U
zusammenhängend ist.
Michael Gamer
33
Breitensuche (BFS) (1/2)
‣ Gegeben ist ein Graph G = (V,E) und ein Startknoten s. Zu
überprüfen ist, ob von s aus alle Knoten des Graphen G
erreichbar sind (Bestimmung der
Zusammenhangskomponente).
‣ Vorgehensweise zur Lösung des Problems:
• Ausgehend
• Danach
von s betrachten wir alle Nachbarn von s
die Nachbarn der Nachbarn
• Usw.
‣ Wurden alle Knoten durchlaufen so terminiert der Algorithmus
und die Zusammenhangskomponente ist bestimmt.
‣ Problem: Knoten dürfen nicht doppelt besucht werden
Michael Gamer
34
Breitensuche (2/2)
‣ Algorithmus Breitensuche:
‣ Aufgabe: Ausgehend vom Startknoten s ist die
Zusammenhangskomponente von s zu bestimmen
‣ Lösung:
• Markiere
den Startknoten s (Ausgabe s)
• Bestimme
alle Nachbarn von s und markiere diese und
speichere sie (Ausgabe Nachbarn) in einer Warteschlange
Q
• Solange
๏
Michael Gamer
Q nicht leer ist:
Füge unmarkierte Nachbarn aus Q an das Ende der
Warteschlange an und markiere diese (Ausgabe
Nachbarn)
35
Beispiel Breitensuche
Startknoten: 1
1
1
2
3
4
Suchbaum
2
3
4
5
5
6
6
8
9
7
7
Michael Gamer
8
9
36
Tiefensuche (DFS)
‣ Statt, wie in der Breitensuche, erst alle Nachbarn
der Nachbarn zu durchsuchen, behandelt die
Tiefensuche für jeden gefundenen Nachbarknoten
gleich dessen Nachbarn.
Michael Gamer
37
Tiefensuche Beispiel
Startknoten: 1
Suchbaum
1
1
2
3
2
3
4
4
5
5
6
6
7
8
9
9
7
8
Michael Gamer
38
Valenzsequenzen
‣ Ist v1, v2, … vn irgendeine Anordnung der Knoten
eine Graphen G = (V,E), so heißt
‣ (deg(v1), deg(v2), … deg(vn)) Gradsequenz, oder
auch Valenzsequenz, von G.
‣ Frage: kann man bei einem beliebigen Zahlentupel
(a1, a2, … an ) entscheiden, ob dies zu einem
Graphen gehört oder nicht?
‣ Folgen wie z.B. (3,3,3,2,2,2) kann man sofort
ausscheiden, denn es gilt die folgende Beziehung:
Michael Gamer
39
Das Handshake-Lemma
‣ In jedem Graphen G = (V,E) ist die Summe der
Knotengrade gerade, es gilt:
(Anregung: Warum heißt diese Aussage „HandshakeLemma“?)
Die Folge (3,3,3,2,2,2) scheidet damit als Valenzsequenz
eines Graphen aus.
Michael Gamer
40
Ein Algorithmus für Valenzsequenzen
Folgender Satz erlaubt es zu entscheiden, ob ein
Zahlentupel die Valenzsequenz eines Graphen ist,
oder nicht:
Ist D = (d1, d2, …. dn) eine Folge natürlicher Zahlen,
n>1 und d1>= d2>= …. >=dn, dann ist D genau
dann die Valenzsequenz eines einfachen Graphen,
wenn d1+1≤n ist und die Folge D`= (d´2, d´3, …. d
´n) definiert durch
Die Valenzsequenz eines einfachen Graphen ist.
Michael Gamer
41
Beispiel: Valenzsequenz
Wir betrachten die Sequenz:
D = (5,5,4,4,3,3,2,2,1,1)
Das Handshake-Lemma liefert die Aussage, daß es sich
grundsätzlich um die Valenzsequenz eines Graphen
handeln kann.
Der zuvor definierte Algorithmus liefert:
D` = (4,3,3,2,2,2,2,1,1)
Danach erhält man direkt (da D´ bereits sortiert ist)
D`` = (2,2,1,1,2,2,1,1)
D´´ muß nun erst sortiert werden, dazu werden die
Knotennummern mit aufgeführt
Michael Gamer
42
Beispiel Valenzsequenz 2/2
Da die Knoten 1 und 2 bereits entfernt wurden haben
wir nun:
3 4 5 6 7 8 9 10
2211221 1
Sortieren liefert
3 4 7 8 5 6 9 10
2222111 1
Michael Gamer
43
Beispiel Valenzsequenz
Abtrennung des ersten Knotens liefert:
4 7 8 5 6 9 10
2 2 2 1 1 1 1
Und daraus
Sortieren
Michael Gamer
4 7 8 5 6 9 10
1 1 2 1 1 1 1
8 4 7 5 6 9 10
2 1 1 1 1 1 1
44
Beispiel Valenzsequenz
Erneutes Abspalten des ersten Knotens liefert:
4 7 5 6 9 10
1 1 1 1 1 1
Und dann
4 7 5 6 9 10
0 0 1 1 1 1
Damit kann der Graph rückwärts konstruiert werden.
Michael Gamer
45
Valenzsequenzen: Konstruktion des Graphen
7
4 7 5 6 9 10
0 0 1 1 1 1
4
5
6
9
8
7
8 4 7 5 6 9 10
2 1 1 1 1 1 1
Michael Gamer
10
5
6
4
9
10
46
Valenzsequenzen: Konstruktion des Graphen
7
3 4 7 8 5 6 9 10
2222111 1
5
8
6
4
3
10
9
Achtung:
ursprüngliche
Sortierung
beachten!
8
7
5
2 3 4 5 6 7 8 9 10
4 3 3 2 2 2211 1
3
4
2
Michael Gamer
9
10
6
47
Valenzsequenzen: Konstruktion des Graphen
7
3
1 2 3 4 5 6 7 8 9 10
8
4
9
10
554433221 1
2
5
1
6
Michael Gamer
48
Das war anstrengend!
Gehen wir spazieren… z.B. durch Königsberg
Michael Gamer
49
Königsberg – über sieben Brücken mußt Du gehen!
Michael Gamer
50
Die Lösung
2
Ziel
3
2
1
2
Start
Es darf maximal zwei Punkte geben in denen eine
ungerade Anzahl von Strecken endet!
Michael Gamer
51
Nochmals Königsberg
C
A
F
B
Michael Gamer
52
Eulertouren
‣ Ein Spaziergang v0e1v1e2...emv0 von v0 nach v0 heißt
Eulertour, wenn er jede Kante genau einmal benutzt.
‣ Der Graph G heißt eulersch, wenn er eine Eulertour
ausgehend von einem (und damit von jedem)
Knoten v0 ∈ V hat.
Michael Gamer
53
Charakterisierung Eulerscher Graphen
‣ Sei G=(V,E) ein Graph, dann sind folgende
Aussagen (paarweise) äquivalent
•G
ist eulersch
•G
ist zusammenhängend und alle Knoten haben
einen geraden Knotengrad
•G
ist zusammenhängend und E die disjunkte
Vereinigung von Kreisen
Michael Gamer
54
Gebiete
Die von einem zusammenhängenden, planaren
Graphen eingeschlossenen Polyeder heißen Gebiete
2
7
G2
1
G1
4
3
G4
G3
6
5
Michael Gamer
55
Die Eulersche Polyederformel
Sei G=(V,E) ein zusammenhängender, planarer Graph
mit
‣ |V|=n
‣ |E|=m
‣ und G schließe g Gebiete ein
dann gilt:
n-m+g = 2
Michael Gamer
56
Beispiel Eulersche Polyederformel
2
7
G2
1
G1
4
G5
Michael Gamer
3
G4
5
G3
|V| = 7
|E| = 10
g=5
6
|V| - |E| + g = 2
57
Bäume
•
Ein zykelfreier Graph heißt Baum:
Dies
ist
sehr
Michael Gamer
ein
einfacher
Baum
58
Beispiele von Bäumen
Michael Gamer
59
Wurzelbäume
‣ Ein Wurzelbaum (auch orientierter Baum) ist ein
• zykelfreier
• gerichteter
• zusammenhängender
‣ Graph mit einem ausgezeichneten Knoten, der
Wurzel.
‣ Jeder Knoten des Graphen ist von der Wurzel aus
auf genau einem Weg erreichbar.
Michael Gamer
60
Nomenklatur für (Wurzel)Bäume
Wurzel
innere Knoten
Blätter
Michael Gamer
61
Binäre Bäume und Codes
‣ Ein Wurzelbaum mit der Eigenschaft, daß jeder
Knoten genau zwei oder keinen Nachfolger hat heißt
binärer Wurzelbaum
‣ Ist B ein Wurzelbaum, so definieren wir den Code
<B> dieses Baumes wie folgt:
• Ist
B ein einzelner Knoten (Blatt) so ist <B> := 01
• Hat
B die Teilbäume B1, B2, … Bk so ist
<B> := 0<B1>< B2> … <Bk>1
Dabei werden die <Bi> lexikographisch (!) geordnet
Michael Gamer
62
Code eines Baumes
0 001011 01 1
001011
01
01
01
Michael Gamer
01
63
Isomorphie von Bäumen (Algorithmus)
‣ Sind zwei Bäume gegeben, so ist auf den ersten Blick oft nicht ersichtlich, ob
diese identisch (isomorph) sind. Folgendes Verfahren stellt die Isomorphie von
Bäumen fest:
•
Die Bäume werden in spezieller Weise mit dem eben dargestellten
Algorithmus codiert:
•
Wir entfernen alle Blätter des Baumes, so lange, bis entweder nur ein Knoten
(Fall 1), oder aber zwei Knoten übrig sind (Fall 2).
•
Fall 1:
๏
•
๏
<B> ist der Code des Baumes
Fall 2:
๏
Wir entfernen die (letzte) Kante und codieren die beiden Teilbäume B1
und B2
๏
Sei o.E. |B1| < |B2|
๏
Dann ist <B> =0<B1><B2>1
Bäume mit gleichen Code sind isomorph
Michael Gamer
64
Herunterladen