Graphentheorie Algorithmenorientierte Graphentheorie 1. Grundlegende Definitionen in der Graphentheorie Gerichtete und ungerichtete Graphen Def: Ein Digraph (directed graph: gerichteter Graph) G = (V, E) ist eine nichtleere Menge V von Knoten (oder Ecken), einer eventuell leeren Menge E von gerichteten Kanten (oder Bögen) und einer Inzidenzfunktion ϕ : E → V × V , damit: ϕ(e) = (v, w) mit e ∈ E und v, w ∈ V . Merke: (v, w) ist ein geordnetes Knotenpaar. Def: Enthält ein Digraph mit jeder Kante e = (v, w) auch die Kante e∗ = (w, v), e 6= e∗, so wird die Kante in der Form e = {v, w} geschrieben, und der Graph heißt ungerichteter Graph oder einfach Graph. Merke: {v, w} ist ein ungeordnetes Knotenpaar. Def: Für den Bogen e = (v, w) ist v der Anfangsknoten und w der Endknoten der Kante e. v ist direkter Vorgänger von w und w ist direkter Nachfolger von v . Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 1 Graphentheorie Multigraph, schlichter Graph, Adjazenz und Inzidenz Def: Im Digraphen haben parallele Kanten den gleichen Anfangs- und den gleichen Endknoten. Bei einer Schlinge ist der Anfangs- gleich dem Endknoten. Ein Digraph ohne Schlingen heißt Multigraph, fehlen auch noch parallele Kanten, heißt der Digraph schlicht. Diese Begriffe werden auch auf ungerichteten Graphen übertragen. Def: Zwei Knoten, die durch eine (gerichtete bzw. ungerichtete) Kante verbunden sind, heißen adjazent. Adjazente Kanten haben mindestens einen gemeinsamen Knoten. Die Menge der Nachbarn N (v) eines Knotens v enthält alle zu v adjazenten Knoten. Def: Knoten und Kanten, die sich berühren, heißen inzident. Die Anzahl der zu einem Knoten v ∈ V inzidenten Kanten (gerichtet oder ungerichtet) heißt Valenz von v : val(v ), Schlingen werden dabei doppelt gezählt. In einem Digraphen unterscheidet man darüberhinaus Eingangs- und Ausgangsvalenz von v und schreibt dafür val−(v) bzw. val+ (v). Def: Ein Knoten v in einem Digraphen G ohne Vorgänger (ohne Nachfolger) heißt Quelle (Senke). Knoten ohne adjazente Knoten nennt man in Graphen und Digraphen isoliert. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 2 Graphentheorie Vollständige Graphen, reguläre Graphen, bipartite Graphen Def: Ein Graph G heißt vollständig, wenn er schlicht ist und je zwei Knoten durch genau eine Kante verbunden sind. Der vollständige Graph mit n Knoten wird mit Kn bezeichnet. Def: G heißt r-regulär, wenn val(v) = r ∀v ∈ V gilt. G heißt kubisch, wenn val(v) = 3 ∀v ∈ V erfüllt ist. Def: Ein Graph G heißt bipartit, wenn sich seine Knotenmenge so in zwei Teilmengen aufspalten läßt, daß alle Kanten inzident zu je einem Knoten aus den beiden Teilmengen sind. Schreibweise: G = (V1 ∪ V2 , E). Matchings Def: Ein Matching von G ist eine Teilmenge der Kantenmenge E mit der Eigenschaft, daß je zwei Kanten der Menge nicht adjazent sind. Ein Matching mit maximaler Kantenanzahl heißt maximales Matching. Inzidieren alle Knoten des Graphen mit einer Matchingkante, so heißt das Matching perfekt. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 3 Graphentheorie Isomorphie, Folgen von Kanten und Bögen Def: Zwei Graphen G = (V, E) und G∗ = (V ∗, E ∗) heißen isomorph, wenn es eine bijektive Abbildung f : V → V ∗ mit der Eigenschaft gibt: {v, w} ∈ E ↔ {f (v), f (w)} ∈ E ∗. Def: In einem Graphen G heißt eine Folge von Knoten [v1 , v2, ..., vk ] Kantenfolge, wenn je zwei nebeneinanderstehende Knoten der Folge durch eine Kante verbunden sind. Ist vk nicht adjazent zu v1 , heißt die Kantenfolge offen, sonst heißt die Kantenfolge geschlossen. Tritt kein Knotenpaar mehrfach auf, heißt die Folge Kantenzug. Tritt kein Knoten mehrfach auf, heißt die Folge Weg. Die Länge einer Kantenfolge bzw. eines Weges ist die Anzahl ihrer Kanten. (Gebräuchlich ist auch die Anzahl der Knoten.) In einem Digraphen unterscheidet man analog gerichtete Kantenfolgen, gerichtete Kantenzüge und gerichtete Wege. Geschlossene Wege werden als Kreise, geschlossene gerichtete Wege als Zyklen bezeichnet. Cn ist ein Kreis der Länge n. Def: Werden in einem Digraphen die Richtungen der Kanten nicht betrachtet, wird der entstehende Graph als der zu G gehörende Semigraph bezeichnet. Die entsprechenden Bezeichnungen für den Semigraphen sind Semikantenfolge, Semikantenzug und Semiweg. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 4 Graphentheorie Zusammenhang Def: Im Graphen G heißen zwei verschiedene Knoten miteinander verbunden, wenn es einen Weg zwischen ihnen gibt. Im Digraphen sind zwei verschiedene Knoten miteinander verbunden, wenn zwischen ihnen im zugehörigen Semigraphen ein Weg existiert. Im Digraph ist ein Knoten v von einem Knoten w aus erreichbar, wenn ein gerichteter Weg von w nach v existiert. Def: Ein Graph ist zusammenhängend, wenn je zwei verschiedene Knoten aus V miteinander verbunden sind (entsprechendes gilt für den Digraphen bezüglich des Semigraphen). Ein Digraph ist stark zusammenhängend, wenn zwischen zwei beliebigen voneinander verschiedenen Knoten aus V ein gerichteter Weg existiert. Zusätzlich werden Graphen bzw. Digraphen mit nur einem Knoten auch als zusammenhängend bzw. stark zusammenhängend bezeichnet. Merke: Die binäre Relation R in der Knotenmenge des Graphen G = (V, E): ∀v, w ∈ V : vRw ⇔ v = w oder v und w sind miteinander verbunden und die binäre Relation R∗ in der Knotenmenge des Digraphen G = (V, E): ∀v, w ∈ V : vR∗w ⇔ v = w oder (v ist von w erreichbar und w ist von v erreichbar) sind Äquivalenzrelationen. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 5 Graphentheorie Untergraphen und Cliquen Def: G∗ = (V ∗, E ∗) heißt Untergraph oder Teilgraph von G = (V, E), wenn V ∗ ⊆ V und E ∗ ⊆ E erfüllt ist. Gilt zusätzlich: mit {v, w} ∈ E und v, w ∈ V ∗ auch {v, w} ∈ E ∗, heißt G∗ induzierter Untergraph von G. Eine Clique von G ist ein vollständiger Untergraph von G. Bäume und Wälder Def: Ein Baum ist ein zusammenhängender, schlichter, kreisfreier Graph. Ein Wald besteht aus mehreren Bäumen. Ein zusammenhängender, alle Knoten des zusammenhängenden Graphen G enthaltender Teilgraph von G mit minimaler Kantenanzahl heißt Gerüst oder aufspannender Baum von G. Ein aufspannender Wald auf G ist ein nichtzusammenhängender Teilgraph von G, der alle Knoten von G enthält und dessen Komponenten Bäume sind. Komplementgraph Def: Sei G = (V, E) ein Teilgraph des vollständigen Graphen Kn = (V, E ∗). Dann heißt der Graph G = (V, E ∗ \ E) Komplementgraph zu G. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 6 Graphentheorie 2. Entscheidungs- und Optimierungsprobleme über Graphen Entscheidungsprobleme: Gegeben: Ungerichteter Multigraph G = (V, E); Frage 1: Gibt es einen Eulerkreis auf G, d.h. eine geschlossene Kantenfolge, die jede Kante genau einmal enthält? Frage 2: Gibt es einen Hamiltonkreis auf G, d.h. eine geschlossene Kantenfolge so, daß jeder Knoten genau einmal vorkommt? Optimierungsprobleme: Gegeben: Ungerichteter Multigraph G = (V, E) mit Kantenbewertungen c(e); Briefträgerproblem: Füge Kanten mit minimaler Gesamtbewertung zu G so hinzu, daß der Graph G∗ = (V, E ∗) einen Eulerkreis enthält. Rundreiseproblem: Bestimme einen Hamiltonkreis auf G mit minimalem Gewicht! Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 7 Graphentheorie Matchingprobleme auf bipartiten Graphen Entscheidungsproblem: Gegeben: bipartiter Graph G = (I ∪ J, E); Frage: Existiert auf G ein Matching mit |I| Kanten? Optimierungsproblem: Gegeben: vollständiger bipartiter Graph G = (I ∪ J, E) mit |I| = |J| und Kantenbewertungen cij ∈ N0 ∀ {ij} ∈ E ; Zuordnungsproblem: Gesucht ist ein perfektes Matching M ∗ ⊆ E mit minimaler Gesamtbewertung w(M ∗ ) = min M Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel P cij . {ij}∈M Folie 8 Graphentheorie 3. Beschreibung von Graphen Gegeben ist ein (ungerichteter oder gerichteter) Graph G = (V, E) mit n = |V | Knoten und m = |E| (ungerichteten oder gerichteten) Kanten. Inzidenzmatrix B = [bi,j ]n×m für ungerichtete Graphen bi,j = 1, falls vi mit ej inzidiert; 0, sonst. Inzidenzmatrix B = [bi,j ]n×m für gerichtete Graphen bi,j 8 < 1, falls ej von vi startet ∨ ej ist Schlinge; = -1, falls ej in vi mündet ∧ ej ist keine Schlinge; : 0, sonst. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 9 Graphentheorie Beschreibung von Graphen (2) Adjazenzmatrix A = [ai,j ]n×n für ungerichtete Graphen ai,j = Anzahl der Kanten {vi , vj }, Schlingen werden doppelt gezählt. Merke: A ist symmetrisch und es gilt: P P ai,j = val(vj ), j ∈ {1, . . . , n}. ai,j = val(vi ), i ∈ {1, . . . , n} bzw. i j Adjazenzmatrix A = [ai,j ]n×n für gerichtete Graphen ai,j = Anzahl der Bögen (vi , vj ). Merke: A ist nicht symmetrisch und es gilt: P P ai,j = val− (vj ), j ∈ {1, . . . , n}. ai,j = val+ (vi ), i ∈ {1, . . . , n} bzw. j Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel i Folie 10 Graphentheorie Beschreibung von Graphen (3) Adjazenztabelle für ungerichtete Graphen in Zeile i: vi und N (vi ) (geordnet oder ungeordnet). Merke: Abspeicherung der Tabelle in Liste: Adjazenzliste N enthält nacheinander alle Nachbarn aus N (v1 ), N (v2 ), . . . , N (vn ), wobei der Zeiger zi , i ∈ {1, . . . , n}, auf den ersten Nachbarn von vi in N zeigt, d.h. Pi−1 z1 = 1 und zi = k=1 |N (vk )| + 1 für 2 ≤ i ≤ n. Nachfolger- bzw. Vorgängertabelle für gerichtete Graphen in Zeile i: vi und P RED(vi ) (Menge der unmittelbaren Vorgänger von vi ) bzw. in Zeile i: vi und SU CC(vi ) (Menge der unmittelbaren Nachfolger von vi ), wiederum: ungeordnete bzw. geordnete Form möglich. Merke: Analoge Abspeicherung in Nachfolgerliste bzw Vorgängerliste. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 11 Graphentheorie Beschreibung von Graphen (4) Kombinierte Adjazenzliste Eine kombinierte Adjazenzliste N ∗ enthält die Multimenge aller Nachbarn aus ∪ni=1N (vi ), wobei zu jedem Nachbarn ein Zeiger z ∗ auf den nächsten Nachbarn des gleichen Knotens gerichtet ist und der Anfangszeiger zi, i ∈ {1, . . . , n}, auf den ersten Nachbarn von vi in N ∗ zeigt. Darstellung in Tabellenform: Zähler Nachbarknoten Zeiger z ∗ Anfangszeiger z 1 2 ... r Eine Liste ist eine Datenstruktur, deren einzelne Elemente durch Zeiger verbunden sind: Anfang (von Knoten v ) → 1.Nachbar → 2.Nachbar → ...→ letzter Nachbar → Ende ∗ Analog im Digraphen: Kombinierte Vorgänger- bzw. Nachfolgerliste Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 12 Graphentheorie Vergleich der Beschreibungsmöglichkeiten Die folgende Tabelle zeigt den Speicherbedarf und den Aufwand für einfachste Graphenoperationen in Abhängigkeit von der Beschreibung eines ungerichteten Graphen G = (V, E) mit |V | = n, |E| = m, d = maxv∈V {val(v)}. Aufwand proportional zu Sind die Knoten v, w adjazent? Markiere alle Nachbarn von v ! Füge Knoten ein! Füge Kante ein! Speicherplatz bei zeilenweiser bzw. Inzidenzmatrix Adjazenzmatrix m Adjazenzliste geordnete Adjazenzliste d log2 d kombinierte Adjazenzliste ⋆ mn m bzw. nm⋆ n n 1 n×m n×n spaltenweiser Speicherung der Inzidenzmatrix Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 13 Graphentheorie 4. Zusammenhang Gegeben: G = (V, E) durch V = {1, . . . , n} und ∀ v ∈ V : N (v) (Multimengen); Frage: Ist G zusammenhängend? Breitensuche: Idee: Benutze für jeden Knoten v eine Marke α(v) mit: Wenn α(v) = v : Alle Nachbarn von v sind schon untersucht; Wenn α(v) = −v : Die Nachbarn von v sind noch nicht untersucht, aber es steht schon fest, daß v zur Zusammenhangskomponente des Startknotens gehört; Wenn α(v) = 0: Man weiß noch nichts über v . Tiefensuche: Idee: Jeder Knoten v erhält Marke α(v): Nummer des Knotens, von dem der Knoten v das erste Mal erreicht wird. Merke: Aufwand ist in beiden Algorithmen proportional zu max{|V |, |E|}. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 14 Graphentheorie Breitensuche Algorithmus BFS (breath-first-search) Eingabe: G = (V, E) durch V = {1, . . . , n} und ∀v ∈ V : N (v), Startknoten 1; Ausgabe: VH : Knotenmenge VH der Zusammenhangskomponente, die den Startknoten enthält. BEGIN Setze ∀ v ∈ V \ {1} : α(v) = 0; α(1) = −1; WHILE Es gibt ein k mit α(k) < 0 DO BEGIN WHILE Es gibt ein l ∈ N (k) mit α(l) = 0 DO α(l) = −l; α(k) = k; END; VH := {v ∈ V | α(v) = v}; END. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 15 Graphentheorie Tiefensuche Algorithmus DFS (depth first search) Eingabe: G = (V, E) durch V = {1, . . . , n} und ∀v ∈ V : N (v); Startknoten 1; Ausgabe: VH : Knotenmenge VH der Zusammenhangskomponente, die den Startknoten enthält. BEGIN Setze ∀v ∈ V \ {1} : α(v) = 0; α(1) = 1, x := 1; Marke: WHILE Es gibt ein y ∈ N (x) mit α(y) = 0 DO BEGIN Markiere y : α(y) = x; x := y ; END; IF x 6= 1 THEN BEGIN x = α(x); GOTO Marke; END; ELSE VH := {v ∈ V | α(v) 6= 0}; END. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 16 Graphentheorie 5. Topologische Sortierung Gegeben: Digraph G = (V, E) mit V = {1, . . . , n}, schlicht und zusammenhängend; Gesucht: Knotennumerierung so, daß jeder Knoten j nur Vorgänger i mit i < j besitzt. Merke: Diese Numerierung existiert nur, wenn G zyklenfrei ist! Der Graph wird gleichzeitig auf Zyklenfreiheit überprüft! Die Adjazenzmatrix eines zyklenfreien Digraphen nach topologischer Sortierung der Knoten ist eine obere Dreiecksmatrix! Idee: 1. Ordne allen Quellen eine Nummer zu. 2. Entferne alle Quellen und die mit ihnen inzidierenden Kanten. 3. Falls noch unnumerierte Knoten vorhanden sind, suche erneut Quellen, falls keine existieren, dann besitzt der Digraph mindestens einen Zyklus. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 17 Graphentheorie Algorithmus TOPSORT1 Algorithmus TOPSORT1 Eingabe: G = (V, E) durch V = {1, . . . , n} und Adjazenzmatrix A; Ausgabe: lk , k = 1, .., n (neue Knotennummer des Knotens k). BEGIN FOR j ∈ V DO BEGIN val− (j) := 0; FOR i ∈ V DO val−(j) := val− (j) + ai,j END; FOR i := 1 TO n DO BEGIN wähle ein k ∈ V mit val−(k) = 0; IF (ein solches existiert nicht) THEN STOP (Digraph enthält Zyklus) ELSE BEGIN lk := i; V := V \ {k}; FOR j ∈ V DO val− (j) := val− (j) − ak,j END; END; END. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 18 Graphentheorie Algorithmus TOPSORT2 Algorithmus TOPSORT 2 Eingabe: G = (V, E) durch V = {1, . . . , n} und ∀v ∈ V : Menge der Nachfolger S(v); Ausgabe: ∀j ∈ {1, . . . , n}: neue Knotennummer lj des Knotens j . BEGIN M := ∅; v := 0; FOR i := 1 TO n DO val− (i) := 0; FOR i := 1 TO n DO FOR j ∈ S(i) DO val− (j) := val− (j) + 1; FOR i := 1 TO n DO IF val− (i) = 0 THEN BEGIN M := M ∪ {i}; v := v + 1; li := v END; WHILE M 6= ∅ DO BEGIN wähle ein k ∈ M ; M := M \ {k}; FOR j ∈ S(k) DO BEGIN val− (j) := val−(j) − 1; IF val−(j) = 0 THEN BEGIN M := M ∪ {j}; v := v + 1; lj := v END; END; END; If v < n THEN STOP (Digraph enthält Zyklus) END. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 19 Graphentheorie 6. Aufwand von Algorithmen Bei der Abarbeitung eines Algorithmus werden die elementaren Rechenschritte gezählt. Elementare Rechenschritte sind u.a. Grundrechenarten, Vergleiche, ein Element aus einer Menge wählen. Man setzt voraus, das jeder der elementaren Rechenschritte die gleiche Zeit benötigt. Ein Maß für das Wachstum dieser Anzahl g(n) in Abhängigkeit von der Größe n des Problems wird durch das Landausche Symbol O(.) definiert: Def: Gegeben sind die Abbildungen f, g : N → R+. Dann ist O(f (n)) = {g(n)|∃ eine Konstante c > 0 so, daß g(n) ≤ cf (n) ∀n ≥ n0 gilt.} Schreibweise: Statt g(n) ∈ O(f (n)) schreibe g(n) = O(f (n)) (Keine Gleichung!) Def: Ein Algorithmus heißt polynomial, wenn g(n) = O(f (n)) und f (n) ein Polynom in n ist und exponentiell, wenn f (n) eine Exponentialfunktion ist. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 20 Graphentheorie Vergleich des Aufwandes von Algorithmen Sprechweise: Der Algorithmus braucht O(f (n)) Zeit, oder der Algorithmus hat eine Zeitkomplexität von O(f (n)). In der folgenden Tabelle werden die Rechenzeiten für verschiedene Zeitkomplexitäten in Abhängigkeit von der Problemgröße dargestellt. Dabei wird angenommen, daß ein Rechenschritt eine Länge von 10−6 Sekunden hat. Zeit n nlogn n2 n3 n5 2n 3n n! 10 0.00001 0.00001 0.0001 0.001 0.1 0.001 0.059 3.63 Problemgröße n 50 20 sec sec sec sec sec sec sec sec 0.00002 0.00009 0.0004 0.008 3.2 1 58 77000 sec sec sec sec sec sec min Jahre 100 1000 0.00005 0.0003 0.0025 0.125 5.2 35.7 sec sec sec sec min Jahre 0.0001 0.0007 0.01 1 2.67 4 · 1016 sec sec sec sec h Jahre 1051 Jahre 3 · 10144 Jahre 0.001 0.01 1 16,66 1111.1 Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel sec sec sec sec Tage Folie 21 Graphentheorie Lösen schnellere Rechner das Problem? Die folgende Tabelle gibt an, wie sich - in Abhängigkeit von der Zeitkomplexität - unter dem Einfluß schnellerer Rechner die Problemgröße verändert, die in einer Stunde zu bewältigen ist. Zeitkomplexität n n2 n3 n5 2n 3n mit dem gegenwärtigen Computer n1 n2 n3 n4 n5 n6 mit einem 100-mal schnelleren Computer 100 · n1 10 · n2 4, 64 · n3 2, 5 · n4 n5 + 6, 64 n6 + 4, 19 mit einem 1000-mal schnelleren Computer 1000 · n1 31, 6 · n2 10 · n3 3, 98 · n4 n5 + 9, 97 n6 + 6, 29 Polynomiale Algorithmen werden als gutartig, exponentielle Algorithmen werden als bösartig bezeichnet. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 22 Graphentheorie 7. Zur Komplexität von Problemen Betrachtet werden Entscheidungsprobleme, diese haben nur die Antworten “ja” oder “nein”. Die Klassen P und NP Def: P ist die Menge aller deterministisch in polynomialer Zeit lösbaren Entscheidungsprobleme. Merke: Ein nichtdeterministischer Algorithmus besteht aus einem Rateteil und einem Prüfteil. Im Rateteil wird ein Lösungselement des Problems geraten und im Prüfteil wird in polynomialer Zeit überprüft, ob das Lösungselement zu einer ’ja’ Antwort des Entscheidungsproblems führt. Def: NP ist die Menge aller nichtdeterministisch in polynomialer Zeit lösbaren Entscheidungsprobleme. Merke: Es gilt: P ⊆ NP. Frage P = NP ist bis heute ungelöst. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 23 Graphentheorie Die Klasse NP-complete Def: Ein Problem A heißt reduzierbar auf ein Problem B , (AαB), wenn jede Instanz (Eingabeparameter) von A mit polynomialen Aufwand so in eine Instanz von B überführt werden kann, daß beide Instanzen gleiche Antworten ’ja’ oder ’nein’ liefern. Merke: Die Relation α ist reflexiv und transitiv. Def: Die Menge aller Probleme aus NP, auf die jedes Problem aus NP reduziert werden kann, heißt NP-complete: A ∈ NP-complete ⇔ (A ∈ NP) ∧ (∀B ∈ NP : BαA). Merke: Es genügt zu zeigen: A ∈ NP ∧ (∃B ∈ NP-complete: BαA). Def: Die Probleme A und B heißen zeitkomplexitätstheoretisch äquivalent, wenn AαB ∧ BαA gilt. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 24 Graphentheorie Erste gefundene Probleme der Klasse NP-complete (1) Erfüllbarkeitsprobleme der Logik SATISFIABILITY (SAT) • Gegeben: Eine Menge U = {u1 , .., un } von boolschen Variablen und eine Menge C = {c1, .., cm} von Klauseln über U . • Frage: Lassen sich den Variablen aus U Wahrheitswerte so zuweisen, daß jede der Klauseln den Wahrheitswert true hat? 3-SATISFIABILITY (3-SAT) • Dieses Problem unterscheidet sich von SATISFIABILITY nur dadurch, daß jede Klausel nur drei Variable enthält. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 25 Graphentheorie Erste gefundene Probleme der Klasse NP-complete (2) Graphentheoretische Probleme 3-DIMENSIONAL MATCHING (3DM) • Gegeben: Eine natürliche Zahl q , drei durchschnittsfremde Mengen X, Y, Z mit |X| = |Y | = |Z| = q und eine Menge M ⊆ X × Y × Z . • Frage: Gibt es eine Menge M ′ ⊆ M mit |M | = q , in der gilt: (x1 , y1, z1), (x2 , y2, z2) ∈ M ′ ⇒ x1 6= x2 ∧ y1 6= y2 ∧ z1 6= z2? VERTEX COVER (CV) • Gegeben: Ein Graph G = (V, E) und ein k ∈ N mit k ≤ |V |. • Frage: Gibt es eine Knotenüberdeckungsmenge nicht größer als k, das heißt eine Menge V ∗ ⊆ V mit |V ∗| ≤ k, so daß jede Kante aus E mindestens einen Endknoten in V ∗ hat? Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 26 Graphentheorie Erste gefundene Probleme der Klasse NP-complete (3) HAMILTONIAN CIRCUIT (HC) • Gegeben: Ein Graph G = (V, E). • Frage: Gibt es auf G einen Hamiltonkreis, d.h. eine Folge v1 , v2 , .., vn von Knoten mit |V | = n und {vi , vi+1 } ∈ E für 1 ≤ i ≤ n − 1 und {vn , v1 } ∈ E ? CLIQUE • Gegeben: Ein Graph G = (V, E) und eine Zahl k ∈ N, k ≤ |V |. • Frage: Gibt es auf G eine Clique mit mindestens k Knoten, d.h. eine Menge paarweiser adjazenter Knoten V ′ ⊆ V mit |V ′| ≥ k? STABLE SET • Gegeben: Sei ein Graph G = (V, E) und eine Zahl k ∈ N . • Frage: Hat G eine stabile Knotenmenge V ∗ ⊆ V , d.h. eine Menge paarweiser nicht adjazenter Knoten, mit |V ∗| ≥ k? Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 27 Graphentheorie Probleme aus NP-complete Satz 1. Das Problem HC liegt in NP-complete. Satz 2. Gegeben ist ein Graph G = (V, E) und V ∗ ⊆ V . Dann sind die folgenden Aussagen äquivalent: 1. V ∗ spannt eine Clique auf G auf. 2. V ∗ ist eine stabile Knotenmenge im Komplementärgraphen Ḡ. 3. V \ V ∗ ist Knotenüberdeckungsmenge in Ḡ. Folgerung: Die Probleme VC,CLIQUE und STABLE SET sind komplexitätstheoretisch äquivalent. Mit VC ∈ NP-complete sind auch die anderen in NP-complete. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 28 Graphentheorie 8. Bäume, Wälder und Gerüste Satz 3. Die folgenden Aussagen sind für einen Graphen G = (V, E) mit n Knoten und m Kanten äquivalent: (1) Zwei beliebige Knoten aus G sind genau durch einen Weg verbunden. (2) G ist ein Baum. (3) G ist zusammenhängend und hat m = n − 1 Kanten. (4) G ist kreisfrei und hat m = n − 1 Kanten. (5) G ist kreisfrei und verbindet man zwei nichtadjazente Knoten aus G durch eine zusätzliche Kante, so entsteht ein Graph mit genau einem Kreis. Folgerung: Sei G′ ein Teilgraph eines Graphen G = (V, E) mit n Knoten. G′ habe n′ = n Knoten und m′ Kanten. Dann sind die Aussagen (1) bis (5) äquivalent, wenn G durch G′ und m durch m′ ersetzt wird. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 29 Graphentheorie Eigenschaften Satz 4. Jeder Baum G = (V, E) hat mindestens zwei Blätter, d.h. Knoten mit Valenz 1. Satz 5. Ein schlichter, zusammenhängender Graph G = (V, E) mit n Knoten und m Kanten enthält mindestens (m − n + 1) Kreise. Def: Die Menge aller Kreise, die man durch Hinzunahme einer Kante zu einem gegebenen Gerüst H erhält, heißt Fundamentalsystem von Kreisen bezüglich H . Zyklus- und Cozyklusrang Def: Es sei G = (V, E) ein schlichter Graph mit k Komponenten. Dann heißt ν(G) = |E| − |V | + k Zyklusrang und ν ∗(G) = |V | − k Cozyklusrang von G, d.h. es gilt: ν(G) + ν ∗(G) = |E|. Satz 6. (a) Ein Graph G ist ein Wald. ⇔ ν(G) = 0. (b) Ein Graph G hat einen einzigen Kreis. ⇔ ν(G) = 1. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 30 Graphentheorie Anzahl der Gerüste eines Graphen Satz 7. Satz von Cayley Der vollständige Graph Kn mit n ≥ 2 Knoten besitzt genau nn−2 Gerüste. Def: Valenzmatrix von G: V = [vij ]n,n mit vij = val(i), 0, für i = j . für i = 6 j Admittanzmatrix von G: A = V − A, wobei A die Adjazenzmatrix von G ist. Satz 8. Matrix-Gerüstsatz von Kirchhoff-Trent Der Graph G = (V, E) mit mehr als einem Knoten habe die Admittanzmatrix A. Sei i ∈ {1, ..., |V |} beliebig gewählt. Die Matrix Ai entstehe aus A durch Streichen der Zeile i und der Spalte i. Dann gilt für die Anzahl der Gerüste h(G) auf G: h(G) = |Ai | = det(Ai ). Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 31 Graphentheorie Das Minimalgerüstproblem Gegeben: Schlichter zusammenhängender Graph G = (V, E) mit Kantenbewertungsmatrix C = [cij ], d.h. - jeder Kante e = {i, j} ∈ E wird eine positive reelle Zahl cij zugeordnet und - wenn {i, j} ∈ / E , wird cij = ∞ gesetzt. Gesucht: Minimalgerüst auf G, d.h. ein Gerüst H = (V, EH ) mit f = min { H∈M H X cij }, {i,j}∈EH wobei mit M H die Menge aller Gerüste auf G bezeichnet wird. Satz 9. Sei G = (V, E) ein kantenbewerteter zusammenhängender schlichter Graph, V ∗ ⊂ V und {v, w} eine Kante mit minimaler Bewertung mit v ∈ V ∗ und w ∈ V \ V ∗. Dann existiert ein Minimalgerüst, das die Kante {v, w} enthält. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 32 Graphentheorie Algorithmus MINGERÜST 1 (Prim/Dijkstra) Idee: • Wähle einen beliebigen Startknoten v , setze V ∗ := {v} und EH = ∅. • Wiederhole, bis V ∗ = V erfüllt ist: Suche unter allen Kanten {v, w} ∈ E mit v ∈ V ∗, w 6∈ V ∗ diejenige mit kleinster Bewertung, diese sei {v ∗ , w∗}, aktualisiere: EH := EH ∪ {v ∗ , w∗}, V ∗ := V ∗ ∪ {w∗ }. Merke: Die Exaktheit des Algorithmusses ist durch Satz 9 gesichert. Der Aufwand beträgt O(|V |2). Beachte: Im folgenden Algorithmus bezeichnet {w, Anschluß(w)} die Kante mit kleinster Bewertung mit Anschluß(w) ∈ V ∗ und w ∈ V \ V ∗ im jeweils aktuellen Schritt. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 33 Graphentheorie Algorithmus nach Prim/Dijkstra Algorithmus MINGERÜST 1 Eingabe: G = (V, E), G zusammenhängend, ungerichtet; Kantenbewertungen C = [c(i, j)]; Ausgabe: Kantenmenge EH des Minimalgerüstes H = (V, EH ). BEGIN Wähle Startknoten v , beliebig; V ∗ := {v}; EH := ∅; FORALL w ∈ V \ V ∗ DO Anschluß(w) := v ; WHILE V ∗ 6= V DO BEGIN min := ∞; FORALL w ∈ V \ V ∗ DO IF c(w, Anschluß(w)) < min THEN BEGIN min := c(w, Anschluß(w)); w∗ := w; END; ∗ V := V ∗ ∪ {w∗ }; EH := EH ∪ {{w∗ , Anschluß(w∗)}}; FORALL w ∈ V \ V ∗ DO IF c(w, Anschluß(w)) > c(w, w∗ ) THEN Anschluß(w) := w∗; END; END. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 34 Graphentheorie Algorithmus MINGERÜST 2 (Sollin) Voraussetzung: Kantenbewertungen paarweise verschieden. Idee: Wie MINGERÜST 1, aber: starte mit allen Knoten gleichzeitig! • Setze Si := {vi }, i = 1, ..., n und S = {S1 , S2 , ..., Sn}, EH = ∅. • Wiederhole, bis |S| = 1 gilt: Verbinde jeden Knoten vi mit seinem nächstgelegenen Nachbarn, nimm die ausgewählten Kanten in EH auf. Bestimme die Knotenmengen Sk der Zusammenhangskomponenten von (V, EH ) und komprimiere die Zusammenhangskomponenten auf einen Knoten, aktualisiere die Daten. Merke: Die Exaktheit des Algorithmusses ist durch Satz 9 gesichert. Der Aufwand beträgt O(|E| log |V |). Beachte: Im folgenden Algorithmus bezeichnet kK(i) die kürzeste Kante, die aus der Knotenmenge Si herausführt. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 35 Graphentheorie Algorithmus nach Sollin Algorithmus MINGERÜST 2 Eingabe: G = (V, E), G zusammenhängend, ungerichtet; Kantenbewertungen C = [cij ]; Ausgabe: Kantenmenge EH des Minimalgerüstes H = (V, EH ). BEGIN EH := ∅; S := {{v1 }, {v2 }, ..., {vn }} = {S1 , ..., Sn }; WHILE |S| 6= 1 DO BEGIN FOR i := 1 TO |S| DO min(i) := ∞; FORALL {u, v} ∈ E mit u ∈ Si und v ∈ Sj DO IF i 6= j THEN BEGIN IF cu,v < min(i) THEN BEGIN min(i) := cu,v ; kK(i) := {u, v}; END; IF cu,v < min(j) THEN BEGIN min(j) := cu,v ; kK(j) := {u, v}; END; END; FORALL Sj ∈ S DO EH := EH ∪ {kK(j)}; Bestimme die neue Menge S der Knotenmengen der Zusammenhangskomponenten von (V, EH ); END; END. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 36 Graphentheorie Algorithmus nach Kruskal (Greedy Algorithmus) Algorithmus MINGERÜST 3 Eingabe: G = (V, E), zusammenhängend, ungerichtet, Kantenbewertung C = [cij ]; Ausgabe: Kantenmenge EH des Minimalgerüstes H = (V, EH ). BEGIN Sortiere die Kanten nach nichtfallenden Bewertungen; EH := ∅; WHILE |EH | < |V | − 1 DO BEGIN es sei {u, v} die Kante aus E mit minimaler Bewertung; E := E \ {{u, v}}; IF (V, EH ∪ {{u, v}}) enthält keinen Kreis) THEN EH := EH ∪ {{u, v}}; END; END. Satz 10. MINGERÜST 3 liefert ein Minimalgerüst auf G. Merke: MINGERÜST 3 läßt sich mit einem Aufwand von O(m log m) umsetzen. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 37 Graphentheorie MINGERÜST 4 Algorithmus MINGERÜST 4 Eingabe: G = (V, E), zusammenhängend, ungerichtet, Kantenbewertung C = [cij ]; Ausgabe: Kantenmenge EH des Minimalgerüstes H = (V, EH ). BEGIN Sortiere die Kanten nach nichtsteigenden Bewertungen; EH := ∅; WHILE |EH | < |V | − 1 DO BEGIN es sei {u, v} die Kante aus E \ EH mit maximaler Bewertung; E := E \ {{u, v}}; IF (V, E) ist nicht zusammenhängend THEN BEGIN EH := EH ∪ {{u, v}}; E := E ∪ {{u, v}}; END; END; END. Satz 11. MINGERÜST 4 liefert ein Minimalgerüst auf G. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 38 Graphentheorie Problemerweiterungen Def: Die Knotenzusammenhangszahl κ(G) eines Graphen G = (V ; E) ist die Mächtigkeit einer kleinsten Knotenmenge V ∗ ⊆ V mit: G \ V ∗ ist nicht mehr zusammenhängend. Merke: κ(G) ist in polynomialer Zeit bestimmbar. (später!) Problem: MINIMALER ZWEIFACH-ZUSAMMENHÄNGENDER TEILGRAPH: Gegeben: Zusammenhängender schlichter Graph G = (V, E) mit Kantenbewertungen; Gesucht: Aufspannender Teilgraph G′ = (V, E ′ ) von G mit κ(G′) = 2 und minimaler Summe der zugehörenden Kantenbewertungen. Satz 12. Das zum Problem MINIMALER ZWEIFACH-ZUSAMMENHÄNGENDER TEILGRAPH gehörende Entscheidungsproblem liegt in NP-complete. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 39 Graphentheorie Das Steinerbaumproblem Def: Ein Baum auf einem Graphen G = (V, E), der alle Knoten aus einer vorgegebenen Menge V ∗ ⊆ V enthält, heißt Steinerbaum auf G bezüglich V ∗. Problem: STEINERBAUMPROBLEM: Gegeben: Zusammenhängender schlichter Graph G = (V, E), V ∗ ⊆ V ; Gesucht: Steinerbaum auf G bezüglich V ∗ mit minimaler Kantenanzahl. Satz 13. Das zum Problem STEINERBAUMPROBLEM gehörende Entscheidungsproblem liegt in NP-complete. Merke: Die Suche nach minimal gewichteten Steinerbäumen auf einem kantengewichteten Graphen G = (V, E) bezüglich V ∗ ⊆ V ist ebenfalls schwierig! Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 40 Graphentheorie 9. Wegealgorithmen Def: Auf einem kantenbewerteten Digraphen ist ein kürzester Weg vom Knoten vi zu Knoten vj ein gerichteter vi − vj Weg mit minimaler Summe der Kantenbewertungen. Die Bewertung eines kürzesten vi − vj Weges heißt Entfernung (Distanz) dij von vi nach vj (oder von vj zu vi ). Sind alle Kantenbewertungen 1, heißt dij Abstand von vj zu vi . Def: Ein negativer Zyklus auf einem Digraphen G = (V, E) mit Kantenbewertungen cij ∈ R für alle (vi , vj ) ∈ E ist ein Zyklus auf diesem Graphen mit negativer Summe der zugehörenden Kantenbewertungen. Satz 14. Wenn W (v1 , vk ) = [v1 , . . . , vk ] ein kürzester Weg von v1 nach vk auf einem kantenbewerteten Digraphen G = (V, E) ohne negative Zyklen ist, dann ist jeder Teilweg W (vi , vj ) mit 1 ≤ i ≤ j ≤ k ein kürzester vi − vj Weg. Eigenschaft: Auf einem kantenbewerteten Digraphen G = (V, E) ohne negative Zyklen gilt für die Distanz die Dreiecksungleichung: dij ≤ dik + dkj für alle vi , vj , vk ∈ V , die die zugehörenden Erreichbarkeiten gewährleisten. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 41 Graphentheorie Wegbaum Merke: Für einen zusammenhängenden kantenbewerteten Digraphen ohne negative Zyklen lassen sich kürzesten Wege von einem gegebenen Startknoten in einem gerichteten Baum (Wegbaum) veranschaulichen. Tripelalgorithmus Gegeben: Zusammenhängender schlichter kantenbewerteter Digraph G = (V, E), |V | = n, ohne negative Zyklen. Gesucht: Bestimmung kürzester Wege von jedem Knoten zu jeden anderen Knoten. 8 wenn i = j < 0, Def: Bewertungsmatrix: C = [cij ]n,n mit cij := cij , wenn i 6= j, (vi , vj ) ∈ E; : ∞, sonst. Def: Vorgängermatrix: U = [uij ]n,n mit uij := Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel i, 0, wenn i = j oder (vi , vj ) ∈ E; sonst. Folie 42 Graphentheorie Entfernungs- und Wegematrix für den Tripelalgorithmus Def: Entfernungsmatrix D = [dij ]n,n mit 8 < 0, dij := Entfernung von vi nach vj , : ∞, für i = j; wenn vj von vi erreichbar ist; wenn vj nicht von vi erreichbar ist. Def: Wegematrix W = [wij ]n,n mit wij 8 0, > > < i, := j ∗, > > : wenn vj nicht von vi erreichbar ist; wenn i = j; wobei vj ∗ direkter Vorgänger von vj auf einem kürzesten Weg von vi nach vj ist. Idee: Man versucht im Schritt r die bis zum Schritt r − 1 ermittelten Wegbewertungen von vi nach vj weiter zu verkürzen, indem man zusätzliche gerichtete Wege über den Knoten vr betrachtet. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 43 Graphentheorie Tripelalgorithmus (1) Algorithmus: Tripelalgorithmus Eingabe: schlichter Digraph mit nichtnegativen reellen Kantenbewertungen, Bewertungsmatrix C = [cij ] und Vorgängermatrix U = [uij ] ; Ausgabe: Entfernungsmatrix D = [dij ] und Wegematrix W = [wij ]. BEGIN D := C; W := U ; I := {1, .., n}; FOR r := 1 TO n DO FOR i := 1 TO n DO BEGIN IF dir < ∞ THEN BEGIN FOR j := 1 TO n DO IF drj < ∞ AND dir + drj < dij THEN BEGIN dij := dir + drj ; wij := wrj ; END; END; END; Ausgabe der Matrizen D und W ; END. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 44 Graphentheorie Tripelalgorithmus (2) Merke: Der Aufwand des Tripelalgorithmusses beträgt O(n3 ). Satz 15. Der Tripelalgorithmus ist korrekt. Beweisidee: Man berechnet schrittweise die Matrizen Cr = [crij ] und Ur = [urij ] , r = 0, 1, .., n, mit C0 = C und U0 = U durch folgende Vorschrift: r−1 cij , für i = r oder j = r; r cij := r−1 r−1 r−1 min{ cij , cir + crj }, sonst. urij := r−1 urj , r−1 uij ; r−1 wenn crij < cij sonst. und zeigt, daß Cn = D und Un = W gilt. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 45 Graphentheorie Algorithmus von Dijkstra Gegeben: Schlichter Digraph G = (V, E) mit nichtnegativen Kantenbewertungen und Startknoten v ∗ ; Gesucht: Entfernungen d(v ∗ , v) vom Knoten v ∗ zu jedem von v ∗ erreichbaren Knoten v . Idee des Algorithmusses: Schrittweise Bestimmung der von v1 = v ∗ erreichbaren Knoten v2 , .., vk ∈ V \ {v1 } mit den zugehörenden Entfernungen d(v1 , v2 ), . . . , d(v1 , vk ) mit folgender Eigenschaft: d(v1 , v2 ) ≤ d(v1 , v3 ) ≤ . . . ≤ d(v1 , vk ). Merke: Im folgenden Algorithmus bezeichnet S die Menge der Knoten, für die schon ein kürzester Weg von v1 bekannt ist und SUCC(v) die Menge der unmittelbaren Nachfolger von v . Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 46 Graphentheorie Algorithmus von Dijkstra Algorithmus: Dijkstra Eingabe: Schlichter Digraph G = (V, E) mit nichtnegativen reellen Kantenbewertungen c(v, w) für alle (v, w) ∈ E , die Mengen SUCC(v) für alle v ∈ V und der Startknoten v ∗. Ausgabe: Parameter δ(v) mit δ(v) = d(v ∗ , v). BEGIN S := ∅; T := V ; δ(v ∗ ) := 0; FORALL v ∈ V \ {v ∗ } DO δ(v) := ∞ ; WHILE T 6= ∅ DO BEGIN Bestimme einen Knoten v so, daß δ(v) = min{δ(u) | u ∈ T }; Setze T := T \ {v} und S := S ∪ {v}; FORALL u ∈ T ∩ SUCC(v) DO δ(u) := min{δ(u), δ(v) + c(v, u)}; END; END. Satz 16. Der Dijkstra-Algorithmus ist korrekt und hat die Zeitkomplexität O(n2 ). Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 47 Graphentheorie Algorithmus von Bellmann-Ford-More Algorithmus: Bellmann-Ford-More Eingabe: Schlichter kantenbewerteter Digraph G = (V, E) ohne negative Zyklen und ein Startknoten v ∗. Ausgabe: Für alle v ∈ V : Parameter δ(v) mit δ(v) = d(v ∗ , v). BEGIN Setze δ(v ∗ ) := 0 und δ(v) := ∞ für alle v ∈ V \ {v ∗ }; FOR i = 1 TO n − 1 DO FORALL (v, u) ∈ E aktualisiere den Parameter δu durch δ(u) := min{δ(u), δ(v) + c(v, u)}; END. Satz 17. Der Bellmann-Ford-More Algorithmus ist korrekt und hat die Zeitkomplexität O(nm). Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 48 Graphentheorie Einige Algorithmen im Überblick Verfahren Voraussetzungen Kürzeste Wege Bellmann keine Zyklen Dijkstra nichtnegative Bewertungen keine Zyklen negativer Länge keine Zyklen negativer Länge vom Startknoten v zu allen Nachfolgern von v vom Startknoten v zu allen Nachfolgern von v vom Startknoten v zu allen Nachfolgern von v von allen zu allen Knoten Bellmann-Ford-More Tripelalgorithmus Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Komplexität O(m) O(n2 ) (O(n log n + m)) O(nm) O(n3 ) Folie 49 Graphentheorie Kritische Wege in Netzplänen Def: Ein Netzplan ist ein azyklischer Digraph mit genau einer Quelle v0, einer Senke vn und Knotenbewertungen (Ereignisnetzplan: Tätigkeiten entsprechen den Knoten) oder Kantenbewertungen (Tätigkeitennetzplan: Tätigkeiten entsprechen den Kanten). Def: Ein kritischer (oder längster) Weg in einem Netzplan ist ein gerichteter Weg mit maximaler Summe der zu ihm gehörenden Knoten- bzw. Kantenbewertungen z . Jetzt: Ereignisnetzplan mit gegebenen Bewertungen ti ≥ 0 für alle vi ∈ V , wobei die Knoten topologisch sortiert sind: v0, v1 , . . . , vn, durch die Mengen der unmittelbaren Nachfolger P RED(v) und Vorgänger SU CC(v) für alle v ∈ V . Falls Quelle und Senke zusätzlich eingeführt werden müssen, wird t0 = 0 und tn = 0 gesetzt. Def: Zur Beschreibung von Netzplänen werden für alle vi ∈ V definiert: E frühestmögliche Anfangszeit tA f (vi ) und frühestmögliche Endzeit tf (vi ); E spätestmögliche Anfangszeit tA s (vi ) und spätestmögliche Endzeit ts (vi ). Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 50 Graphentheorie Vorwärtsrechnung Algorithmus: Vorwärtsrechnung zur Bestimmung des kritischen Weges Eingabe: Für alle vi ∈ V : P RED(vi ) und Bewertung ti . E Ausgabe: Für alle vi ∈ V : frühestmögliche Anfangs- und Endzeit tA f (vi ), tf (vi ); Gewicht des kritischen Weges z . E BEGIN tA f (vo ) = tf (vo ) = 0; FOR i := 1 TO n DO BEGIN E E A tA f (vi ) := max{ tf (vj ) | vj ∈ P RED(vi ) }; tf (vi ) := tf (vi ) + ti ; END; z := tE f (vn ); Der kritische Weg hat die Länge: z = tE f (vn ); END. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 51 Graphentheorie Rückwärtsrechnung Algorithmus: Rückwärtsrechnung zur Bestimmung des kritischen Weges Eingabe: Für alle vi ∈ V : SU CC(vi ), tA f (vi ) und Bewertung ti , Gewicht des kritischen Weges z ; E Ausgabe: Für alle vi ∈ V : spätestmögliche Anfangs- und Endzeit tA s (vi ) und ts (vi ); Menge M der Knoten, über die mindestens ein kritischer Weg führt. A BEGIN tE s (vn ) = z; ts (vn ) = z − tn ; M := {vo , vn }; FOR i := n − 1 DOWNTO 1 DO BEGIN A A E tE s (vi ) := min{ ts (vj ) | vj ∈ SU CC(vi ) }; ts (vi ) := ts (vi ) − ti ; A IF tA s (vi ) = tf (vi ) THEN M := M ∪ {vi }; END; E tA (v o ) := ts (vo ) = 0; s END. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 52 Graphentheorie Pufferzeiten Def: Jedem Knoten vi werden folgende Pufferzeiten zugeordnet: A totale Pufferzeit: P total (vi ) = tA s (vi ) − tf (vi ) E freie Pufferzeit: P f rei (vi ) = min{tA f (vj ) − tf (vi ) | vj ∈ SU CC(vi )} Satz 18. Ein gerichteter Weg von der Quelle v0 zu der Senke vn ist genau dann kritisch, wenn alle in dem Weg enthaltenen Knoten die totale Pufferzeit 0 haben. Merke: Eine Veränderung von ti um die totale Pufferzeit P total (vi ) hat keinen Einfluß auf den kritischen Weg. Merke: Der kritische Weg muß nicht eindeutig sein. Alle kritischen Wege lassen sich durch gezielte Suche in der Menge M bestimmen. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 53 Graphentheorie 10. Matchings auf bipartiten Graphen Gegeben: bipartiter Graph G = (I ∪ J, E); Gesucht: maximales Matching M ⊆ E . Satz 19. Heiratssatz von Philip Hall Auf einem bipartiten Graphen G = (I ∪ J, E) existiert genau dann ein Matching M mit |M | = |I|, wenn für alle I ∗ ⊆ I gilt: ˛ ˛ ˛S ˛ ˛ ˛ N (i)˛ ≥ |I ∗| (Hall-Bedingung). ˛ ˛i∈I ∗ ˛ Def: Die Matchingzahl β(G) und die Knotenüberdeckungszahl α(G) eines Graphen G = (V, E) sind definiert durch: β(G) = max{|M | | M ⊆ E ist Matching auf G} und α(G) = min{|V ∗| | V ∗ ⊆ V mit e ∩ V ∗ 6= ∅ ∀e ∈ E}. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 54 Graphentheorie Satz von König Satz 20. Für jeden Graphen gilt: β(G) ≤ α(G). Satz 21. Satz von König Für bipartite Graphen gilt: β(G) = α(G). Satz 22. Es sei G = (V, E) = (I ∪ J, E) ein bipartiter Graph und M ein Matching auf G. Weiter seien I ∗ ⊆ I, J ∗ ⊆ J Mengen von Knoten, die nicht mit einer Matchingkante inzidieren. Ferner sei F ⊆ G ein maximaler Wald (maximal als Teilgraph) mit den folgenden Eigenschaften: 1. Jeder Knoten j ∈ J , der in F liegt, hat in F die Valenz 2 und eine der beiden inzidierenden Kanten gehört zu M . 2. Jede Komponente aus F enthält einen Knoten aus I ∗. Dann gilt: M ist maximales Matching ⇔ kein Knoten aus J ∗ ist adjazent zu einem Knoten aus F . Bezeichnung: Im folgenden Algorithmus MAXMATCH bezeichne α(v) die Knotennummer von einem Knoten aus F , von dem v aus markiert wird. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 55 Graphentheorie Algorithmus MAXMATCH Algorithmus MAXMATCH Eingabe: bipartiter Graph G = (I ∪ J, E), Startmatching M , I ∗ ⊆ I : Menge der ungematchten Knoten in I , J ∗ ⊆ J : Menge der ungematchten Knoten in J ; Ausgabe: maximales Matching. BEGIN MARKE: Jeder Knoten i ∈ I ∗ bekommt Markierung α(i) = 0; REPEAT markiere j mit α(j) = i, wenn {i, j} ∈ E und i markiert ist; markiere i mit α(i) = j , wenn {i, j} ∈ M und j markiert ist; UNTIL ein Knoten j ∈ J ∗ wird gefunden OR kein Knoten kann mehr markiert werden; IF kein Knoten kann mehr markiert werden THEN maximales Matching liegt vor und STOP. ELSE BEGIN bilde zunehmenden Weg von j ∈ J ∗: j − α(j) − α(α(j)) − ... − 0; tausche im Weg Matching- und Nichtmatchingkanten; aktualisiere I ∗ und J ∗ und gehe zu MARKE END; END. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 56 Graphentheorie Bestimmung eines maximal gewichteten perfekten Matchings Gegeben: vollständiger bipartiter Graph G = (I ∪ J, E) mit |I| = |J| und Kantenbewertungen C = [cij ]n×n, wobei cij ∈ N0 Bewertung der Kante {i, j} ∈ E ist; Gesucht: maximal gewichtetes perfektes Matching M ∗: w(M ∗ ) = max{ M P cij } {i,j}∈M Def: Eine zulässige Knotenmarkierung des Kn,n = (I ∪ J, E) mit Kantenbewertungen cij ∀i ∈ I ∧ j ∈ J ist eine Funktion f : (I ∪ J) → N0 mit f (i) + f (j) ≥ cij ∀i ∈ I ∧ j ∈ J . Merke: einfachste zulässige Knotenmarkierung: f (i) = max{cij } ∀i ∈ I , f (j) = 0 ∀j ∈ J . j Def: Gf = (I ∪ J, E ∗) ist der Teilgraph des Kn,n mit: {ij} ∈ E ∗ ↔ f (i) + f (j) = cij . Satz 23. Sei f eine zulässige Knotenmarkierung des Kn,n mit gegebener Matrix C . Wenn Gf ein perfektes Matching M ∗ enthält, dann ist M ∗ maximal gewichtetes Matching auf Kn,n. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 57 Graphentheorie Algorithmus MAXGEWMATCH Algorithmus MAXGEWMATCH Eingabe: vollständiger bipartiter Graph G = (I ∪ J, E) mit |I| = |J| = n und C = [cij ]n,n; Ausgabe: maximal gewichtetes perfektes Matching auf G. BEGIN bestimme eine zulässige Knotenmarkierung f , den Graphen Gf und ein maximales Matching M auf Gf ; While M ist nicht perfekt DO S BEGIN bestimme I ′ ⊆ I mit |I ′| > | i∈I ′ N (i)| (Verletzung der Hall-Bedingung); S setze: S := I ′ und T := i∈I ′ N (i); bestimme df = min {f (i) + f (j) − cij } > 0 und ändere f (v): i∈S,j6∈T 8 für v ∈ S; < f (v) − df , f (v) + df , für v ∈ T ; f (v) = : f (v), sonst; aktualisiere Gf und bestimme ein maximales Matching M auf Gf END; END. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 58 Graphentheorie Matchings auf allgemeinen Graphen Satz 24. Satz von Tutte: Ein Graph G = (V, E) hat genau dann ein perfektes Matching, wenn q(G − S) ≤ |S| ∀S ⊆ V gilt, wobei q(G − S) die Anzahl der Komponenten mit ungerader Knotenanzahl (ungerade Komponenten) im Graphen G − S bezeichnet. Satz 25. Jeder 2-fach kantenzusammhängender kubischer Graph hat ein perfektes Matching. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 59 Graphentheorie Gallai-Edmonds Struktursatz Satz 26. Gallai-Edmonds Struktursatz: Es sei G = (V, E) ein schlichter Graph. DG sei die Menge aller Knoten aus V , zu denen es mindestens ein maximales Matching (M M ) gibt, das diesen Knoten nicht überdeckt. S Setze: AG = ( N (v)) \ DG und CG = V \ {AG ∪ DG }. Dann gilt: v∈DG a) ∀v ∈ AG : DG−v = DG und CG−v = CG . (Bei Entfernung des Knotens v ∈ AG ändert sich nichts an den Mengen CG−v , DG−v .) b) Der Graph G(CG ) besitzt ein perfektes Matching. c) Jede Komponente Di von G(DG ) ist ”faktorkritisch”, d.h. wenn man einen beliebigen Knoten v solcher Komponente Di wegläßt, so besitzt Di − v ein perfektes Matching. d) Jedes M M von G enthält ein perfektes Matching von G(CG ) und ein M M jeder Komponente von G(DG ). e) β(G) = 1/2 ∗ (|V | + |AG | − q(G − AG)). Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 60 Graphentheorie Berge-Formel Satz 27. Berge-Formel: Für einen schlichten Graphen G = (V, E) bezeichne q(G) die Anzahl der Komponenten von G mit ungerader Knotenzahl. Dann gilt: |V | − 2 ∗ β(G) = max(q(G − S) − |S|). S⊆V Komprimierung von G = (V, E) Satz 28. Gegeben seien G = (V, E) und ein Matching M0 in G. C sei ein Kreis der Länge 2k + 1, der k Kanten von M0 enthält, aber mit keiner weiteren Kante von M0 inzidiert. Weiter sei G′ der Graph, der entsteht, indem C zu einem Knoten komprimiert wird, d.h. V (G′ ) = V (G) \ V (C) ∪ {v0 }, v0 6∈ V (C) und E(G′ ) = E(G(V (G) \ V (C)) ∪ {{u, v0 }|u ∈ V (G) \ V (C) ∧ ∃{u, w} : w ∈ V (C)}). Dann gilt: M0 ist ein maximales Matching auf G ⇐⇒ M0′ := M0 \ E(C) ist ein M M in G′ . Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 61 Graphentheorie Optimalitätskriterium Satz 29. Es sei G = (V, E) gegeben. M0 sei ein Matching auf G und F ein maximaler Wald (maximal als Teilgraph) mit den folgenden Eigenschaften: 1. Jede Komponente von F enthält genau einen Knoten, der nicht von M0 überdeckt ist. Dieser heißt Wurzel der Komponente. 2. Knoten von F mit ungeradem Abstand von ihrer Wurzel heißen innere Knoten, die anderen heißen äußere Knoten. Jeder innere Knoten hat Valenz 2 in F und eine der beiden inzidierenden Kanten gehört zu M0 . Dann gilt: a) Es gibt keine Kante, die einen äußeren Knoten von F mit V (G) \ V (F ) verbindet. b) Falls zwei äußere Knoten in verschiedenen Komponenten von F adjazent sind, so ist M0 kein maximales Matching. c) Falls zwei äußere Knoten aus der gleichen Komponente von F adjazent sind, so läßt sich ein Kreis C in G finden, der nach Satz 28 komprimiert werden kann. d) Falls keine zwei äußeren Knoten von F in G adjazent sind, so ist M0 ein M M . Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 62 Graphentheorie Algorithmus nach Edmonds Algorithmus nach Edmonds Eingabe: G = (V, E) und Ausgangsmatching M0 auf G = (V, E); Ausgabe: maximales Matching M M . BEGIN Setze M M := M0 ; Konstruiere den zu M M gehörenden Wald F ; WHILE Es gibt nicht nur Kanten, die äußere Knoten mit inneren Knoten verbinden DO BEGIN IF Eine Kante verbindet zwei äußere Knoten in verschiedenen Komponenten von F THEN Vergrößere M M ; IF Eine Kante verbindet zwei äußere Knoten in der gleichen F -Komponente THEN Bestimme M0′ und C wie in Satz 28, kontrahiere G zu G′ und starte Algorithmus neu mit G′ und M M := M0′ ; END; IF Kontraktion des Graphen war notwendig THEN Erweitere M M auf G′ zu M M auf G; Gib M M aus; END. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 63 Graphentheorie 11. Flüsse in Netzwerken Def: Ein Netzwerk N = (V, E, C) ist ein Digraph G = (V, E) mit einer Quelle q und einer Senke s, wobei jeder Kante e eine Kapazität c(e) ∈ R+ 0 zugeordnet ist. Dabei soll s von q aus erreichbar sein. Merke. Ein Netzwerk N = (V, E, C) kann Zyklen enthalten. Def: Ein Fluß auf einem Netzwerk N ist eine Abbildung f : E → R+ 0 mit den folgenden Eigenschaften: a) Durch jeden Bogen fließt ein nichtnegativer Fluß, d.h. 0 ≤ f (e) ≤ c(e) ∀e ∈ E . P P b) Erhaltungssatz für Flüsse: ∀v ∈ V \ {q, s} gilt: f (e) = f (e). e=(a,v) e=(v,b) Merke: Der Gesamtfluß aus q ist gleich dem Gesamtfluß, der in s mündet: X X Wert des Flusses: w(f ) = f (e) = f (e). e=(q,a) Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel e=(b,s) Folie 64 Graphentheorie Max-Flow-Problem Def: Ein Max-Flow-Problem besteht in der Bestimmung eines maximalen Flusses, d.h. einem Fluß mit maximalem Wert, auf einem gegebenen Netzwerk N = (V, E, C). Min-Cut-Problem Def: Es sei V = S ∪ S , S ∩ S = ∅ eine Partition der Knotenmenge V mit q ∈ S , s ∈ S . Ein Schnitt (S, S) ist die Menge aller Kanten (u, v) ∈ E mit u ∈ S , v ∈ S . Kapazität eines Schnittes: c(S, S) = P c(e). e=(u,v) u∈S,v∈S Ein Schnitt mit kleinster Kapazität heißt Minimalschnitt. Def: Ein Min-Cut-Problem besteht in der Bestimmung eine Minimalschnittes auf einem gegebenen Netzwerk N = (V, E, C). Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 65 Graphentheorie Augmentierende Wege Satz 30. Gegeben sei ein Netzwerk N . Dann gilt für jeden Fluß f und jeden Schnitt (S, S): w(f ) ≤ c(S, S). Def: Ein augmentierender Weg von der Quelle q zu einem Knoten v ∈ V \ q auf einem Netzwerk N mit einem Fluß f ist ein Semiweg von q nach v , auf dem sich der Fluß f vergrößern läßt. Ein Semiweg auf N von der Quelle q zum Knoten v enthält Vorwärtskanten und Rückwärtskanten. Berechne: ff c(e) − f (e), wenn e Vorwärtskante ist; d = min . f (e), wenn e Rückwärtskante ist. Größerer Fluß ist konstruierbar durch: 8 < f (e) + d, wenn e Vorwärtskante ist; f (e) := f (e) − d, wenn e Rückwärtskante ist; : f (e), sonst. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 66 Graphentheorie Max-Flow - Min-Cut - Theorem Def: Die Mengen X, Y ⊆ V werden definiert durch: X = {q ∪ {v ∈ V | ∃ augmentierender Weg von q nach v} } und Y = V \ X . Satz 31. Max-Flow - Min-Cut - Theorem: Es sei N = (V, E, C) mit Quelle q und Senke s gegeben. Dann sind für einen Fluß f auf N folgende Beziehungen äquivalent: a) f ist ein maximaler Fluß. b) Es existiert kein augmentierender Weg von q nach s. c) (X, Y ) ist ein Schnitt. Wenn f maximal ist, so gilt w(f ) = c(X, Y ). Merke: Keine Aussage über die Existenz eines maximalen Flußes! Folgerung: Es sei N = (V, E, C) ein Netzwerk mit ganzzahligen Kapazitäten. Dann existiert ein maximaler Fluß f : E → N0 und ein minimaler Schnitt (X, Y ) mit w(f ) = c(X, Y ). Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 67 Graphentheorie Matchings und Flüsse Gegeben: Bipartiter Graph G = (I ∪ J, EB ). Gesucht: Maximales Matching auf G. Konstruiere das Netzwerk N = (V, E, C), wobei c(e) = 1 ∀e ∈ E und V = I ∪ J ∪ {q, s}, E = { S {(q, i)}} ∪ { i∈I S i∈I,j∈J {(i, j)}} ∪ { S {(j, s)}}. j∈J Dann gilt: a) Ein maximales Matching auf G entspricht einem maximalen Fluß auf N mit: {i, j} ist Matchingkante auf G ↔ f (e = (i, j)) = 1 auf N . b) Eine minimale Knotenüberdeckung auf G entspricht einem minimalem Schnitt (X, Y ) auf N . Im folgendem Algorithmus werden die Knoten mit (µ, d(v)) markiert, wenn von q nach v ein augmentierender Weg existiert. Dabei ist µ der direkte Nachbar von v , von dem aus v markiert wurde und d(v) die Flußvergrößerung auf dem Semiweg von q nach v . Die Quelle q erhält die Markierung (−, ∞). Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 68 Graphentheorie Algorithmus von Ford/Fulkerson Algorithmus von Ford/Fulkerson Eingabe: Netzwerk N = (V, E, C); Ausgangsfluß f . Ausgabe: Maximaler Fluß f auf N . S1 : Markiere die Quelle q mit (−, ∞). S2 : Suche einen Knoten v , der entweder Eigenschaft a) oder b) hat: a) e = (i, v) und i ist bereits markiert und c(e) − f (e) > 0. b) e = (v, j) und j ist bereits markiert und f (e) > 0. Wenn kein solcher Knoten existiert =⇒ S3, sonst markiere v mit: im Fall a) (i, d(v)), d(v) = min{d(i), c(e) − f (e)} oder im Fall b) (j, d(v)), d(v) = min{d(j), f (e)}; gehe zu S2; S3 : Falls die Senke s nicht markiert wurde: maximaler Fluß liegt vor =⇒STOP. sonst: S4 : Bestimme8 einen augmentierenden Weg rückwärts von s 9 nach q , berechne neuen Fluß: f (e) + d(s) , falls e Vorwärtskante < = f (e) = und gehe zu S1; f (e) − d(s) , falls e Rückwärtskante : ; f (e) , sonst Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 69 Graphentheorie Edmonds/Karp Algorithmus Merke: Der Algorithmus von Ford/Fulkerson ist pseudopolynomial, d.h. die Zeitkomplexität hängt von den Werten der Eingabeparameter ab. Verbesserung nach Edmonds/Karp: Im Algorithmus von Ford/Fulkerson wird nur S2 abgeändert: Falls mehrere Knoten mit der Eigenschaft a) oder b) existieren, wähle denjenigen, der selbst am frühesten markiert wurde. Idee zur Verbesserung Es gehen zu viele Informationen wieder verloren: Wie ist es möglich, in einem Schritt mehrere augmentierende Wege zu berücksichtigen? Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 70 Graphentheorie Konstruktion eines Hilfsnetzwerkes NH (f ) = (V ∗, E ∗, C ∗) Eigenschaft: Alle augmentierenden Wege auf NH haben nur Vorwärtskanten. ∗ N = (V, E, C), f −→ NH (f ) = (V ∗, E ∗, C ∗). S1: Setze V ∗ = V ; S2: Konstruiere zu jedem Bogen e = (i, j) ∈ E Bögen e∗ ∈ E ∗ nach folgender Vorschrift: a) Wenn 0 < f (e) < c(e), dann setze e∗1 = (i, j) ∈ E ∗ mit c∗(e∗1 ) = c(e) − f (e) und e∗2 = (j, i) ∈ E ∗ mit c∗(e∗2 ) = f (e). b) Wenn f (e) = 0, dann setze e∗ = (i, j) ∈ E ∗ mit c∗(e∗ ) = c(e). c) Wenn f (e) = c(e), dann setze e∗ = (j, i) ∈ E ∗ mit c∗(e∗ ) = f (e). ′ Weiter: Reduziere NH (f ) auf das geschichtete Netzwerk NH (f ), das alle Bögen auf kürzesten augmentierenden Wegen und die mit ihnen inzidierenden Knoten enthält. Die Menge aller Knoten ′ mit Abstand k von der Quelle q wird als Schicht k in NH (f ) bezeichnet. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 71 Graphentheorie Konstruktion des geschichteten Netzwerkes ′ Algorithmus zur Bestimmung von NH (f ) Eingabe: Hilfsnetzwerk NH (f ) = (V ∗, E ∗, C ∗); ′ Ausgabe: Geschichtetes Netzwerk NH (f ) = (V ′ , E ′, C ′ ). BEGIN S0 := {q}; k = 0; E ′ = ∅; REPEAT k := k + 1; Setze Sk als Menge der unmittelbaren Nachfolger aller Knoten aus Sk−1 in NH (f ) an; ′ Nimm die Knoten aus Sk und alle Bögen zwischen Sk−1 und Sk in NH (f ) auf; ′ UNTIL (s ∈ V oder Sk = ∅) IF s ∈ V ′ THEN BEGIN Markiere s; REPEAT Markiere alle Vorgänger der bereits markierten Knoten UNTIL q ist markiert; ′ Lösche alle nichtmarkierten Knoten und die inzidierenden Kanten aus NH (f ) ; END; END. Merke: Wenn s ∈ / V ′, dann ist der Fluß f maximal. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 72 Graphentheorie ′ Bestimmung eines blockierenden Flußes f ′ auf NH (f ) ′ Def: Ein Fluß f ′ auf NH (f ) heißt blockierender Fluß, wenn es nach Entfernung aller Kanten e ′ ′ mit c (e) = f (e) (gesättigte Kanten) keinen Weg mehr von q → s gibt. ′ ′ Merke: Ein blockierender Fluß auf NH (f ) ist nicht notwendig maximal auf NH (f ). Algorithmus: Suche nach blockierendem Fluß ′ Eingabe: NH (fi ) = (V ′ , E ′, C ′ ); ′ Ausgabe: blockierender Fluß f ′ auf NH (f ). ′ BEGIN Setze f (e) := 0 für alle e ∈ E ′; REPEAT Bestimme einen Weg W von q nach s; d := min{c′ (e)|e ∈ W }: FORALL e ∈ W DO BEGIN c′(e) := c′(e) − d; f ′ (e) := f ′ (e) + d; IF c′(e) = 0 THEN Entferne e aus E ′; END; FOR k := 1 TO Anzahl der Schichten DO Entferne alle Knoten aus Sk mit Eingangsvalenz 0 und alle davon ausgehenden Kanten. UNTIL Knoten s wird entfernt; END. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 73 Graphentheorie Dinic Algorithmus zur Lösung des Max-Flow-Problems Dinic-Algorithmus für das Flußproblem Eingabe: Netzwerk N = (V, E, C); Ausgabe: maximaler Fluß auf N . ′ BEGIN Bestimme Ausgangsfluß f0,w(f0 ) und NH (f0 ); k := 0; ′ WHILE s gehört zu NH (fk ) DO BEGIN ′ Bestimme einen blockierenden Fluß f ′ auf NH (fk ) mit w′ (f ′ ); ′ fk+1 wird durch Summierung von fk und f erhalten; w(fk+1 ) := w(fk ) + w′ (f ′ ); k := k + 1; ′ Bestimme das zu fk gehörende geschichtete Netzwerk NH (fk ); END; Aktueller Fluß ist maximal; END. ′ ′ Merke: NH (fi ) hat mehr Schichten als NH (fi−1). Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 74 Graphentheorie Ideen von Malhotra/Kumar/Maheswari Ziel: Algorithmus für das Flußproblem mit Zeitaufwand O(n3 ). ′ Ausgang: Geschichtetes Netzwerk NH (f ) zu einem Ausgangsfluß f ′ Def: Das Potential p(v) eines Knotens v in NH (f ) ist definiert durch in out in p(v) := min{p (v), p (v)}, wobei p (v) die Summe der Kapazitäten aller in v eingehenden Bögen und pout(v) die Summe der Kapazitäten aller aus v ausgehenden Bögen ergibt. Bestimmung des blockierenden Flusses durch Wiederholung der Schritte: - Bestimme einen Knoten v ∗ mit kleinstem Potential p(v ∗ ); - Bestimme durch Vorwärts- und Rückwärtsrechnung von v ∗ aus einen Fluß auf einem Weg von der Quelle q über v ∗ zur Senke s mit dem Wert p(v ∗ ); - Aktualisiere dabei die Kapazitäten und die Potentiale (Streichung von Kanten mit 0-Kapazität und Knoten mit 0-Potential, überflüssige Knoten werden gestrichen); Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 75 Graphentheorie Übersicht zu den Flußalgorithmen Algorithmus Aufwand Idee Ford/Fulkerson pseudopolynomial augmentierende Wege Edmonds/Karp O(|V ||E|2) kürzeste augmentierende Wege Dinic O(|V |2|E|) kürzeste augmentierende Wege, geschichtetes Hilfsnetzwerk, blockierende Flüsse Malhotra/Kumar/Maheswari O(|V |3) wie Dinic, dabei aber blockierenden Fluß durch Potentiale effizienter ermitteln Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 76 Graphentheorie 12. Die Mengerschen Sätze Satz 32. Es sei N = (V, E, C) ein Netzwerk mit einer Quelle q und einer Senke s, mit cij = 1 ∀(i, j) ∈ E . Dann gilt: a) Der Wert des maximalen Flußes w(f ∗ ) in N ist gleich der maximalen Anzahl r von kantendisjunkten q − s Wegen. ∗ b) Die Kapazität eines minimalen Schnittes c(S ∗, S ) in N ist gleich der minimalen Anzahl t von Kanten, deren Entfernung alle q − s Wege in N zerstört. Satz 33. 1. Mengerscher Satz: Es seien u und v zwei nichtadjazente Knoten in einem Digraphen G = (V, E). Dann ist die maximale Anzahl von kantendisjunkten u − v Wegen in G gleich der minimalen Anzahl von Kanten, deren Entfernung alle u − v Wege in G zerstört. Satz 34. 2. Mengerscher Satz: Es seien u, v zwei nichtadjazente Knoten eines (ungerichteten) Graphen G = (V, E). Dann ist die maximale Anzahl kantendisjunkter u − v Wege in G gleich der minimalen Anzahl von Kanten, deren Entfernung auf G alle u − v Wege in G zerstört. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 77 Graphentheorie Knotenversionen der Mengerschen Sätze Satz 35. 3. Mengerscher Satz: Es seinen u, v zwei nichtadjazente Knoten in einem Digraphen G = (V, E). Dann ist die maximale Anzahl von knotendisjunkten u − v Wegen in G gleich der minimalen Anzahl von Knoten, deren Entfernung alle u − v Wege in G zerstört. Satz 36. 4. Mengerscher Satz: Es seien u, v zwei nichtadjazente Knoten in einem (ungerichteten) Graphen. Dann ist die maximale Anzahl von knotendisjunkten u − v Wegen in G gleich der minimalen Anzahl von Knoten, deren Entfernung alle u − v Wege in G zerstört. Def: Die Mächtigkeit der kleinsten Knotenmenge (Kantenmenge), die alle u − v Wege in G zerstört, heißt lokale Knotenzusammenhangszahl (Kantenzusammenhangszahl) von G. Knotenzusammenhangszahl von G: kleinste lokale Knotenzusammenhangszahl von G. Kantenzusammenhangszahl von G: kleinste lokale Kantenzusammenhangszahl von G. Def: Ein Graph G heißt r -fach knoten- bzw. kantenzusammenhängend, wenn er für beliebige nichtadjazente Knoten u, v mindestens r Wege von u nach v enthält. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 78 Graphentheorie 13. Färbungen auf Graphen Ausgang: Schlichter Graph G = (V, E), Farbmenge F = {1, 2, . . . , r}. Def: Eine Knotenfärbung ist eine Funktion f : V → F so, daß für alle v ∈ V mit {u, v} ∈ E gilt: f (u) 6= f (v). Eine Kantenfärbung ist eine Funktion f : E → F so, daß für alle e1 , e2 ∈ E mit e1 adjazent zu e2 gilt: f (e1 ) 6= f (e2 ). Die chromatische Zahl χ(G) von G ist die kleinste Anzahl von Farben einer Knotenfärbung. Der chromatische Index χ′(G) von G ist die kleinste Anzahl von Farben einer Kantenfärbung. Merke: Eine Kantenfärbung von G geht in eine Knotenfärbung im Kantengraphen L(G) über: χ′(G) = χ(L(G)), d.h. G ist genau dann k-kantenfärbbar, wenn L(G) k-knotenfärbbar ist. Satz 37. Die Bestimmung von χ(G) und χ′(G) liegt in NP-hard. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 79 Graphentheorie Das chromatische Polynom Gegeben: Schlichter Graph G = (V, E); Gesucht: Anzahl von Knotenfärbungen von G mit k Farben: PG(k). Lemma 1. Für G = Kn mit |V | = n gilt: PG(k) = k(k − 1) . . . (k − n + 1). Lemma 2. Für G = (V, E) mit |E| = 0, |V | = n gilt: PG(k) = kn . Satz 38. Gegeben sei ein schlichter Graph G = (V, E) und k ∈ N. Die Anzahl der Knotenfärbungen von G mit k Farben ist ein Polynom in k: PG (k). Eigenschaft: Die Bestimmung des chromatischen Polynoms liegt in NP-hard. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 80 Graphentheorie Exakte Algorithmen zur Bestimmung von χ(G) (1) Knotensequenzielle Enumeration Eingabe: Schlichter Graph G = (V, E) und Knotensequenz v1 , . . . , vn; Ausgabe: Alle zulässigen Färbungen der Knoten; BEGIN WHILE Nicht alle Knoten sind gefärbt DO BEGIN Nimm den nächsten Knoten der Sequenz und weise ihm nacheinander alle schon benutzten Farben und eine neue Farbe zu; Streiche alle unzulässigen Färbungen; END; END. Merke: Tiefe des Baumes: Anzahl der Knoten; Maximale Anzahl der Nachfolger in Stufe k: k + 1. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 81 Graphentheorie Exakte Algorithmen zur Bestimmung von χ(G) (2) Farbsequenzielle Enumeration Eingabe: Schlichter Graph G = (V, E) und Farbsequenz 1,2,..,k; Ausgabe: Alle zulässigen Färbungen der Knoten. BEGIN j := 1; Es sei Wj die Menge der ungefärbten Knoten in Stufe j ; WHILE Wj 6= ∅ DO BEGIN Bestimme alle maximal unabhängigen Knotenmengen in dem von Wj induzierten Teilgraphen mit den Knoten v1j , v2j , .., vrj ; j Färbe alle Knoten einer solchen Menge mit der Farbe j ; Bestimme für jede dieser Möglichkeiten Wj+1 ; j := j + 1; END; END. Merke: Die Tiefe des Baumes ist χ(G). Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 82 Graphentheorie Eigenschaften der Knotenfärbung Satz 39. Es gilt: χ(Kn) = n, χ(Km,n) = 2, χ(C2n ) = 2 für n ≥ 1, χ(C2n+1 ) = 3 für n ≥ 1. Satz 40. Ein Graph ist genau dann 2-färbbar, wenn er keine Kreise ungerader Länge enthält. Merke: Ist der Graph G nicht zusammenhängend, so gilt χ(G) = max {χ(Gi )}, wobei 1≤i≤l G1 , .., Gl die Komponenten von G sind. Analoge Überlegung: • G sei zusammenhängend, und es existiert eine trennende Knotenmenge S , die einen vollständigen Untergraphen Kr aufspannt. Nach Entfernung der Knotenmenge S aus V entstehen l Komponenten mit den Knotenmengen V1, . . . Vl . Gi sei der von Vi ∪ {S} induzierte Untergraph von G, i = 1, . . . , l. Dann gilt: χ(G) = max {χ(Gi )}. 1≤i≤l Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 83 Graphentheorie Naiver Knotenfärbealgorithmus Naive Knotenfärbung Eingabe: Schlichter Graph G = (V, E) und Knotensequenz v1 , v2 , . . . , vn; Ausgabe: Für alle Knoten v ∈ V : Farbe f (v). BEGIN FOR j := 1 TO n DO Färbe vj mit der kleinsten zur Verfügung stehenden Farbe: f (vj ) = min{i ∈ N | f (vk ) 6= i für alle vk mit vk ∈ N (vj ) ∧ k < j}; END. Def: δ(G) ist die Minimal- und ∆(G) ist die Maximalvalenz der Knoten von G. Folgerung: Es gilt: χ(H) ≤ χ(G) ≤ ∆(G) + 1, wobei H ein beliebiger induzierter Teilgraph von G ist. Satz 41. Sei G ein schlichter Graph und H ein beliebiger induzierter Teilgraph von G. Dann gilt χ(G) ≤ max{ δ(H) } + 1. H Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 84 Graphentheorie Schranken für die chromatische Zahl eines Graphen Satz 42. Brooks: Es sei G ein zusammenhängender Graph mit |V | = n ≥ 2 Knoten und Maximalgrad △(G). Dann gilt: 1. χ(G) = △(G) + 1 für G = Kn und G = C2n−1 , 2. χ(G) ≤ △(G) sonst. Einfachste Schranken für χ(G): a) χ(G) ≥ ω(G), wobei ω(G) die Anzahl der Knoten einer größten Clique in G ist. b) χ(G) ≥ ist. |V | α(G) , wobei α(G) die Anzahl der Knoten einer größten unabhängigen Knotenmenge Merke: Beide Schranken können beliebig schlecht werden! Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 85 Graphentheorie Sequenzielle Heuristiken zur Knotenfärbung Greedy-Methode: Bestimme eine Knotensequenz v1 , .., vn und wende naive Knotenfärbung an! Zeitaufwand: O(|V |2) Lemma 3. Sei W eine Sortierung der Knoten und χ(G, W ) sei die mit der Greedy-Methode erhaltene Anzahl von Farben. Dann gilt: χ(G) ≤ χ(G, W ) ≤ △(G) + 1. Merke: Es gibt eine Sortierung W ∗ mit χ(G, W ∗) = χ(G). Einige statische und dynamische Sortierungen: RO: LFD: SLD: SD: GSD: zufällig, zuerst der Knoten mit der größten Valenz, Knoten mit kleinster Anzahl schon gefärbter Nachbarn, Knoten mit größter Anzahl verschieden gefärbter Nachbarn, Knoten mit größter Farbanzahl bereits gefärbter Nachbarn. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 86 Graphentheorie Algorithmus AMIS (approximately maximum independent set) Algorithmus AMIS Eingabe: Schlichter Graph G = (V, E) und Farbsequenz 1,2,..,k; Ausgabe: Für alle Knoten v ∈ V : Farbe f (v). BEGIN i := 0; Es sei W die Menge der ungefärbten Knoten; W := V ; WHILE W 6= ∅ DO BEGIN i := i + 1; U := W ; WHILE U 6= ∅ DO BEGIN Wähle einen Knoten u ∈ U ; f (u) := i; W := W \ {u}; U := U \ {u} \ N (v); END; END; END. Merke: Der Zeitaufwand beträgt O(n2 ). Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 87 Graphentheorie Gewichtete Knotenfärbung (1) Gegeben: Schlichter Graph G = (V, E), Farbmenge F = {1, . . . , k}, für alle v ∈ V : Gewicht w(v) ∈ N; Gesucht: Für alle v ∈ V : Farbmenge F ∗(v) ⊆ F mit |F ∗| = w(v) und F ∗(v) ∩ F ∗ (u) = ∅, wenn {u, v} ∈ E . Die minimale Anzahl der benötigten Farben wird mit χweight bezeichnet. Sequenzielle gewichtete Knotenfärbung Eingabe: Schlichter Graph G = (V, E), Knotensequenz v1 , . . . , vn , für alle v ∈ V : w(v); Ausgabe: Farbmengen F ∗(v) für alle Knoten v ∈ V . BEGIN FOR j := 1 TO n DO Bestimme F ∗(vj ) mit kleinstmöglichem größten Element so, daß F ∗(vj ) ∩ F ∗(vk ) = ∅ ∀ k ∈ N (vj ) ∧ k < j ; END. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 88 Graphentheorie Gewichtete Knotenfärbung (2) Weight Coloring Eingabe: Schlichter Graph G = (V, E), Farbsequenz 1, 2, . . . , b, für alle v ∈ V : w(v); Ausgabe: Farbmengen F ∗(v) für alle Knoten v ∈ V . BEGIN k := 1; l1 := 1; REPEAT BEGIN Bestimme eine unabhängige Knotenmenge in dem durch die Knoten mit positivem Gewicht induzierten Untergraphen von G wie im Algorithmus AMIS, wähle dabei bevorzugt Knoten mit größtem Gewicht; Berechne r := min w(v); v∈Sk Färbe alle Knoten aus Sk mit den Farben lk , lk + 1, . . . , lk + r − 1; Aktualisiere für alle Knoten v ∈ Sk : w(v) := w(v) − r ; k := k + 1; lk := lk−1 + r ; END; P UNTIL w(v) = 0; v∈V END. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 89 Graphentheorie Intervallknotenfärbung (1) Gegeben: Schlichter Graph G = (V, E), Farbmenge F = {1, . . . , k}, für alle v ∈ V : Gewicht w(v) ∈ N; Gesucht: Für alle v ∈ V : Farbmenge I(v) = {l(v), l(v) + 1, . . . , l(v) + w(v) − 1} ⊆ F mit I(v) ∩ I(u) = ∅, wenn {u, v} ∈ E . Die minimale Anzahl der benötigten Farben wird mit χintcol bezeichnet. Sequenzielle Intervallfärbung der Knoten Eingabe: Schlichter Graph G = (V, E), Knotensequenz v1 , . . . , vn , für alle v ∈ V : w(v); Ausgabe: Für alle Knoten v ∈ V : Farbmengen I(v). BEGIN FOR j := 1 TO n DO Bestimme I(vj ) mit kleinstmöglichem größten Element so, daß I(vj ) ∩ I(vk ) = ∅ ∀ k ∈ N (vj ) ∧ k < j ; END. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 90 Graphentheorie Intervallknotenfärbung (2) Interval Coloring Eingabe: Schlichter Graph G = (V, E), Farbsequenz 1, 2, . . . , b, für alle v ∈ V : w(v); Ausgabe: Farbmengen I(v) für alle Knoten v ∈ V . BEGIN k := 1; l1 := 1; REPEAT BEGIN Bestimme eine unabhängige Knotenmenge Sk in dem durch die Knoten mit positivem Gewicht induzierten Untergraphen von G wie im Algorithmus AMIS, wähle dabei bevorzugt Knoten mit größtem Gewicht; Berechne r := max w(v); v∈Sk Färbe alle Knoten v ∈ Sk mit den Farben lk , lk + 1, . . . , lk + w(v) − 1; Aktualisiere für alle Knoten v ∈ Sk : w(v) := 0; k := k + 1; lk := lk−1 + r ; END; P UNTIL w(v) = 0; v∈V END. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 91 Graphentheorie Spezielle Knotenfärbungsprobleme Problem HARMCOL (harmonic coloring): Gegeben: Ein schlichter Graph G = (V, E) und k ∈ N. Frage: Existiert eine k-Färbung der Knoten so, daß jedes Paar von Farben der Endknoten jeder Kante höchstens einmal auftritt? Problem LINEDISCOL (line-distinguishing coloring): Gegeben: Ein schlichter Graph G = (V, E) und k∗ ∈ N. Frage: Existiert eine nicht notwendig zulässige k∗-Färbung der Knoten so, daß jedes Paar von Farben der Endknoten jeder Kante höchstens einmal auftritt? Lemma 4. In jeder LINEDISCOL-Färbung eines Graphen G sind zwei Knoten mit derselben Farbe entweder adjazent oder sie besitzen mindestens den Abstand drei. Satz 43. LINEDISCOL liegt in NP-complete. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 92 Graphentheorie Kantenfärbungsprobleme Eigenschaft: Sind die Kanten eines schlichten Graphen (zulässig) gefärbt, dann gehören alle gleichgefärbten Kanten zu einem Matching. Idee einer Heuristik: Bestimme Schritt für Schritt elementefremde Matchings und färbe die Kanten jedes Matchings mit einer anderen Farbe. Satz 44. Vising: Für einen schlichten Graphen G gilt: △(G) ≤ χ′ (G) ≤ ∆(G) + 1. Merke: Die Menge aller schlichten Graphen zerfällt in die Klasse aller Graphen mit χ′(G) = △(G) und in die Klasse aller Graphen mit χ′(G) = △(G) + 1. Merke: Sind die Kanten mit einer natürlichen Zahl gewichtet, werden analog zur Knotenfärbung auch gewichtete Kantenfärbung und Intervallkantenfärbung betrachtet. Eigenschaft: Das gewichtete Kantenfärbungsproblem auf bipartiten Graphen ist in polynomialer Zeit lösbar. Das Intervallkantenfärbungsproblem auf bipartiten Graphen liegt in NP-hard. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 93 Graphentheorie Totale Färbung von Graphen Def: Eine Färbung der Knoten und Kanten eines schlichten Graphen G , wobei sowohl adjazente Knoten, als auch adjazente Kanten als auch inzidierende Knoten und Kanten verschieden gefärbt sind, heißt totale Färbung von G. Die kleinste Zahl notwendiger Farben wird mit χ′′ (G) bezeichnet. Merke: Es gilt: ∆(G) + 1 ≤ χ′′(G). Vermutung: △(G) + 1 ≤ χ′′(G) ≤ △(G) + 2. Satz 45. Sei G = (V, E) ein schlichter Graph und k ≥ 1, k! ≥ |V |. Dann gilt: χ′′ (G) ≤ ∆(G) + 2 + k. Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 94 Graphentheorie Perfekte Graphen Def: Ein Graph G = (V, E) heißt perfekt, wenn ω(H) = χ(H) für alle induzierten Untergraphen H von G gilt. Merke: - Bipartite Graphen und ihre Komplementgraphen sind perfekt. - Alle Kantengraphen bipartiter Graphen und ihre Komplementgraphen sind perfekt. - Ungerade Kreise mit |V | ≥ 5 und ihre Komplementgraphen sind nicht perfekt. Perfekte Graphen - Vermutung von Berge: Ein Graph ist genau dann perfekt, wenn sein Komplementgraph perfekt ist. Beweis der Richtigkeit von Lovasz (1972) Starke Perfekte Graphen - Vermutung: Ein Graph ist genau dann perfekt, wenn weder er noch sein Komplementgraph Kreise ungerader Länge ≥ 5 als induzierte Untergraphen enthalten. War seit 40 Jahren offen, im Mai 2002: Maria Chudnovsky und Paul Seymour (Beweis auf 148 Seiten) Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 95 Graphentheorie Comparability Graphen Def: Unter der Orientierung eines ungerichteten Graphen G = (V, E) versteht man einen spannenden Teilgraphen von G, der von jeder Kante e = {i, j} ∈ E genau einen der Bögen (i, j), (j, i) enthält. Def: Ein Graph G = (V, E) ist ein Vergleichbarkeitsgraph oder Comparability Graph, wenn er eine transitive Orientierung besitzt, d.h. im Digraphen gilt: mit (u, v), (v, w) ∈ E ist auch (u, w) ∈ E . Merke: Aus einem azyklischen Digraphen G = (V, E) läßt sich sofort ein Vergleichbarkeitsgraph konstruieren: 1. Bilde die transitive Hülle, d.h. füge für alle u, v aus V , bei denen ein gerichteter Weg von u → v existiert, die Kante (u, v) hinzu. 2. Der zugehörende Semigraph ist ein Vergleichbarkeitsgraph. Satz 46. Vergleichbarkeitsgraphen sind perfekt, d.h. es gilt: ω(G) = χ(G). Otto-von-Guericke Universität Magdeburg/FMA/IAG/Bräsel Folie 96