Vorlesung 2

Werbung
Algorithmische Graphentheorie
Vorlesung 2: Einführung in die Graphentheorie - Teil 2
Babeş-Bolyai Universität, Department für Informatik, Cluj-Napoca
[email protected]
24. März 2017
1/64
O PERATIONEN MIT G RAPHEN
Entfernen von Knoten und Kanten
Sei G = (V, E, γ) ein Graph. Das Entfernen einer Kante
e ∈ E erzeugt aus G einen neuen Graphen
G − e = (V, E \ {e}, γ).
Analog für eine Kantenmenge F ⊆ E.
G − v der Graph, der aus G durch Entfernen des Knotens v
hervorgeht.
Das Entfernen von v schließt das gleichzeitige Entfernen
aller zu v inzidierenden Kanten ein.
Analog für einen Kantenmenge X ⊆ V
2/64
F USION UND K ONTRAKTION
Fusion
Identifizieren der Knoten v und w in einem Knoten, der zu
allen Kanten inzident ist, die vorher einen dieser Knoten als
Endknoten hatten. Wir bezeichnen den entstehenden Graphen
mit Guv . (Analog GX ).
Kontraktion
...der Kante e, mit γ(e) = {u, v} ist das Entfernen von e mit der
anschließenden Fusion der Endknoten u und v. Wir bezeichnen
den durch Kontraktion von e aus G hervorgehenden Graphen
mit G/e.
3/64
K OMPLEMENTGRAPH
4/64
U NTERGRAPH
5/64
U NTERGRAPH (2)
6/64
U NTERGRAPH (3)
7/64
U NTERGRAPH (4)
Jeder Graph mit mindestens 5 und höchstens 9 Knoten ist
ein Untergraph dieser vollständiger Graphen.
Wieviele gibt es?
8/64
U NTERGRAPH (4)
Jeder Graph mit mindestens 5 und höchstens 9 Knoten ist
ein Untergraph dieser vollständiger Graphen.
Wieviele gibt es?≥ 68 Milliarden...
8/64
A NZAHL DER K ANTEN
Sei G = (V, E, γ) ein endlicher Graph mit | V |= n. Wie groß ist
die maximale Anzahl der möglichen Kanten?
9/64
A NZAHL DER K ANTEN
Sei G = (V, E, γ) ein endlicher Graph mit | V |= n. Wie groß ist
die maximale Anzahl der möglichen Kanten?
Satz
Ein Graph mit n Knoten hat maximal n(n − 1)/2 Kanten
Beweis:
Es gibt höchstens n2 mögliche Kanten,
davon n Schlingen,
Alle Kanten sind doppelt gezählt.
Somit beträgt die maximale Anzahl der Kanten
(n2 − n)/2 = n(n − 1)/2
9/64
C LIQUE
10/64
C LIQUE (2)
11/64
W EGE
12/64
W EGE (2)
13/64
K REISE
14/64
K REISE (2)
15/64
B EMERKUNGEN ZU W EGE UND K REISE
16/64
H ILFSS ÄTZE ZU W EGE UND K REISE
17/64
Z USAMMENHANG
18/64
Z USAMMENHANG (2)
19/64
Z USAMMENHANG (3)
20/64
Z USAMMENHANG (4)
21/64
Z USAMMENHANG (5)
22/64
B ÄUME
23/64
S ATZ
Ein Baum mit n Knoten besitzt genau n − 1 Kanten.
Beweis:
Vollständige Induktion nach n.
I.V.: Für Bäume mit 1 oder 2 Knoten ist der Satz wahr.
I.S. n → n + 1: Sei Tn+1 ein Baum mit n + 1 Knoten und e
eine Kante. Der Graph Tn+1 − e besteht aus zwei
Komponenten G und H, die wiederum Bäume sind.
Die Anzahl der Knoten von G und H sei g, bzw. h.
Es gilt g + h = n + 1. Außerdem hat G genau g − 1 Kanten
und H genau h − 1 Kanten.
Es gilt g + h − 2 = n − 1. Die Kanten von G und H sind auch
Kanten von Tn+1 . Mit der Kante e hat Tn+1 genau n Kanten.
24/64
C HARAKTERISIERUNG VON B ÄUME
25/64
C HARAKTERISIERUNG VON B ÄUME
26/64
G ERICHTETE G RAPHEN
27/64
G ERICHTETE G RAPHEN (2)
Bemerkung
Man kann ungerichtete Graphen als gerichtete Graphen
betrachten, bei denen die Relation A symmetrisch ist.
Definition
Es sei G = (V, A) ein gerichteter Graph.
indeg(v) =| {(x, v) | (x, v) ∈ A} | heit der Eingangsgrad von
v∈V
outdeg(v) =| {(v, y) | (v, y) ∈ A} | heit Ausgangsgrad von
v∈V
Ein gerichteter Kantenzug ist eine Folge (v0 , v1 , . . . , vn ) von
Knoten mit ei := (vi−1 , vi ) ∈ A für i = 1, . . . , n
Die Begriffe aus Definition 1.9 und Definition 1.10 werden
analog auf gerichtete Graphen übertragen.
28/64
G ERICHTETE G RAPHEN (3)
Definition
Der einem gerichteten Graph G = (V, A) zugeordnete
ungerichtete Graph G0 = (V, A0 ) ist definiert durch {v, w} ∈ A0
gdw. (v, w) ∈ A oder (w, v) ∈ A.
G heißt zusammenhängend gdw. der zugeordnete ungerichtete
Graph G0 zusammenhängend ist.
G heißt stark zusammenhängend gdw. es fur je zwei Knoten
v, w ∈ V einen gerichteten Weg von v nach w gibt.
Lemma
Für einen gerichteten Graphen G = (V, A) gilt:
X
X
indeg(v) =
outdeg(v).
v∈V
v∈V
29/64
DAG S
30/64
G RAPHINVARIANTEN
Wiederholung
Isomorphe Graphen
Invarianten
Minimalgrad
Maximalgrad
Zusammenhang
Anzahl der Komponenten
31/64
G RAPHINVARIANTEN (2)
Gradfolgen
Die Anzahl der Knoten eines gegebenen Grades ist eine
Grapheninvariante. Die Gradfolge eines Graphen ist definiert
als
(d1 , . . . , dn ) := (deg(v1 ), . . . , deg(vn )).
Es gilt δ(G) = d1 ≤ d2 ≤ · · · ≤ dn = ∆(G).
Korollar
Für einen Baum Tn mit n ≥ 2 gilt d1 = d2 = 1.
Beweis
Hausaufgabe. Wende hierfür das Handschlaglemma
32/64
K APITEL 2: R EPR ÄSENTATION VON G RAPHEN IN
C OMPUTERN
33/64
A DJAZENZMATRIX
34/64
A DJAZENZMATRIX (2)
Es kann in Zeit O(1) uberprüft werden, ob zwei Knoten vi
und vj adjazent sind.
deg(vi ) ist gleich der Zeilensumme der i-ten Zeile (bzw. der
Spaltensumme der i-Spalte). Aufwand:O(| V |).
Ermittlung der Nachbarn zu einem Knoten vi : Suche in der
i-ten Zeile/Spalte.
notwendiger Speicherplatz:O(| V | 2).
Platzverbrauch ineffizient fur bestimmte Graphklassen,
z.B. Bäume, planare Graphen (siehe Kapitel 6).
35/64
A DJAZENZMATRIX F ÜR GERICHTETE G RAPHEN
36/64
A DJAZENZMATRIX F ÜR NICHTSCHLICHTE G RAPHEN
37/64
B EISPIEL : A DJAZENZMATRIX F ÜR NICHTSCHLICHTE
G RAPHEN
38/64
A DJAZENZMATRIX : GERICHTET UND NICHT SCHLICHT
Prinzipiell können naturlich auch gerichtete Graphen nicht
schlicht sein,
d.h. an Knoten existieren Schlingen oder
zwischen zwei Knoten a und b gibt es mehrere Kanten mit
der gleichen Richtung (vona nach b).
39/64
B EISPIEL : GERICHTET UND NICHT SCHLICHT
40/64
A DJAZENZLISTE
Adjazenzlisten ermöglichen die Darstellung eines Graphen in
einem Programm, indem für jeden Knoten eine Liste mit all
seinen Nachfolgern aufgebaut wird. Man erzeugt also für jedes
i ∈ {1, . . . , n} eine Liste Ai , die alle j ∈ {1, . . . , n} und (vi , vj ) ∈ E
enthält.
Die Adjazenzlisten kann man mit Hilfe von Arrays, Vektoren
oder verketteten Listen implementieren.
41/64
A DJAZENZLISTE (2)
42/64
B EISPIEL : A DJAZENZLISTE
43/64
B EISPIEL : A DJAZENZLISTE (2)
44/64
A DJAZENZLISTE (3)
Um zu uberprüfen, ob zwei Knoten vi und vj adjazent sind,
muss die Adjazenzliste von vi durchsucht werden.
Dies ist nicht in O(1) möglich, der genaue Aufwand hängt
von der Implementierung der Adjazenzliste ab.
Der Knotengrad entspricht der Länge der Adjazenzliste.
Die Nachbarn zu einem Knoten liegen direkt in der
Adjazenzliste vor.
notwendiger Speicherplatz: O(|V| + |E|).
45/64
B EISPIEL : A NZAHL DER W EGE ZWISCHEN ZWEI
K NOTEN
46/64
B EISPIEL : A NZAHL DER W EGE ZWISCHEN ZWEI
K NOTEN (2)
47/64
B EISPIEL : A NZAHL DER W EGE ZWISCHEN ZWEI
K NOTEN (3)
48/64
A NZAHL DER K ANTENZ ÜGE ZWISCHEN ZWEI
K NOTEN
49/64
A NZAHL DER K ANTENZ ÜGE ZWISCHEN ZWEI
K NOTEN (2)
50/64
A NZAHL DER K ANTENZ ÜGE ZWISCHEN ZWEI
K NOTEN (3)
51/64
A NZAHL DER K ANTENZ ÜGE ZWISCHEN ZWEI
K NOTEN (4)
52/64
A NZAHL DER K ANTENZ ÜGE ZWISCHEN ZWEI
K NOTEN (5)
53/64
A NZAHL DER K ANTENZ ÜGE ZWISCHEN ZWEI
K NOTEN (6)
54/64
B EMERKUNGEN
Weil in DAGs jeder Kantenzug ein gerichteter einfacher
Weg ist, liefert Ar dort sogar die Anzahl der einfachen
Wege der Länge r.
Auch können wir mit diesem Ansatz prinzipiell testen, ob
ein gerichteter Graph kreisfrei ist (für p = |V| müssen die
bii alle ungleich 0 sein).
Sowohl für die Kreisfreiheit als auch für den
Zusammenhang sind diese Berechnungsansätze aber
ineffizient.
Im nächsten Kapitel werden wir effizientere Algorithmen
für diese Probleme kennenlernen.
55/64
P FADMATRIX
Definition
Die Pfadmatrix für einen Graphen G = (V, E) mit G = {v1 , . . . , vn }
ist eine n × n Matrix M = (mij )i,j∈{1,...,n} mit mij = 1, falls es einen
Pfad (einfachen Weg) von vi zu vj gibt und mij = 0 sonst. Wenn
mii = 1 ist, bedeutet das, dass es einen Kreis für den Knoten i gibt.
Ein einfacher Algorithmus, der die Pfadmatrix aufbaut ist der
Floyd-Warshall-Algorithmus. Diesen Algorithmus kann man
auch verwenden, um den kürzesten Pfad zwischen zwei
gegebenen Knoten zu bestimmen.
56/64
F LOYD -WARSHALL A LGORITHMUS
57/64
B ÄUME UND W ÄLDER
58/64
B ÄUME UND W ÄLDER (2)
Sei (G = (V, E) ein ungerichteter Graph. Die folgenden
Aussagen sind äquivalent:
59/64
M INIMALE S PANNB ÄUME
Definition
Ein aufspannender Untergraph des Graphen G = (V, E) ist ein
Graph H = (V, F) mit der Eigenschaft F ⊆ E (H hat alle Knoten aber
nicht alle Kanten von G).
Definition
Sei G = (V, E) ein Graph. Eine Funktion c : E → R+ , die jede Kante
e ∈ E auf eine positive reelle Zahl abbildet, heißt Gewichtsfunktion
des Graphen G.
Definition
Sei H = (V, F) ein aufspannender Untergraph von G. Mit dem
Gewicht des Untegraphen H bezeichnen wir die Summe der Gewichte
seiner Kanten
X
c(H) =
c(e).
e∈F
60/64
M INIMALE S PANNB ÄUME (2)
Definition
Ein Untergraph H = (V, F) des Graphen G = (V, E) der alle Knoten
von G beinhaltet und auch ein Baum ist, heißt Spannbaum.
Definition
Einen Spannbaum, der von allen Spannbäumen des Graphen G
minimales Gewicht hat, nennt man minimalen Spannbaum.
61/64
P ROBLEM
Man finde einen minimalen Spannbaum eines gewichteten
Graphen G.
62/64
A LGORITHMUS VON K RUSKAL
63/64
A LGORITHMUS VON K RUSKAL (2)
64/64
Herunterladen