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