Page 1

9. Februar 2006

Graphen und Algorithmen 1 Skript zur Vorlesung im Wintersemester 2005/2006 Stefan Hougardy


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

i

Inhaltsverzeichnis 1

2

3

4

Grundlagen (Vorlesung 1–4)

1

1.1

Die Br¨ucken von K¨onigsberg und Steinerb¨aume im VLSI-Design . . . . . . . .

1

1.2

Graph, Nachbarschaft, Grad, Isomorphie, Teilgraphen . . . . . . . . . . . . . .

3

1.3

Clique, chromatische Zahl, Wege, Pfade, Kreise . . . . . . . . . . . . . . . . .

6

1.4

W¨alder und B¨aume . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

8

1.5

Grundlagen der Komplexit¨atstheorie . . . . . . . . . . . . . . . . . . . . . . . 11

1.6

Repr¨asentation von Graphen im Computer . . . . . . . . . . . . . . . . . . . . 15

1.7

Tiefensuche und Breitensuche . . . . . . . . . . . . . . . . . . . . . . . . . . 16

Kurzeste ¨ Wege (Vorlesung 5–8)

22

2.1

Der Algorithmus von Dijkstra . . . . . . . . . . . . . . . . . . . . . . . . . . 22

2.2

Amortisierte Laufzeitanalyse . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

2.3

Fibonacci-Heaps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

2.4

Laufzeitanalyse der Fibonacci-Heap Operationen . . . . . . . . . . . . . . . . 30

2.5

Graphen mit negativen Kantengewichten . . . . . . . . . . . . . . . . . . . . . 34

2.6

K¨urzeste Wege zwischen allen Knotenpaaren . . . . . . . . . . . . . . . . . . 38

Minimal spannende Ba¨ ume (Vorlesung 9–13)

40

3.1

Der Algorithmus von Kruskal

. . . . . . . . . . . . . . . . . . . . . . . . . . 40

3.2

Der Algorithmus von Prim . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

3.3

Matroide und der Greedy-Algorithmus . . . . . . . . . . . . . . . . . . . . . . 42

3.4

Steinerb¨aume: Grundlegende Definitionen und NP-Vollst¨andigkeit . . . . . . . 48

3.5

Der Algorithmus von Kou, Markowsky und Berman . . . . . . . . . . . . . . . 49

3.6

Mehlhorns Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

Flusse ¨ und Zusammenhang (Vorlesung 14–16)

55

4.1

Grundlegende Definitionen, Fl¨usse maximalen Wertes, Schnitte . . . . . . . . . 55

4.2

Restnetzwerke, augmentierende Pfade . . . . . . . . . . . . . . . . . . . . . . 56


9. Februar 2006

5

6

Hougardy: Graphen und Algorithmen 1, WS2005/2006

ii

4.3

Max-Flow-Min-Cut-Theorem, Ford-Fulkerson-Algorithmus

4.4

Der Algorithmus von Dinic . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

4.5

k-facher Zusammenhang, S¨atze von Menger . . . . . . . . . . . . . . . . . . . 64

4.6

Berechnung von Kanten- und Knotenzusammenhangszahl

4.7

Der Algorithmus von Nagamochi und Ibaraki . . . . . . . . . . . . . . . . . . 66

Matching (Vorlesung 17–19)

. . . . . . . . . . 58

. . . . . . . . . . . 65

69

5.1

Grundlegende Definitionen, maximale Matchings, gr¨oßte Matchings in bipartiten Graphen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

5.2

Augmentierende Pfade, Satz von Berge, ungarische W¨alder, gr¨oßte Matchings in bipartiten Graphen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

5.3

Der Algorithmus von Hopcroft und Karp . . . . . . . . . . . . . . . . . . . . . 73

5.4

Knoten¨uberdeckungszahl, Satz von K¨onig, stabile Mengen in bipartiten Graphen 75

5.5

Schwerste Matchings in bipartiten Graphen . . . . . . . . . . . . . . . . . . . 77

5.6

Die S¨atze von Hall und K¨onig . . . . . . . . . . . . . . . . . . . . . . . . . . 78

5.7

Defektformel, S¨atze von Tutte und Petersen . . . . . . . . . . . . . . . . . . . 80

Eulertouren, Hamiltonkreise und das TSP (Vorlesung 20-22)

83

6.1

Charakterisierung Eulerscher Graphen . . . . . . . . . . . . . . . . . . . . . . 83

6.2

O(m)-Algorithmen zum Erkennen Eulerscher Graphen und Finden von Eulerkreisen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

6.3

Hamiltonkreise, NP-Vollst¨andigkeit, Algorithmus zum Finden von Hamiltonkreisen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

6.4

Hinreichende Bedingungen f¨ur Hamiltonkreise: Bondy und Chv´atal, Ore, Dirac, Chv´atal und Erd˝os . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

6.5

Das Traveling Salesman Problem, NP-Vollst¨andigkeit . . . . . . . . . . . . . . 88

6.6

Optimierungsprobleme, Nichtapproximierbarkeit von TSP . . . . . . . . . . . 89

6.7

Die G¨ute der Nearest-Neighbor-Heuristik . . . . . . . . . . . . . . . . . . . . 90

6.8

Die Minimum Spanning Tree Heuristik . . . . . . . . . . . . . . . . . . . . . 92

6.9

Die Christofides-Heuristik . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93


9. Februar 2006

7

8

Hougardy: Graphen und Algorithmen 1, WS2005/2006

F¨arbungen (Vorlesung 23–26)

iii

95

7.1

Grundlegende Definitionen, NP-Vollst¨andigkeit . . . . . . . . . . . . . . . . . 95

7.2

Der Greedy-Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

7.3

Der Satz von Brooks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

7.4

Graphen mit hoher chromatischer Zahl und hohem girth, Mycielski-Graphen, Satz von Erd˝os . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

7.5

Nichtapproximierbarkeit der chromatischen Zahl auf 4/3 . . . . . . . . . . . . 99

7.6

Approximationsalgorithmen f¨ur die chromatische Zahl . . . . . . . . . . . . . 100

7.7

Der chromatische Index, Satz von Vizing

7.8

Perfekte Graphen, triangulierte Graphen . . . . . . . . . . . . . . . . . . . . . 107

7.9

Der Perfekte Graphen Satz . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108

Planarit¨at (Vorlesung 27–29)

. . . . . . . . . . . . . . . . . . . . 104

112

8.1

Grundlegende Definitionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

8.2

¨ Aquivalenz von Einbettungen, Satz von Whitney . . . . . . . . . . . . . . . . 112

8.3

Die Eulersche Formel, maximal planare Graphen, Nichtplanarit¨at von K 5 und K3,3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113

8.4

4-Farbensatz, 5-Farbensatz, Kempeketten . . . . . . . . . . . . . . . . . . . . 116

8.5

Der Satz von Kuratowski . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120

8.6

Graphen h¨oheren Geschlechts . . . . . . . . . . . . . . . . . . . . . . . . . . 124

8.7

Die chromatische Zahl von Fl¨achen h¨oheren Geschlechts . . . . . . . . . . . . 128

Index

131


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

1

1 Grundlagen (Vorlesung 1–4) 1.1 Die Brucken ¨ von K¨onigsberg und Steinerb¨aume im VLSI-Design Die Anf¨ange der Graphentheorie gehen bis zur¨uck in das Jahr 1736, als Leonhard Euler eine L¨osung f¨ur das sogenannte ,,K¨onigsberger Br¨uckenproblem“ publizierte.

Abbildung 1: Die sieben Br¨ucken in der Stadt K¨onigsberg um 1736 Er beantwortete damit die Frage, ob ein Rundgang durch die Stadt K¨onigsberg m¨oglich sei, der jede der sieben Br¨ucken u¨ ber den Fluss Pregel genau einmal benutzt (siehe Abbildung 1). Euler gab aber lediglich eine notwendige Bedingung f¨ur die Existenz eines solchen Rundganges an. Eine hinreichende Bedingung und zugleich ein effizienter Algorithmus, der auch einen solchen Rundgang finden kann, wurde erst 1873 von Hierholzer angegeben. Eulers Untersuchungen und Hierholzers Algorithmus liefern ein gutes Beispiel f¨ur eine Vorgehensweise, wie eine Vielzahl aus der Praxis stammender Fragestellungen gel¨ost werden k¨onnen: Zun¨achst sucht man sich eine geeignete graphentheoretische Formulierung des Problems und gewinnt dann effiziente Algorithmen zur L¨osung dieses Problems, indem man geeignete Aussagen u¨ ber die zugrunde liegenden Strukturen nachweist. Dieses enge Zusammenspiel zwischen theoretischen Ergebnissen einerseits und dem Entwurf effizienter Algorithmen


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

2

andererseits wird uns im Laufe der weiteren Kapitel noch vielfach begegnen. Als ein weiteres Beispiel daf¨ur, wie groß die Auswirkungen neuer theoretischer Ergebnisse auf die Entwicklung effizienter Algorithmen sein k¨onnen, m¨ochten wir hier kurz das Steinerbaumproblem erw¨ahnen. Das Problem besteht darin, zu einer gegebenen Menge von n Punkten in der Ebene ein k¨urzestes Netzwerk zu finden, das alle diese Punkte verbindet. Dieses Problem ist als NP-schwer nachgewiesen worden, das heißt also, falls P6=NP ist, so gibt es keinen polynomiellen Algorithmus zur L¨osung dieses Problems. Da dieses Problem jedoch in einer Vielzahl von Anwendungen, wie z.B. im Chip-Design oder bei der Berechnung phylogenetischer B¨aume in der Biologie auftritt, ist man an f¨ur die Praxis effizienten L¨osungsm¨oglichkeiten interessiert.

Punktmenge

euklidischer Steinerbaum

rektilinearer Steinerbaum

Abbildung 2: L¨osungen f¨ur ein Steinerbaumproblem mit 140 Punkten Im Jahre 1995 waren die schnellsten bekannten Algorithmen in der Lage, zuf¨allige Probleminstanzen mit bis zu 140 Punkten innerhalb einer Stunde Rechenzeit auf einer leistungsf¨ahigen Workstation optimal zu l¨osen (siehe Abbildung 2). Dies ist f¨ur ein NP-schweres Problem schon eine u¨ berraschende Tatsache, insbesondere wenn man ber¨ucksichtigt, dass man bislang keine Algorithmen zur L¨osung des Steinerbaumproblems mit einer worst case Laufzeit von weniger als 2n kennt. Um so erstaunlicher ist es aber, dass man nur 4 Jahre sp¨ater bereits zuf¨allige Probleminstanzen mit u¨ ber 2000 Punkten innerhalb einer Stunde optimal l¨osen konnte (siehe Abbildung 2). Ber¨ucksichtigt man, dass sich die Rechenleistung aktueller Workstations jedes Jahr nahezu verdoppelt, so zeigen die oben erw¨ahnten worst case Laufzeiten von mehr als 2 n der schnellsten bekannten optimalen Algorithmen, dass man aufgrund der erh¨ohten Rechenleistung gerade einmal Probleminstanzen mit 4 zus¨atzlichen Punkten bearbeiten k¨onnte. Fortschritte in der Erkenntnis um die Struktur zuf¨alliger Probleminstanzen f¨ur das Steinerbaumproblem und ihre Ausnutzung f¨ur den Entwurf effizienter Algorithmen haben jedoch dazu gef¨uhrt, dass man auch f¨ur Probleminstanzen wie die in Abbildung 3) gezeigte heutzutage innerhalb einer Stunde auf einer herk¨ommlichen Workstation eine optimale L¨osung finden kann.


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

Punktmenge

euklidischer Steinerbaum

3

rektilinearer Steinerbaum

Abbildung 3: L¨osungen f¨ur ein Steinerbaumproblem mit 2001 Punkten

1.2 Graph, Nachbarschaft, Grad, Isomorphie, Teilgraphen  Ein Graph G ist ein Paar (V, E), wobei V eine endliche Menge ist und E ⊆ V2 eine Teilmenge der 2-elementigen Teilmengen von V ist. Die Elemente in V (G) heißen Knoten, die Elemente in E(G) heißen Kanten. Statt V (G) und E(G) verwenden wir vielfach auch die abk¨urzende Bezeichnung V bzw. E, falls der Graph G aus dem Zusammenhang heraus bekannt ist. Graphen werden h¨aufig durch eine Zeichnung im R 2 veranschaulicht, indem man Knoten durch Punkte und Kanten durch Linien repr¨asentiert. In Abbildung 4 ist als Beispiel eine Repr¨asentation des Graphen G = ({1, 2, 3, 4}, {{1, 2}, {1, 3}, {2, 3}, {3, 4}}) angegeben. PSfrag replacements 2 3

4

1 Abbildung 4: Darstellung eines Graphen im R 2 Sei G = (V, E) ein Graph. Zwei Knoten x und y aus V heißen adjazent, falls {x, y} ∈ E. Man sagt auch, dass x und y durch eine Kante verbunden sind. Ein Knoten x ∈ V und eine Kante e ∈ E heißen inzident, falls x ∈ e gilt. Die Knoten x und y werden Endknoten der Kante {x, y} genannt. Die Anzahl Elemente in V bzw. E, d.h. |V | bzw. |E| wird mit n(G) bzw. m(G) oder aber auch einfach mit n bzw. m bezeichnet. Sei G = (V, E) ein Graph und x ∈ V . Dann ist die Nachbarschaft N (x) des Knotens x als die Menge N (x) := {y ∈ V |{x, y} ∈ E} definiert. Die Elemente in N (x) heißen Nachbarn von x. Der Grad d(x) eines Knotens gibt die Anzahl Elemente in der Nachbarschaft von x an, d.h. es gilt d(x) = |N (x)|. F¨ur eine Teilmenge S ⊆ V ist die Nachbarschaft von S als N (S) := ∪x∈S N (x) definiert.


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

4

Ein Graph G = (V, E) heißt regula¨ r, falls d(x) = d(y) f¨ur alle Knoten x, y ∈ V gilt. G heißt k-regul¨ar, falls d(x) = k f¨ur alle x ∈ V . Einen 3-regul¨aren Graphen nennt man auch kubisch . Der Maximalgrad ∆(G) ist als ∆(G) := max x∈V d(x) definiert. Entsprechend ist der Minimalgrad δ(G) als δ(G) := min x∈V d(x) definiert. Proposition 1

Sei G = (V, E) ein Graph. Dann gilt:

X

x∈V

d(x) = 2 · |E|.

Beweis. Jede Kante hat genau zwei Endknoten. Summiert man d(x) f¨ur alle x ∈ V auf, so hat man daher jede Kante genau zweimal gez¨ahlt. t u

Sei G = (V, E) ein Graph. Das Komplement von G wird mit G bezeichnet und ist als G :=  (V, E) definiert, wobei E := {{x, y} ∈ V2 |{x, y} 6∈ E}. Ein Graph G = (V, E) heißt  vollst¨andig oder Clique, falls E = V2 gilt. G heißt leerer Graph oder stabile Menge, falls E = ∅. Ein vollst¨andiger Graph auf n Knoten wird als K n bezeichnet. Ein markierter Graph ist ein Graph, bei dem die Knoten unterscheidbar sind, indem sie eine eindeutige Markierung tragen. Eine solche Markierung kann zum Beispiel eine Nummerierung mit den Zahlen 1 bis n sein. In Abbildung 5 sind die 8 Graphen auf 3 markierten Knoten gezeigt. PSfrag replacements PSfrag replacements PSfrag replacements PSfrag replacements PSfrag replacements PSfrag replacements PSfrag replacements PSfrag replacements 3 3 3 3 3 3 3 3

1

2

1

2

2

1

1

2

1

2

1

2

1

2

1

2

Abbildung 5: Die 8 Graphen auf 3 markierten Knoten.

Proposition 2

n

Es gibt 2( 2 ) markierte Graphen auf n Knoten.

 Beweis. Es gibt n2 verschiedene Paare von Knoten in einem Graphen mit n Knoten. Jedes Paar von Knoten kann unabh¨angig von allen anderen Paaren durch eine Kante verbunden sein oder nicht verbunden sein. t u

Zwei Graphen G1 = (V1 , E1 ) und G2 = (V2 , E2 ) heißen isomorph, notiert als G1 ' G2 , falls es eine bijektive Abbildung ϕ : V 1 → V2 gibt, so dass f¨ur alle x, y ∈ V1 gilt: {x, y} ∈ E1 ⇔ {ϕ(x), ϕ(y)} ∈ E2 . L¨asst man bei den acht in Abbildung 5 gezeigten Graphen die Nummerierung weg, so sieht man leicht, dass es nur vier nicht isomorphe Graphen auf drei Knoten gibt. In Abbildung 6 sind sieben Graphen auf jeweils sechs Knoten gezeigt; es handelt sich dabei jedoch nur um zwei Klassen nicht isomorpher Graphen.


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

5

e

PSfrag replacements PSfrag replacements PSfrag replacements PSfrag replacements PSfrag replacements PSfrag replacements PSfrag replacements d

1 2 3

1 2 3

1 2 3

1 2 3

1 2 3

f

1 2 3

a

c

1 2 3

b

Abbildung 6: Sieben Graphen auf jeweils sechs Knoten. Tabelle 1 zeigt die Anzahl markierter bzw. nicht isomorpher Graphen auf bis zu 12 Knoten. Aus jedem unmarkierten Graphen auf n Knoten lassen sich maximal n! verschiedene markiern te Graphen gewinnen. Somit gibt es nach Proposition 2 mindestens 2 ( 2 ) /n! nicht isomorphe Graphen auf n Knoten. Es l¨aßt sich zeigen, dass diese untere Schranke recht gut ist, denn die n Anzahl nicht isomorpher Graphen auf n Knoten betr¨agt (1 + o(1)) · 2 ( 2 ) /n!. n 1 2 3 4 5 6 7 8 9 10 11 12

Anzahl nicht isomorpher Graphen 1 2 4 11 34 156 1 044 12 346 274 668 12 005 168 1 018 997 864 165 091 172 592

Anzahl markierter Graphen 1 2 8 64 1 024 32 768 2 097 152 268 435 456 68 719 476 736 35 184 372 088 832 36 028 797 018 963 968 73 786 976 294 838 206 464

Tabelle 1: Die Anzahl markierter bzw. nicht isomorpher Graphen. Ein Graph H = (V 0 , E 0 ) heißt Teilgraph (oder Subgraph bzw. Untergraph) von G = (V, E), 0 falls V 0 ⊆ V und E 0 ⊆ V2 ∩ E gilt. Man notiert dies als H ⊆ G. Falls V 0 = V gilt, so nennt man H einen (auf)spannenden Teilgraphen. Ist H = (V 0 , E 0 ) ein Teilgraph von G = (V, E), 0 so heißt H induzierter Teilgraph, falls E 0 = V2 ∩ E. Zur Unterscheidung von Teilgraphen und induzierten Teilgraphen werden erstere bisweilen auch schwache Teilgraphen genannt. Ein induzierter Teilgraph eines Graphen G = (V, E) ist bereits durch die Angabe einer Knotenmenge V 0 ⊆ V vollst¨andig beschrieben. Man nennt H daher auch den von V 0 induzierten Teilgraphen und notiert diesen Graphen als G[V 0 ]. F¨ur eine Knotenmenge X ⊆ V definieren wir G − X := G[V \ X]. F¨ur eine Kantenmenge F ⊆ E definieren wir G − F := (V, E \ F ). F¨ur einzelne Elemente x ∈ V bzw. e ∈ E benutzen wir auch die abk¨urzenden Schreibweisen G − x und G − e anstelle von G − {x} und G − {e}. Falls man mehrere Graphen betrachtet, die auf der gleichen Knotenmenge definiert sind, ist f¨ur einen Knoten x klarzumachen, in welchem Graphen man Parameter wie zum Beispiel d(x)


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

6

oder N (x) betrachtet. Dazu wird der Graph als Index an den Parameter geschrieben, also zum Beispiel dG (x) oder NH (x).

1.3 Clique, chromatische Zahl, Wege, Pfade, Kreise Die Cliquenzahl ω eines Graphen G ist als die gr¨oßte Zahl k definiert, f¨ur die G einen K k als Teilgraphen besitzt. Die Stabilit a¨ tszahl α ist als die Cliquenzahl des Komplements von G definiert. F¨ur jeden Graphen G gilt: ω(G) ≤ ∆(G) + 1

Proposition 3

Beweis. Es sei ω := ω(G). Dann enth¨alt G einen K ω als Teilgraphen und f¨ur diesen gilt ∆(Kω ) = ω − 1. Somit erh¨alt man ω = ∆(Kω ) + 1 ≤ ∆(G) + 1. Die letzte Ungleichung folgt dabei aus der Beobachtung, dass der Maximalgrad in einem Graphen mindestens so groß ist, wie in jedem seiner Teilgraphen. t u

Eine F¨arbung der Knoten eines Graphen G = (V, E) ist eine Abbildung f : V → N mit f (x) 6= f (y) f¨ur alle {x, y} ∈ E. Eine k-F a¨ rbung ist eine F¨arbung mit |f (V )| ≤ k. Besitzt ein Graph eine k-F¨arbung, so heißt er k-f a¨ rbbar. Die chromatische Zahl χ eines Graphen G ist als das kleinste k definiert, f¨ur das G eine k-F¨arbung besitzt. Alle Knoten, die in einer F¨arbung von G die gleiche Farbe erhalten, bilden eine Farbklasse. Ein Graph heißt eindeutig k-f a¨ rbbar, falls alle k-F¨arbungen die gleichen Farbklassen erzeugen. Ein Graph G heißt bipartit, falls χ(G) ≤ 2 gilt. Ein vollst¨andig bipartiter Graph ist ein bipartiter Graph zwischen dessen beiden Farbklassen alle m¨oglichen Kanten existieren. Ein solcher Graph wird als K r,s bezeichnet, falls die eine Farbklasse r und die andere Farbklasse s Knoten enth¨alt. Proposition 4 Es sei G ein Graph mit n Knoten. Dann gilt: i)

χ(G)

ii)

χ(G)

iii)

α(G)

ω(G) n α(G)

n

1+∆(G)

Beweis. Zum Nachweis von i) betrachte eine gr¨oßte Clique H in G. F¨ur diese gilt χ(H) = ω(H). Somit gilt χ(G) ≥ χ(H) = ω(H) = ω(G). Die Ungleichung ii) folgt unmittelbar aus der Beobachtung, dass die Farbklassen einer F¨arbung jeweils eine stabile Menge bilden. Da jede stabile Menge in G h¨ochstens α(G) Elemente n enth¨alt, gilt somit χ(G) ≥ α(G) .


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

7

Ist S eine gr¨oßte stabile Menge in G, so ist V die disjunkte Vereinigung der Mengen S und N (S). Es gilt somit: n = |S| + |N (S)| ≤ α(G) + ∆(G) · α(G) = (1 + ∆(G)) · α(G). Dies beweist die Ungleichung iii). t u

Ein Kantenzug in einem Graphen G = (V, E) besteht aus einer Folge x 0 , x1 , . . . , xl von Knoten und einer Folge e1 , . . . , el von Kanten, wobei l ≥ 0 und ei = {xi−1 , xi } ∈ E f¨ur i = 1, . . . , l. Falls der Kantenzug keine Kante enth¨alt, so handelt es sich um einen leeren Kantenzug. Ein Weg ist ein Kantenzug, in dem keine Kante mehrfach vorkommt. Die Knoten x0 und xl werden als die Endknoten des Weges bezeichnet. Man sagt auch, dass der Weg die Knoten x0 und xl verbindet, bzw. spricht von einem x 0 , xl -Weg. Der Wert l wird als die La¨ nge des Weges bezeichnet. Ein Pfad ist ein Weg in dem kein Knoten mehrfach vorkommt. Einen Pfad der L¨ange i bezeichnet man als P i+1 . Bei einem Pfad mit Knoten x0 , x1 , . . . , xl werden die Knoten x1 , . . . , xl−1 als die inneren Knoten des Pfades bezeichnet. Der Abstand dist(x, y) zweier Knoten x und y in G ist als die L¨ange eines k¨urzesten x, y-Pfades in G definiert. Falls ein solcher nicht existiert, so wird der Abstand auf ∞ gesetzt. Ein geschlossener Kantenzug in einem Graphen G = (V, E) besteht aus einer Folge x 1 , . . . , xl von Knoten und einer Folge e1 , . . . , el von Kanten, wobei l ≥ 2 und ei = {xi , xi+1 } ∈ E f¨ur i = 1, . . . , l − 1 und el = {xl , x1 } ∈ E. Der Wert l wird als die La¨ nge des geschlossenen Kantenzugs bezeichnet. Ein Zykel ist ein geschlossener Kantenzug, in dem keine Kante mehrfach vorkommt. Ein Kreis ist ein Zykel, in dem kein Knoten mehrfach vorkommt. Ein Kreis muss somit mindestens drei Knoten enthalten. Mit C i bezeichnet man einen Kreis der L¨ange i, d.h. einen Kreis mit i Kanten und i Knoten. Ein Kreis heißt gerade oder ungerade je nachdem ob seine L¨ange gerade oder ungerade ist. Kantenz¨uge werden wir vielfach einfach als die Folge ihrer Knoten notieren. Die Taillenweite (girth) g(G) ist die L¨ange eines k¨urzesten Kreises in G. Falls G keinen Kreis besitzt, so wird g(G) = ∞ gesetzt. Proposition 5 Jeder Graph G entha¨ lt einen Pfad der L¨ange mindestens δ(G). Falls δ(G) ≥ 2, so enth¨alt G einen Kreis der L¨ange mindestens δ(G) + 1. Beweis. Es sei P = x1 , . . . , xl ein l¨angster Pfad in G. Dann liegen alle Nachbarn von x l in der Menge {x1 , . . . , xl−1 }, da sonst P nicht ein l¨angster Pfad w¨are. Es gilt somit δ(G) ≤ d(x l ) ≤ l − 1, d.h. der Pfad P enth¨alt mindestens δ(G) + 1 Knoten und hat somit L¨ange mindestens δ(G).


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

8

Ist i minimaler Index mit {xi , xl } ∈ E, so sind die Knoten xi und xl−1 wegen δ(G) ≥ 2 verschieden und xi , . . . , xl ist ein Kreis der L¨ange mindestens δ(G) + 1. t u

Ein Graph G = (V, E) heißt zusammenha¨ ngend, falls es f¨ur je zwei Knoten x, y ∈ V einen x, y-Pfad gibt. Ein inklusionsmaximaler zusammenh¨angender Teilgraph von G heißt Zusammenhangskomponente. Die Anzahl der Zusammenhangskomponenten eines Graphen G wird mit c(G) notiert. Proposition 6 Ein Graph G = (V, E) ist genau dann zusammenh a¨ ngend, falls es f¨ur jede Partition von V in zwei nichtleere Mengen V 1 und V2 eine Kante {x, y} ∈ E gibt mit x ∈ V1 und y ∈ V2 . Beweis. Es sei G zusammenh¨angend und V = V 1 ∪˙ V2 eine Partition von V mit V1 , V2 6= ∅. Seien x ∈ V1 und y ∈ V2 beliebig. Da G zusammenh¨angend ist, gibt es einen x, y-Pfad mit Knoten x = x1 , . . . , xk = y in G. Bezeichne i den kleinsten Index mit x i ∈ V1 und xi+1 ∈ V2 . Ein solcher muss wegen x1 ∈ V1 und xk ∈ V2 existieren. Dann ist {xi , xi+1 } die gesuchte Kante. Wir zeigen nun umgekehrt, dass G zusammenh¨angend ist, wenn es f¨ur jede Partition von V in zwei nichtleere Mengen V1 und V2 eine Kante {x, y} ∈ E gibt mit x ∈ V1 und y ∈ V2 . Wir nehmen an, dass der Graph G nicht zusammenh¨angend ist. Dann gibt es zwei Knoten x und y, so dass kein x, y-Pfad in G existiert. Definiere V 1 := {z ∈ V |∃x, z-Pfad in G} und V2 := V − V1 . Dann bilden V1 und V2 eine Partition von V . Nach Definition von V 1 kann es keine Kante von V1 nach V2 geben. Da es jedoch nach Voraussetzung zwischen V 1 und V2 eine Kante geben muss, muss V2 = ∅ gelten. Dies ist jedoch wegen y ∈ V 2 ein Widerspruch. t u

Testet man den Zusammenhang eines Graphen, indem man gem¨aß Proposition 6 alle Partitionen der Knotenmenge durchtestet, so w¨are ein exponentieller Zeitaufwand erforderlich. Nach Definition des Zusammenhangs, ist aber lediglich f¨ur O(n 2 ) Paare von Knoten zu testen, ob diese durch einen Pfad verbunden sind. Unterschiedliche Charakterisierungen einer Grapheneigenschaft k¨onnen also zu deutlich unterschiedlichen Laufzeiten daraus abgeleiteter Algorithmen f¨uhren.

1.4 W¨alder und B¨aume Ein Graph wird Wald genannt, falls er keinen Kreis enth¨alt. Ein Baum ist ein zusammenh¨angender und kreisfreier Graph. Ein Wald ist somit ein Graph, dessen Zusammenhangskomponenten


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

9

B¨aume sind. Ist ein Baum T Teilgraph eines Graphen G und gilt V (T ) = V (G), so wird T spannender Baum genannt. Ein Knoten eines Baumes heißt Blatt falls er Grad h¨ochstens 1 hat. Proposition 7

Jeder Baum mit mindestens zwei Knoten enth a¨ lt mindestens zwei Bl¨atter.

Beweis. Sei B ein Baum mit mindestens zwei Knoten. W¨ahle in diesem Baum einen l¨angsten Pfad. Dieser enth¨alt mindestens zwei Knoten und hat daher zwei verschiedene Endknoten. Beide Endknoten dieses Pfades m¨ussen wegen der Maximalit¨at des Pfades und wegen der Kreisfreiheit von B jeweils Grad 1 haben, sind also Bl¨atter. t u

Entfernt man aus einem Baum ein Blatt, so erh¨alt man wieder einen Baum. Diese Beobachtung ist Induktionsbeweise n¨utzlich. B¨aume spielen eine besondere Rolle bei der Frage, ob ein gegebener Graph zusammenh¨angend ist. Dies zeigt die folgende Aussage: Proposition 8 Ein Graph ist genau dann zusammenh a¨ ngend, wenn er einen spannenden Baum als Teilgraphen enth¨alt. Beweis. Ist G ein Graph, der einen spannenden Baum B als Teilgraphen enth¨alt, so ist G sicherlich zusammenh¨angend, da B dies nach Definition bereits ist. Sei nun also umgekehrt G ein zusammenh¨angender Graph. Wir haben zu zeigen, dass G einen spannenden Baum als Teilgraphen enth¨alt. Wir geben dazu einen konstruktiven Beweis an. Falls G keinen Kreis enth¨alt, so ist G zusammenh¨angend und kreisfrei und somit selbst bereits ein Baum. Ansonsten entferne eine beliebige Kante aus einem beliebigen Kreis von G und iteriere diese Vorgehensweise so lange, bis der entstehende Graph kreisfrei ist. Es bleibt zu zeigen, dass der entstehende Graph auch zusammenh¨angend bleibt. In jedem Schritt wird eine Kante eines Kreises entfernt. Jeder Pfad, der diese Kante benutzt, kann durch einen Kantenzug ersetzt werden, der statt dieser Kante die anderen Kanten des Kreises benutzt. Es bleiben also weiterhin je zwei Knoten durch einen Pfad verbunden, der Graph ist somit zusammenh¨angend. t u

Die nachfolgende Aussage zeigt, dass B¨aume minimal zusammenh¨angend sind, das heißt das Entfernen einer beliebigen Kante zerst¨ort ihren Zusammenhang. Proposition 9 Ein Graph mit n Knoten ist genau dann ein Baum, wenn er zusammenh a¨ ngend ist und n − 1 Kanten besitzt. Beweis. Sei B ein Baum. Nach Definition eines Baumes ist B zusammenh¨angend und kreisfrei. Wir zeigen durch Induktion u¨ ber n, dass B genau n − 1 Kanten besitzt. F¨ur n = 1 gilt


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

10

diese Aussage sicherlich. Zum Nachweis des Induktionsschrittes entferne ein beliebiges Blatt von B, welches nach Proposition 7 existieren muss. Der so entstehende Teilgraph ist zusammenh¨angend und kreisfrei und somit ebenfalls ein Baum. Nach Induktionsannahme besitzt dieser Teilbaum genau n − 2 und B somit n − 1 Kanten. Sei nun umgekehrt ein zusammenh¨angender Graph G mit genau n − 1 Kanten gegeben. Nach Proposition 8 enth¨alt G einen spannenden Baum als Teilgraphen. Dieser hat nach dem eben gezeigten n − 1 Kanten. Somit muss G selber bereits ein Baum sein. t u

Proposition 10 B¨aume sind eindeutig 2-f¨arbbar. In der 2-F¨arbung eines Baumes haben zwei Knoten genau dann die gleiche Farbe, falls ihr Abstand gerade ist. Beweis. Wir zeigen diese Aussage durch Induktion u¨ ber die Anzahl Knoten des Baumes. F¨ur n = 1 gilt diese Aussage offensichtlich. F¨ur den Induktionsschritt entferne ein beliebiges Blatt des Baumes. Der so entstehende Graph ist wiederum ein Baum und eindeutig 2-f¨arbbar. Um eine 2-F¨arbung des gesamten Baumes zu erhalten, muss das entfernte Blatt mit der entgegengesetzten Farbe seines Nachbarn gef¨arbt werden. Der Abstand zu diesem Nachbarn betr¨agt 1, der Abstand zu allen anderen Knoten ist um genau 1 gr¨oßer als von diesem Nachbarn aus. Damit hat das entfernte Blatt geraden Abstand zu allen Knoten gleicher Farbe und ungeraden Abstand zu allen anderen Knoten. t u

Proposition 11 Ein Graph ist genau dann bipartit, wenn er keinen ungeraden Kreis enth a¨ lt. Beweis. Ungerade Kreise haben chromatische Zahl 3, sind somit nicht bipartit. Ein bipartiter Graph kann daher keinen ungeraden Kreis enthalten. Sei nun umgekehrt ein Graph G ohne ungerade Kreise gegeben. Dieser sei ohne Einschr¨ankung zusammenh¨angend. Damit enth¨alt er nach Proposition 8 einen spannenden Baum als Teilgraphen. Nach Proposition 10 ist dieser 2-f¨arbbar und Knoten mit ungeradem Abstand haben unterschiedliche Farben. Da G keinen ungeraden Kreis enth¨alt verlaufen alle weiteren Kanten von G nur zwischen Knoten unterschiedlicher Farbe, die F¨arbung des spannenden Baumes von G ist damit auch eine F¨arbung von G. t u


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

11

1.5 Grundlagen der Komplexit¨atstheorie Ein Problem Q ist eine bin¨are Relation auf zwei Mengen I und S, wobei I die Menge der Probleminstanzen und S die Menge der L o¨ sungen ist. Beispielsweise k¨onnen wir als I die Menge aller Graphen nehmen, als S die Menge der nat¨urlichen Zahlen und der Maximalgrad eines Graphen l¨asst sich dann als das Problem Q := {(G, k) ∈ I × S|k = ∆(G)} formulieren. Ein Entscheidungsproblem ist ein Problem Q, das eine Funktion ist und f¨ur das |S| = 2 gilt. Die beiden m¨oglichen Antworten werden als ,,ja” und ,,nein” interpretiert. Zum Beispiel ist das Problem, zu entscheiden, ob ein gegebener Graph bipartit ist, ein Entscheidungsproblem. Ein Optimierungsproblem ist ein Problem Q ⊆ I × S zusammen mit einer Funktion f : I × Q → R. Eine optimale L¨osung f¨ur ein x ∈ I ist ein s ∈ S, so dass (x, s) ∈ Q und f (x, s) ≥ f (x, s0 )

f (x, s) ≤ f (x, s0 )

∀(x, s0 ) ∈ Q

∀(x, s0 ) ∈ Q

Maximierungsproblem Minimierungsproblem

Zum Beispiel sind das Bestimmen der chromatischen Zahl oder der Stabilit¨atszahl eines Graphen Optimierungsprobleme. Jedes Optimierungsproblem kann in ein Entscheidungsproblem umgewandelt werden, indem man eine Schranke f¨ur die Funktion f vorgibt. Man spricht dann auch von dem dem Optimierungsproblem zugrunde liegenden Entscheidungsproblem. Die Frage, ob ein Graph k-f¨arbbar ist, ist beispielsweise das dem F¨arbungsproblem zugrunde liegende Entscheidungsproblem. F¨ur den Begriff des Algorithmus und die Definition der Laufzeit eines Algorithmus ben¨otigen wir ein geeignetes Rechnermodell. Wir betrachten hierzu das in Abbildung 7 gezeigte Modell. Das Rechenwerk verf¨ugt u¨ ber ein Programm, das aus einer Liste von Anweisungen besteht, von denen in jedem Schritt genau eine durchgef¨uhrt wird. Zudem hat das Rechenwerk wahlfreien Zugriff (Random Access) auf Speicherzellen, die wir mit A[1], A[2], . . . bezeichnen. Wir machen zwei idealisierende Annahmen: Zum einen nehmen wir an, dass es beliebig viele Speicherzellen gibt. Zum anderen gehen wir davon aus, dass jede Speicherzelle beliebig große bin¨are Zahlen aufnehmen kann. Wir lassen drei Arten von (elementaren) Anweisungen zu, die das Programm des Rechenwerks enthalten darf: • Zuweisungen, z.B.: A[i] := A[j] oder A[i] := A[A[j]], • Arithmetische Befehle, z.B.: A[i] := n oder A[i] := A[j] + A[k], • Vergleiche, z.B.: if A[i] < 7 then . . . Unter einem Algorithmus verstehen wir sodann ein aus solchen Anweisungen bestehendes Programm f¨ur unser abstraktes Rechnermodell.


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

12

Speicher A[1] A[2] A[3]

PSfrag replacements Rechenwerk

Abbildung 7: Ein einfaches Rechnermodell Ist A ein Algorithmus f¨ur ein Problem Q ⊆ I × S, so bezeichnet A(x) die Ausgabe von A bei Eingabe x. F¨ur ein Entscheidungsproblem gilt dann z.B.: A(x) ∈ {,,ja”, ,,nein”} oder A(x) ∈ {0, 1}. F¨ur ein Optimierungsproblem gilt A(x) ∈ R. Ein Algorithmus l¨ost ein Problem Q ⊆ I × S, falls (x, A(x)) ∈ Q gilt. Man kann zeigen, dass es nicht f¨ur jedes Problem einen Algorithmus gibt, der dieses l¨ost (Halteproblem). Damit ein Programm ein Problem Q ⊆ I × S l¨osen kann, m¨ussen die Instanzen geeignet kodiert sein. Dabei bezeichnet eine Kodierung eine Abbildung von der Instanzenmenge I in die bin¨aren Zahlen. F¨ur ein x ∈ I bezeichnet |x| die Kodierungsl¨ange von x, d.h., die Anzahl Bits der Bin¨arrepr¨asentation (welche abh¨angig von der gew¨ahlten Kodierung ist). Die Laufzeit eines Algorithmus A bei Eingabe x ist die Anzahl elementarer Anweisungen, die A bei Eingabe x ausf¨uhrt. Die Laufzeit eines Algorithmus A, der ein Problem Q ⊆ I × S l¨ost, ist als tA (n) := max {Laufzeit von A bei Eingabe x} x∈I,|x|=n

definiert. Ein Algorithmus hat polynomielle Laufzeit, falls es eine Konstante k ∈ N gibt mit tA (n) = O(nk ). Der Algorithmus A wird dann auch polynomieller Algorithmus genannt. Ein Problem heißt polynomiell lo¨ sbar, falls es einen polynomiellen Algorithmus zur L¨osung des Problems gibt. Mit P bezeichnet man die Menge aller polynomiell l¨osbaren Entscheidungsprobleme. Das Problem zu entscheiden, ob ein gegebener Graph 2-f¨arbbar ist, ist beispielsweise in P . F¨ur das Problem, zu entscheiden, ob ein gegebener Graph 3-f¨arbbar ist, ist bis heute noch nicht bekannt, ob es in P liegt. Polynomielle Algorithmen werden f¨ur gew¨ohnlich als f¨ur die Praxis geeignete Algorithmen betrachtet. Nat¨urlich ist ein Algorithmus, der eine Laufzeit von O(n 100 ) hat, nicht wirklich


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

13

praxistauglich. Es hat sich allerdings gezeigt, dass f¨ur die meisten Probleme, f¨ur die man polynomielle Algorithmen gefunden hat, auch solche existieren, deren Laufzeit durch ein Polynom kleinen Grades beschr¨ankt ist. In Tabelle 2 sind Laufzeiten gezeigt, die auf einem realen Rechner entstehen k¨onnen. Wie man sieht, sind kleine polynomielle Laufzeiten in der Praxis noch akzeptabel, w¨ahrend exponentielle Laufzeiten eines Algorithmus diesen in der Praxis unbrauchbar machen. Laufzeitfunktion n n2 n3 1000n3 2n n!

n = 10 < 1ms < 1ms < 1ms < 1ms < 1ms 4ms

n = 100 < 1ms < 1ms 1ms 1s 13 4 · 10 Jahre 3 · 1041 Jahre

n = 1000 < 1ms 1ms 1s 17min 3 · 10284 Jahre 102551 Jahre

Tabelle 2: Reale Laufzeiten bei Eingaben der Gr¨oße 10, 100 und 1000, falls man voraussetzt, dass 109 elementare Operationen in einer Sekunde durchgef¨uhrt werden k¨onnen. Ein Entscheidungsproblem Q ⊆ I × {,,ja”, ,,nein”} geh¨ort zu der Klasse N P (nichtdeterministisch polynomiell), falls es einen polynomiellen Algorithmus A gibt mit (x, ,,ja”) ∈ Q ⇒ ∃ Zertifikat y mit A(x, y) = ,,ja”

(x, ,,nein”) ∈ Q ⇒ 6 ∃ Zertifikat y mit A(x, y) = ,,ja”

Ein Problem geh¨ort also dann in die Klasse N P , falls sich eine L¨osung polynomiell u¨ berpr¨ufen l¨asst. Das Problem der 3-F¨arbbarkeit eines Graphen geh¨ort zum Beispiel in die Klasse N P . Es ist zwar nicht bekannt, wie man in polynomieller Zeit feststellen kann, ob ein gegebener Graph 3-f¨arbbar ist. Hat man jedoch eine F¨arbung der Knoten eines Graphen gegeben, so kann man leicht in polynomieller Zeit u¨ berpr¨ufen, ob es sich dabei um eine korrekte 3-F¨arbung handelt. Beachte, dass die Definition von N P nicht symmetrisch ist in ,,ja” und ,,nein”. F¨ur die Frage ,,Ist G nicht 3-f¨arbbar”, ist beispielsweise bis heute nicht bekannt, ob sie in N P liegt. F¨ur ein Entscheidungsproblem Q ⊆ I × {0, 1} ist das Komplement a¨ rproblem Q ⊆ I × {0, 1} mit Q := {(x, i)|(x, 1 − i) ∈ Q} definiert. Das Komplement¨arproblem entsteht also aus einem Problem, indem die ,,ja” und ,,nein” Antworten vertauscht werden. Die Klasse co-N P ist die Menge aller Entscheidungsprobleme, deren Komplement¨arprobleme in N P liegen. Es gilt nun offensichtlich:P ⊆ N P und P ⊆co-N P woraus P ⊆ N P ∩co-N P folgt. Bis heute ist die Frage, ob P = N P gilt ungel¨ost. Sie ist eine der bedeutensten offenen Fragen der theoretischen Informatik. Gegeben seien zwei Entscheidungsprobleme Q 1 ⊆ I1 × {0, 1} und Q2 ⊆ I2 × {0, 1}. Ein


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

14

polynomieller Algorithmus A : I1 → I2 heißt polynomielle Transformation, falls gilt: (x, 1) ∈ Q1

(A(x), 1) ∈ Q2 .

Man sagt in diesem Fall auch, dass Q1 polynomiell auf Q2 reduzierbar ist. Beachte, dass der Algorithmus A nicht notwendigerweise (meistens sogar nicht) eine Bijektion zwischen I 1 und I2 herstellt. Die Bedeutung der polynomiellen Transformation zeigt die folgende Proposition. Proposition 12 Ist ein Problem Q1 ⊆ I1 × {0, 1} polynomiell auf ein Problem Q 2 ⊆ I2 × {0, 1} reduzierbar und gilt Q2 ∈ P so gilt auch Q1 ∈ P . Beweis. Sei A : I1 → I2 eine polynomielle Transformation von Q 1 nach Q2 . Sei B : I2 → {0, 1} ein polynomieller Algorithmus f¨ur Q 2 . Dann ist B(A) : I1 → {0, 1} ein polynomieller Algorithmus, der Q1 entscheidet. Die Laufzeit ist polynomiell, da das Ineinandersetzen zweier Polynome wieder ein Polynom ergibt. t u

Ein Entscheidungsproblem Q heißt N P -vollst a¨ ndig, falls Q in N P liegt und sich jedes andere Problem aus N P polynomiell auf Q reduzieren l¨asst. Beispielsweise ist die Frage, ob ein gegebener Graph 3-f¨arbbar ist, ein NP-vollst¨andiges Problem. Es ist nun aufgrund der Definition der N P -Vollst¨andigkeit nicht klar, wie man ein Problem als N P -vollst¨andig nachweisen kann. Ein erster, solcher Beweis stammt von Cook aus dem Jahr 1971. Er hat bewiesen, dass das SAT-Problem N P -vollst¨andig ist. Bei diesem Problem erh¨alt man eine Boolsche Formel in konjunktiver Normalform, also z.B. die Formel (x 1 ∨ x5 ∨ x7 ∨ x9 ) ∧ (x3 ∨ x5 ∨ x6 ), als Eingabe und die Frage ist, ob es eine Belegung der Variablen mit 0 und 1 gibt, so dass diese Formel wahr wird. Hat man ein erstes Entscheidungsproblem als N P -vollst¨andig nachgewiesen, so l¨asst sich die N P -Vollst¨andigkeit weiterer Problem mit Hilfe der folgenden Proposition nachweisen. Proposition 13 Sind A und B Entscheidungsprobleme und ist A polynomiell auf B reduzierbar und ist A ein NP-vollst¨andiges Problem, so ist auch B ein NP-vollst a¨ ndiges Problem. Beweis. Es sei C ein Problem in N P . Wegen der N P -Vollst¨andigkeit von A gibt es eine polynomielle Reduktion von C auf A. Zusammen mit der polynomiellen Reduktion von A auf B ergibt sich somit eine polynomielle Reduktion von C auf B. t u

Damit zeigt sich, dass man P = N P erh¨alt, wenn man f¨ur nur ein einziges N P -vollst¨andiges Problem zeigen kann, dass es polynomiell l¨osbar ist. Die N P -vollst¨andigen Probleme sind in


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

15

diesem Sinne die schwierigsten Probleme in N P und daher von besonderem Interesse. Viele aus der Praxis stammende Probleme erweisen sich als N P -vollst¨andig, man kann also nicht erwarten, dass man einen polynomiellen Algorithmus f¨ur die L¨osung eines solchen Problems findet. Wie nennen ein Optimierungsproblem N P -schwer, falls das ihm zugrunde liegende Entscheidungsproblem N P -vollst¨andig ist.

1.6 Repr¨asentation von Graphen im Computer F¨ur die Repr¨asentation von Graphen im Computer gibt es zwei Standardm¨oglichkeiten: die Verwendung der Adjazenzmatrix oder von Adjazenzlisten. Die Adjazenzmatrix hat die Vorteile, dass sie sehr einfach zu implementieren ist, f¨ur kleine Graphen weniger Speicherplatz ben¨otigt und einen schnellen Test zul¨asst, ob zwei gegebene Knoten adjazent sind. Sie hat allerdings den Nachteil eines großen Speicherplatzbedarfs f¨ur d¨unne Graphen, d.h. Graphen, f¨ur die m = o(n2 ) gilt. Adjazenzlisten hingegen ben¨otigen f¨ur alle Graphen nur linear viel Speicher. Diese Repr¨asentationsform ist daher die in der Praxis gebr¨auchlichste. Algorithmen mit linearer Laufzeit oder Algorithmen, die auch große Instanzen bearbeiten k¨onnen sollen, lassen sich nur u¨ ber Adjazenzlisten realisieren. Die Speicheranforderungen und die Laufzeiten f¨ur elementare Graphenoperationen f¨ur beide Repr¨asentationsformen sind in Tabelle 3 zusammengefasst. S¨amtliche Laufzeitangaben benutzen dabei das Einheitskostenmaß, d.h. die Kosten f¨ur das Abspeichern einer polynomiell großen Zahl werden als konstant angenommen. Die Adjazenzmatrix A eines Graphen G dessen Knoten von 1 bis n durchnummeriert sind, ist eine n × n Matrix, deren Eintr¨age alle 0 oder 1 sind. Der Eintrag A[i, j] ist genau dann 1, falls die Knoten i und j adjazent sind, andernfalls ist er 0. Da Adjazenz eine symmetrische Relation ist, ist die Matrix A eine symmetrische Matrix. Man beachte, dass isomorphe Graphen unterschiedliche Adjazenzmatrizen besitzen k¨onnen, da diese von der Nummerierung der Knoten des zugrundeliegenden Graphen abh¨angen. Der Speicherbedarf f¨ur die Adjazenzmatrix betr¨agt n2 . Zum Einf¨ugen eines Knotens, ist eine zus¨atzliche Zeile und Spalte der Matrix mit dem Wert 0 zu f¨ullen. Dies ben¨otigt 2n − 1 Operationen. Vorausgesetzt wird hierbei, dass die Matrix bereits ausreichend groß dimensioniert ist. F¨ur das Entfernen eines Knotens sind entsprechend eine Zeile und eine Spalte der Matrix zu l¨oschen. Zu beachten ist, dass der Graph daraufhin nicht mehr notwendigerweise eine konsekutiv durchnummerierte Knotenmenge besitzt. Diese l¨asst sich aber in O(n) wieder herstellen. Das Einf¨ugen oder L¨oschen einer Kante erfordert lediglich das Umsetzen zweier Matrixeintr¨age, ist somit in konstanter Zeit durchf¨uhrbar. F¨ur den Test, ob zwei gegebene Knoten durch eine Kante verbunden sind, ist ebenfalls nur konstanter Zeitaufwand erforderlich, da nur ein einzelner Matrixeintrag erfragt werden muss. Die Adjazenzlistendarstellung eines Graphen besteht in ihrer einfachsten Form aus einer ein-


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

Adjazenzmatrix

Adjazenzliste

Speicherbedarf

O(n2 )

O(n + m)

Knoten einf¨ugen

O(n)

O(1)

Knoten entfernen

O(n)

O(n)

Kante einf¨ugen

O(1)

O(1)

Kante entfernen

O(1)

O(1)

Test, ob {x, y} ∈ E

O(1)

O(n)

16

Tabelle 3: Speicher- und Laufzeitbedarf unterschiedlicher Repr¨asentationsformen f¨ur einen Graphen fach verketteten Liste aller Knoten des Graphen. Jeder Knoten besitzt zudem eine Liste aller seiner Nachbarn. Der Speicherplatzbedarf dieser Repr¨asentation betr¨agt O(n + m). F¨ur das Einf¨ugen eines Knotens ist lediglich ein Element in die Knotenliste des Graphen einzuf¨ugen. Der Zeitaufwand daf¨ur ist konstant. F¨ur das Einf¨ugen oder Entfernen einer Kante muss lediglich ein Element in der Nachbarschaftsliste der beiden Endknoten der Kante eingef¨ugt bzw. entfernt werden. Dies ist in konstanter Zeit m¨oglich, falls man sich f¨ur jede Kante die beiden Positionen merkt, an denen sie in den Nachbarschaftslisten ihrer Endknoten steht. F¨ur das L¨oschen eines Knotens sind zun¨achst die mit ihm inzidenten Kanten zu l¨oschen, sodann der Knoten selber. Dazu bedarf es eines Aufwandes von maximal O(n). F¨ur den Test, ob zwei gegebene Knoten durch eine Kante verbunden sind, muss in der Nachbarschaftsliste des einen Knotens nach dem anderen Knoten gesucht werden. Der Zeitaufwand hierf¨ur ist proportional zum Grad des Knotens, also maximal O(n).

1.7 Tiefensuche und Breitensuche Tiefensuche (depth first search) und Breitensuche (breadth first search) sind die zwei wichtigsten Grundprinzipien von Graphenalgorithmen. In ihrer einfachsten Form dienen diese Algorithmen lediglich dazu, die Knoten und Kanten eines Graphen systematisch zu durchsuchen. Durch einfache Modifikationen lassen sich jedoch eine Vielzahl von graphentheoretischen Algorithmen aus diesen beiden Algorithmen ableiten, oder benutzen diese Algorithmen an zentraler Stelle. Wir beginnen zun¨achst mit der Beschreibung des Algorithmus Tiefensuche. Der Pseudocode dieses Algorithmus ist in Abbildung 8 angegeben. Der Algorithmus Tiefensuche startet in einem Knoten s von dem aus rekursiv alle Nachbarn dieses Knotens besucht werden. Dabei wird die Suche in dem jeweils zuletzt besuchten Knoten


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

17

DFS (G, s) 1 2

for v ∈ V (G) do v.besucht := false DFS-visit (s)

DFS-visit (v) 3 v.besucht := true 4 for w ∈ N (v) do 5 if not w.besucht then DFS-visit (w) Abbildung 8: Der Algorithmus Tiefensuche (DFS). fortgesetzt. Sind alle Nachbarn eines Knotens bereits besucht, so erfolgt ein Backtracking zu dem vorangegangenen Knoten, von dem aus der aktuelle Knoten erstmals besucht wurde. F¨ur jeden Knoten gibt es drei m¨ogliche Zust¨ande der Abarbeitung: er ist noch nicht besucht, er ist besucht, aber es sind noch nicht alle seine Nachbarn von ihm ausgehend besucht worden, oder er ist besucht und auch alle seine Nachbarn sind von ihm aus besucht worden. Abbildung 9 zeigt einen Beispiellauf des Algorithmus Tiefensuche. Dargestellt sind jeweils die Zeitpunkte, zu denen sich der Zustand eines Knotens a¨ ndert. Die Kanten, die betrachtet werden und deren Abarbeitung zu der Zustands¨anderung des entsprechenden Knotens f¨uhrt, sind dabei jeweils grau hervorgehoben. Die unbesuchten Knoten sind weiß, besuchte Knoten, deren Nachbarn noch nicht alle von diesem Knoten aus besucht sind, sind grau, und alle anderen Knoten sind schwarz dargestellt.

Abbildung 9: Beispiellauf des Algorithmus Tiefensuche.

Satz 14 Der Algorithmus DFS durchla¨ uft alle Knoten und Kanten eines zusammenh a¨ ngenden Graphen und hat eine Laufzeit von O(m).


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

18

Beweis. Wir zeigen zun¨achst, dass der Algorithmus DFS jeden Knoten des Graphen besucht. Offensichtlich wird der Knoten s besucht. Angenommen es gibt einen Knoten y, der nicht besucht wird. Betrachte einen s, y-Pfad in dem Graphen. Auf diesem muss es eine Kante geben, deren einer Endpunkt besucht wurde, der andere aber nicht. Dies stellt einen Widerspruch zu Zeile 4 und 5 des Algorithmus dar, da dort alle unbesuchten Nachbarn eines besuchten Knotens besucht werden. Da alle Knoten des Graphen besucht werden, zeigen die Zeilen 4 und 5 zudem, dass auch alle Kanten des Graphen besucht werden. Wir bestimmen nun die Laufzeit des Algorithmus Tiefensuche. Die Prozedur DFS-visit wird nur f¨ur unbesuchte Knoten aufgerufen und der unbesuchte Knoten wird sofort als besucht markiert. Somit wird DFS-visit f¨ur jeden Knoten genau einmal aufgerufen. Innerhalb von DFS-visit wird die for-Schleife f¨ur die d(v) Nachbarn des aktuellen Knotens v durchlaufen. Nach Proposition 1 sind dies 2m Durchl¨aufe insgesamt. Die Gesamtlaufzeit des Algorithmus Tiefensuche betr¨agt somit O(n + m) = O(m), da der Graph zusammenh¨angend ist. t u

Der Algorithmus Tiefensuche kann leicht modifiziert werden, um eine Vielzahl graphentheoretischer Probleme in linearer Zeit zu l¨osen. Beispielsweise k¨onnen die Zusammenhangskomponenten, ein spannender Baum, die Gradfolge oder eine 2-F¨arbung eines Graphen mit Varianten des Algorithmus Tiefensuche in linearer Zeit gel¨ost werden. Spanning Tree (G, s) 1 T := V 2 for v ∈ V (G) do v.besucht := false 3 DFS-visit (s) 4 return (T ) DFS-visit (v) 5 v.besucht := true 6 for w ∈ N (v) do 7 if not w.besucht then T := T ∪ {{v, w}} DFS-visit (w) Abbildung 10: Bestimmung eines spannenden Baumes mittels Tiefensuche. Satz 15 Der Algorithmus Spanning Tree bestimmt f u¨ r einen zusammenh¨angenden Graphen in O(m) einen spannenden Baum. Beweis. Es seien die Knoten des Graphen gem¨aß ihrer Reihenfolge, in der sie besucht werden nummeriert. Wir zeigen induktiv, dass der von den ersten i Knoten von T induzierte Graph zusammenh¨angend ist. F¨ur i = 1 stimmt dies sicherlich. Sei nun der von den ersten i Knoten von T induzierte Graph zusammenh¨angend. Wenn der Knoten mit Nummer i + 1 als besucht


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

19

markiert wird, so ist er von einem Knoten x dessen Nummer maximal i sein kann erreicht worden. Der Knoten mit Nummer i + 1 ist somit mit dem Knoten x in T durch eine Kante verbunden, und nach Induktionsannahme ist demnach auch der von den ersten i + 1 Knoten von T induzierte Graph zusammenh¨angend. F¨ur jeden Knoten, bis auf den ersten, wird jeweils eine Kante in T aufgenommen. Somit enth¨alt T genau n − 1 Kanten und ist nach Proposition 9 ein Baum. t u

Beachte, dass nicht alle spannenden B¨aume eines Graphen als Ausgabe des Algorithmus Spanning Tree geliefert werden k¨onnen. Aus Proposition 10 ergibt sich unmittelbar eine M¨oglichkeit, in O(m) zu testen, ob ein Graph bipartit ist: Man bestimmt zun¨achst einen spannenden Wald und f¨arbt alle nicht trivialen Komponenten mit 2 Farben. Sodann testet man, ob die restlichen Kanten des Graphen jeweils nur Knoten unterschiedlicher Farbe verbinden. Man beachte jedoch, dass das Bestimmen einer 2-F¨arbung eines bipartiten Graphen O(n + m) Laufzeit erfordert. Satz 16 In O(m) l¨asst sich testen, ob ein gegebener Graph bipartit ist.

t u

Der Algorithmus Breitensuche (BFS), den wir im folgenden beschreiben wollen, bietet eine weitere M¨oglichkeit, die Knoten und Kanten eines Graphen systematisch zu durchlaufen. Der Algorithmus BF S benutzt eine Warteschlange Q als Datenstruktur. Zu Beginn enth¨alt Q lediglich den als besucht markierten Startknoten s. In jedem Schritt des Algorithmus wird jeweils der erste Knoten aus der Warteschlange entfernt und alle seine Nachbarn, die noch nicht besucht wurden, werden in die Warteschlange eingereiht und als besucht markiert. Abbildung 11 zeigt den Pseudocode f¨ur den Algorithmus BFS. BFS (G, s) 1 2 3 4 5 6 7

besucht := {s} Q.add(s) while Q 6= ∅ do v := Q.head for w ∈ N (v)\besucht do Q.add(w) besucht := besucht ∪{w} Abbildung 11: Der Algorithmus Breitensuche (BFS).

Satz 17 Der Algorithmus BFS durchla¨ uft alle Knoten und Kanten eines zusammenh a¨ ngenden Graphen und hat eine Laufzeit von O(m).


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

20

Beweis. Wir bestimmen zun¨achst die Laufzeit des Algorithmus Breitensuche. Wird ein Knoten als besucht markiert, so beh¨alt er diese Markierung f¨ur immer. Jeder Knoten wird h¨ochstens einmal in die Warteschlange Q aufgenommen, da mit der Aufnahme des Knotens dieser als besucht markiert wird und keine als besucht markierten Knoten in die Warteschlange aufgenommen werden. Die Zeilen 3 und 4 werden daher maximal n mal durchlaufen. Die Zeilen 6 und 7 werden maximal f¨ur alle Nachbarn eines jeden Knotens durchlaufen, also O(m) mal. Wir zeigen nun, dass der Algorithmus BFS auch wirklich jeden Knoten und jede Kante des Graphen besucht. Offensichtlich wird der Knoten s besucht. Angenommen es gibt einen Knoten y, der nicht besucht wird. Betrachte einen s, y-Pfad in dem Graphen. Auf diesem muss es eine Kante e geben, deren einer Endpunkt besucht wurde, der andere aber nicht. Ein Knoten wird genau dann als besucht markiert, wenn er in die Warteschlange Q aufgenommen wird. Jeder in die Warteschlange aufgenommene Knoten wird zu einem sp¨ateren Zeitpunkt aus dieser entfernt und alle seine Nachbarn, die noch unbesucht waren, werden dabei als besucht markiert. Dies widerspricht der Existenz der Kante e. Somit wird jeder Knoten besucht und wegen Zeile 5 auch jede Kante. t u ¨ Ahnlich wie den Algorithmus DFS kann man den Algorithmus BFS leicht variieren, um eine Reihe graphentheoretischer Probleme in linearer Zeit zu l¨osen. So kann man den Algorithmus BFS beispielsweise verwenden, um den Zusammenhang zu testen, oder auf 2-F¨arbbarkeit zu testen, oder spannende B¨aume zu berechnen. Eine wichtige Anwendung des Algorithmus BFS besteht in der Berechnung des Abstandes dist(x, y) zweier Knoten in einem Graphen. Dieser l¨asst sich mittels DFS nicht berechnen. Abbildung 12 zeigt, wie man den Algorithmus BFS leicht modifizieren kann, um in einem Graphen G den Abstand von einem Knoten x zu allen anderen Knoten des Graphen zu berechnen. Abst¨ande (G, x) 1 besucht := {x} 2 Q.add(x) 3 x.Abstand := 0 4 while Q 6= ∅ do 5 v := Q.head 6 for w ∈ N (v)−besucht do 7 Q.add(w) 8 besucht := besucht ∪{w} 9 w.Abstand := v.Abstand+1 Abbildung 12: Berechnung aller Abst¨ande von einem Knoten zu allen anderen Knoten. Satz 18 Der Algorithmus Absta¨ nde berechnet f¨ur einen zusammenh¨angenden Graphen G die Abst¨ande vom Knoten x zu allen anderen Knoten und hat eine Laufzeit von O(m).


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

21

Beweis. Da der Algorithmus Abst¨ande gegen¨uber BFS lediglich konstant viel zus¨atzlichen Aufwand pro Schritt ben¨otigt, hat er ebenfalls lineare Laufzeit. Es bleibt zu zeigen, dass der Wert y.Abstand bei Beendigung des Algorithmus tats¨achlich f¨ur jeden Knoten y ∈ V (G) den Abstand zum Knoten x enth¨alt. Dazu zeigen wir zun¨achst, dass b.Abstand ≥ a.Abstand gilt, falls b nach a in die Warteschlange Q aufgenommen wurde und dass der erste und letzte Knoten in Q sich zu jedem Zeitpunkt um h¨ochstens 1 in ihrem Abstandswert unterscheiden. Dies gilt sicherlich zu Beginn des Algorithmus und auch dann, wenn der erste Knoten aus Q entfernt wird. Wird ein Knoten an Q angef¨ugt, so ist sein Abstandswert um genau 1 gr¨oßer als der des soeben entfernten Knotens, woraus die Behauptung folgt. Wir zeigen nun durch Induktion u¨ ber dist(x, y), dass y.Abstand= dist(x, y) gilt. Falls dist(x, y) = 0 ist, so muss x = y gelten und somit dist(x, x) = x.Abstand= 0. Gelte nun die Aussage f¨ur alle Knoten, deren Abstand zu x kleiner ist als der von y. Betrachte einen k¨urzesten x, y-Pfad. F¨ur den Nachbarn z von y auf diesem Pfad gilt nach Annahme dist(x, z) = z.Abstand und dist(x, z) = dist(x, y)−1. Da bei Zuweisung des Wertes .Abstand f¨ur einen Knoten y auch ein x-y-Weg der entsprechenden L¨ange existiern muss, gilt y.Abstand ≥ dist(x, y) > z.Abstand. Somit wird nach oben gezeigtem der Knoten z vor dem Knoten y in Q eingef¨ugt und somit auch vor y aus Q entfernt. Falls y zu diesem Zeitpunkt bereits in Q ist, so muss y.Abstand ≤ z.Abstand+1 gelten. Ansonsten wird y als Nachbar von z mit dem Wert y.Abstand= z.Abstand+1 in Q aufgenommen. Es gilt also y.Abstand≤ z.Abstand+1 = dist(x, z) + 1 = dist(x, y). t u

Die beiden Algorithmen DFS und BFS unterscheiden sich lediglich in der Reihenfolge, in der sie die Knoten und Kanten durchlaufen. F¨ur viele Anwendungen ist diese Reihenfolge irrelevant. F¨ur einige Anwendungen jedoch sehr wichtig. Wie z.B. bei der Berechnung von Abst¨anden. Hat man jedoch die freie Wahl, ob man Tiefensuche oder Breitensuche verwenden kann, so ist im Allgemeinen Tiefensuche der Vorzug zu geben. F¨ur den Algorithmus Breitensuche ben¨otigt man eine Datenstruktur f¨ur Queues, die normalerweise ineffizienter ist, als der vom Compiler bereitgestellte Stack-Mechanismus der f¨ur die rekursiven Aufrufe von DFS benutzt wird.


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

22

2 Kurzeste ¨ Wege (Vorlesung 5–8) Motivation: Routenplaner, Bahnverbindungen, TCP/IP-Paketversand, Shortest-Superstring Mit Hilfe des Algorithmus Breitensuche l¨asst sich der Wert dist(x, y) f¨ur je zwei Knoten x, y in einem Graphen in linearer Zeit berechnen. Dieser Wert z¨ahlt die Anzahl Kanten auf einem k¨urzesten Pfad, der x und y verbindet. In praktischen Anwendungen m¨ochte man vielfach den Kanten eines Graphen unterschiedliche L¨angen zuweisen, d.h., zus¨atzlich zu einem Graphen G = (V, E) hat man eine L¨angenfunktion l : E → R + gegeben. Man spricht in diesem Fall von einem (kanten)-gewichteten Graphen . Die L¨ange eines Pfades P in G wird in solch einem Graphen als die Summe der L¨angen aller Kanten, die in P enthalten sind, definiert. Alle Graphen, die wir im nachfolgenden betrachten, werden kantengewichtet sein. Unter einem k¨urzesten Pfad wird daher im Folgenden stets ein Pfad zu verstehen sein, dessen Summe der L¨angen der in ihm enthaltenen Kanten minimal ist. Mit dist(., .) bezeichnen wir die L¨ange eines solchen Pfades. Die bisher betrachteten ungewichteten Graphen fallen als Spezialfall, in dem alle Kanten das Gewicht 1 haben, darunter.

2.1 Der Algorithmus von Dijkstra Der Algorithmus von Dijkstra stellt eine effiziente M¨oglichkeit dar, um in kantengewichteten Graphen k¨urzeste Pfade zwischen zwei beliebigen Knoten zu bestimmen. Der Pseudocode dieses Algorithmus ist in Abbildung 13 angegeben. Die Funktionsweise l¨asst sich mithilfe eines Glasfasernetzes veranschaulichen: Die Kanten des Graphen werden durch Glasfaserkabel repr¨asentiert, mit einer L¨ange gem¨aß der Kantengewichtsfunktion l. Kommt in einem Knoten des Graphen ein Lichtsignal an, so wird dieses an alle Nachbarn des Knotens weitergeleitet. Die L¨ange eines k¨urzesten Pfades zwischen zwei Knoten x und y in diesem Glasfasernetzwerk wird gefunden, indem vom Knoten x zu allen seinen Nachbarn ein Lichtsignal ausgesendet wird, und gemessen wird, wie lange es dauert, bis bei dem Knoten y ein Lichtsignal eintrifft. Durch Zur¨uckverfolgen des Weges des Lichtsignals erh¨alt man einen k¨urzesten Pfad zwischen x und y. Satz 19 Der Algorithmus von Dijkstra berechnet die L a¨ nge eines k¨urzesten s, t-Pfades f¨ur alle Knoten t des Graphen und kann mit Laufzeit O(n 2 ) implementiert werden. Beweis. Wir zeigen durch Induktion u¨ ber die Anzahl der aus Q entfernten Knoten, dass das Feld .Abstand bei Beendigung des Algorithmus f¨ur jeden Knoten den korrekten Wert enth¨alt. Dies stimmt sicherlich f¨ur den Knoten s, der als erster aus Q entfernt wird. Sei nun x ein beliebiger Knoten, der aus Q entfernt wird. Dann gilt x.Abstand ≥ dist(s, x), da es gem¨aß Zeile 7 und 8 des Algorithmus einen Weg von s nach x gibt, der L¨ange x.Abstand


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

23

Dijkstra (G, l : E → R+ , s) 1 2 3 4 5 6 7 8

for x ∈ V \ {s} do x.Abstand := ∞ s.Abstand := 0 Q := V while Q 6= ∅ do x := Knoten in Q, der .Abstand minimiert Q := Q \ {x} for y ∈ N (x) ∩ Q do y.Abstand := min(y.Abstand, x.Abstand+l({x, y})) Abbildung 13: Der Algorithmus von Dijkstra zur Berechnung k¨urzester Pfade.

hat. Betrachte einen k¨urzesten s, x-Pfad s = v 1 , . . . , vk = x im Graphen. Sei i der gr¨oßte Index eines Knotens auf diesem Pfad, der bereits aus Q entfernt wurde. F¨ur diesen Knoten gilt vi .Abstand= dist(s, vi ). Da der Knoten vi+1 noch in Q enthalten ist und er Nachbar von v i ist, gilt vi+1 .Abstand≤ dist(s, vi )+l(vi , vi+1 ). Der Knoten x wird aus Q entfernt, da er der Knoten ist, der .Abstand minimiert. Somit gilt x.Abstand≤ v i+1 .Abstand≤ dist(s, vi ) + l(vi , vi+1 ). Der Knoten x hat somit einen Wert f¨ur .Abstand, der h¨ochstens so groß ist wie die L¨ange eines k¨urzesten s, x-Pfades. Zur Bestimmung der Laufzeit des Algorithmus ist zu beobachten, dass die while-Schleife in den Zeilen 4–8 f¨ur jeden Knoten genau einmal durchlaufen wird. Der Knoten in Q, der .Abstand minimiert l¨asst sich in O(n) finden. Es ergibt sich f¨ur Zeile 5 also eine Gesamtlaufzeit von O(n2 ). Die for-Schleife in Zeile 7–8 wird f¨ur alle Nachbarn eines jeden Knoten in G durchlaufen. Der Zeitbedarf betr¨agt also O(m). Damit ergibt sich eine Gesamtlaufzeit von O(n2 ). t u In vielen Anwendungen treten sehr große Graphen auf, f¨ur die eine Laufzeit von O(n 2 ) deutlich zu groß ist. Modelliert man beispielsweise das Straßennetz von Deutschland als Graphen, um darin k¨urzeste Wege als Routenvorschl¨age zu generieren, so hat der entsprechende Graph 16144639 Kanten und 6834091 Knoten. Auf die Region Berlin-Brandenburg beschr¨ankt hat dieser Graph noch immerhin 893331 Kanten und 382666 Knoten. Effizientere Implementationen des Algorithmus von Dijkstra sind daher in der Praxis sehr bedeutend. Der dominierende Teil f¨ur die Laufzeit im Algorithmus Dijkstra ist die n-malige Bestimmung eines Knotens in Q, der den Wert .Abstand minimiert. Durch Verwendung geeigneter Datenstrukturen kann der Laufzeitbedarf hierf¨ur deutlich gesenkt werden. Bin a¨ re Heaps erlauben es, das Element minimalen Gewichtes in konstanter Zeit zu finden und ben¨otigen O(log n) zum Entfernen dieses Elementes. (Ein bin¨arer Heap ist ein bin¨arer Baum mit der Eigenschaft, dass die beiden Kinder eines Knotens jeweils mindestens so großes Gewicht haben, wie der


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

24

Knoten selber.) Allerdings wird stattdessen f¨ur das Ver¨andern eines Wertes eine Laufzeit von O(log n) ben¨otigt. Da sich der Wert .Abstand maximal O(m) mal a¨ ndert, kommt man somit bei Verwendung bin¨arer Heaps auf eine Gesamtlaufzeit von O(m log n) f¨ur den Algorithmus von Dijkstra. Bei der Benutzung von Fibonacci-Heaps kann man die Gesamtlaufzeit des Algorithmus von Dijkstra sogar auf O(n log n + m) senken.

2.2 Amortisierte Laufzeitanalyse Bei der amortisierten Laufzeitanalyse geht es darum, die Laufzeit einer in einem Algorithmus auftretenden Folge von Operationen zu berechnen. Gegeben sei ein Algorithmus A, der ausgehend von einer Ausgangskonfiguration D 0 eine Folge von m Operationen op1 , op2 , . . . , opm durchf¨uhrt, wobei Operation i die Konfiguration D i−1 nach Di u¨ berf¨uhrt. Die Laufzeit f¨ur die Operation opi betrage ti . Gesucht ist nun die Gesamtlaufzeit der m Operationen, d.h. der Wert der Summe m X ti . i=1

Falls es eine nicht von m abh¨angende Funktion a gibt, so dass f¨ur jede im Algorithmus m¨ogliche Folge von m Operationen gilt, dass m X i=1

ti ≤ m · a ,

so sagt man, dass die amortisierte Laufzeit einer jeden Operation h¨ochstens a ist. Die amortisierte Laufzeit einer Operation ist also eine obere Schranke f¨ur die mittlere Laufzeit einer einzelnen Operation in einer Folge von Operationen. Offensichlich gilt m X i=1

ti ≤ m · max ti , 1≤i≤m

d.h. die maximale Laufzeit einer einzelnen Operation ist sicherlich eine obere Schranke f¨ur die amortisierte Laufzeit, in vielen F¨allen lassen sich aber wesentlich bessere Schranken angeben. Wir betrachten dazu als Beispiel das Inkrementieren einer bin¨aren Zahl. Ausgehend von dem Wert 0, addieren wir stets den Wert 1. Die Kosten einer solchen Addition seien dabei gleich der Anzahl der sich a¨ ndernden Bits. Ist das letzte Bit der aktuellen Zahl eine 0, so a¨ ndert sich offensichtlich bei Addition von 1 nur ein einziges Bit; besteht die aktuelle Zahl hingegen aus einer Folge von Einsen, so a¨ ndern sich alle Bits der Zahl. Die Kosten einzelner Operationen sind also sehr unterschiedlich, Tabelle 4 zeigt ein Beispiel. Eine einfache Analyse f¨ur m durchgef¨uhrte Inkrementierungsschritte liefert die Gesamtlaufzeit m log m, da die gr¨oßte auftretende Zahl nach m Inkrementierungsschritten log m Bits hat. Damit ist also log m eine obere Schranke f¨ur die amortisierte Laufzeit eines Inkrementierungsschrittes.


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

25

Tabelle 4: Die Anzahl Operationen beim Inkrementieren eines bin¨aren Z¨ahlers. Zahl 0000 0001 0010 0011 0100 0101 0110 0111 1000 ....

ge¨anderte Bits 1 2 1 3 1 2 1 4 .

Man kann in diesem Fall aber leicht eine wesentlich bessere obere Schranke f¨ur die amortisierte Laufzeit angeben, denn die Anzahl Operationen bei m durchgef¨uhrten Inkrementierungsschritten betr¨agt: m+2 m+4 m + 2blog mc m+1 c·1+b c·2+b c·3+. . .+b blog mc+1 c·(blog mc+1) = b 2 4 8 2

blog mc+1

X

i·b

i=1

m 1 + c. 2i 2

Letztere Summe kann durch 2m abgesch¨atzt werden. Somit betragen die amortisierten Kosten pro Inkrementierungsschritt lediglich 2. Die Berechnung der amortisierten Laufzeit kann man vielfach mit Hilfe der sogenannten Potenzialmethode vereinfachen. Sei Ψ eine Funktion, die jeder Konfiguration D i eine reelle Zahl zuordnet und die Ψ(Di ) ≥ Ψ(D0 ) erf¨ullt. Die Funktion Ψ wird Potenzialfunktion genannt. Dann definiert man: t∗i := ti + Ψ(Di ) − Ψ(Di−1 ). Es gilt sodann: m X i=1

t∗i

=

m X i=1

(ti + Ψ(Di ) − Ψ(Di−1 )) =

m X i=1

ti − Ψ(D0 ) + Ψ(Dm ) ≥

m X

ti .

i=1

P P ∗ Somit liefert m Schranke f¨ur m i=1 ti eine obere i=1 ti . Bei geeigneter Wahl der PotenzialfunkPm ∗ P tion Ψ l¨asst sich die Summe i=1 ti vielfach einfacher berechnen, als die Summe m i=1 ti . Wir betrachten dazu nochmals das obige Beispiel des Inkrementierens eines bin¨aren Z¨ahlers. Wir definieren wir uns die Potenzialfunktion Ψ als die Anzahl der Einsen in der aktuellen Zahl. Offensichtlich ist Ψ immer positiv und weist der Konfiguration D 0 den Wert 0 zu. Somit gilt P ∗ Ψ(Di ) ≥ Ψ(D0 ) f¨ur alle i. Zur Berechnung der Summe m i=1 ti betrachten wir einen einzelnen Wert t∗i = ti + Ψ(Di ) − Ψ(Di−1 ). Sei l die gr¨oß te Zahl, so dass die letzten l Bits der Bin¨arzahl den Wert 1 haben. Um zum Wert der n¨achsten Zahl zu kommen m¨ussen dann


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

26

offensichtlich l + 1 Bits ge¨andert werden, also gilt t i = l + 1. In der neuen Zahl werden die letzten l Bits auf 0 gesetzt und das Bit davor auf 1. Somit gilt Ψ(D i ) = Ψ(Di−1 ) − l + 1. Wir erhalten daher: t∗i = (l + 1) + (Ψ(Di−1 ) − l + 1) − Ψ(Di−1 ) = 2. P ∗ Somit gilt m i=1 ti = 2m und wir erhalten damit wiederum, dass die amortisierten Kosten pro Inkrementierungsschritt h¨ochstens 2 betragen. Beispiel F¨ur das Erklimmen einer Treppe sind die folgenden beiden Operationen m¨oglich: 1) Aufstieg um eine Stufe, 2) Abstieg um k Stufen. Eine beliebige Folge von r solchen Operationen ben¨otigt O(r) Schritte. Beispiel Die Knoten eines Graphen sollen so angeordnet werden, dass f¨ur jedes i gilt: Knoten i hat mindestens so viele Nachbarn unter den ersten i − 1 Knoten, wie jeder der Knoten i + 1, . . . , n. Um in linearer Zeit eine solche Anordnung zu bestimmen kann eine Bucket-Liste verwendet werden. Zur Bestimmung des Knotens, der jeweils die meisten Nachbarn in die Menge der bereits ausgew¨ahlten Knoten hat ist amortisiert konstante Laufzeit erforderlich. Beispiel Ein Speicherverwaltungsmanager eines Betriebssystems arbeitet nach folgendem Prinzip: Jeder Nutzer hat zu Beginn einen Speicherbereich von 1 Byte. Falls der aktuelle Speicherbereich nicht ausreicht, wird bei Anforderung eines weiteren Bytes ein doppelt so großer Speicherbereich zur Verf¨ugung gestellt, und der Inhalt des bisherigen Speicherbereichs dorthin kopiert. Dann ben¨otigt jede Speicheranforderung amortisiert konstant viel Zeit.

2.3 Fibonacci-Heaps In vielen Anwendungen wird eine Datenstruktur f¨ur Mengen von gewichteten Elementen ben¨otigt, die die Operationen I NIT (Erzeugen einer leeren Menge), I NSERT (Einf¨ugen eines Elementes in die Menge), E XTRACT-M IN (Entfernen eines Elementes geringsten Gewichtes) und ¨ D ECREASE -K EY (Andern des Gewichtes eines in der Menge befindlichen Elementes) bereitstellen. Beispiele stellen der Algorithmus von Dijkstra zur Berechnung k¨urzester Pfade und der Algorithmus von Prim zur Berechnung minimal spannender B¨aume (siehe n¨achstes Kapitel) dar. Bei beiden Algorithmen werden f¨ur einen Graphen mit n Knoten und m Kanten die Operationen I NSERT und E XTRACT-M IN jeweils n mal aufgerufen w¨ahrend die Operation D ECREASE -K EY bis zu m mal aufgerufen werden kann. Fibonacci-Heaps stellen eine Datenstruktur dar, die lediglich O(1) amortisierte Zeit f¨ur eine D ECREASE -K EY Operation ben¨otigen und gleichzeitig auch mit O(log n) eine g¨unstige Laufzeit f¨ur die beiden anderen Operationen aufweisen. In Tabelle 5 ist ein Vergleich der Laufzeiten verschiedener Implementationen angegeben. Die letzte Zeile der Tabelle gibt die Laufzeit f¨ur die Algorithmen von Dijkstra bzw. Prim f¨ur einen Graphen auf n Knoten und m Kanten an. Ein Beispiel, das zeigt, dass die Anzahl der


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

Operation

Listen

bin¨are Heaps

Fibonacci Heaps

Init

O(1)

O(1)

O(1)

O(1)

Insert

O(log n)

O(n)

Extract Min

O(1)

Decrease Key

O(n2 + m)

Dijkstra/Prim

27

O(1)

O(log n)

O(log n)∗

O((n + m) log n)

O(n log n + m)

O(log n)

O(1)∗

Tabelle 5: Laufzeitvergleich verschiedener Implementationen einer Datenstruktur f¨ur Mengen mit gewichteten Elementen, die die Operationen I NIT, I NSERT, E XTRACT-M IN und PSfrag replacements D ECREASE -K EY unterst¨utzt. DiePSfrag Anzahlreplacements der aktuell in der Menge befindlichen Elemente ist ∗ =amortisiert mit n bezeichnet. D ECREASE -K EY Operationen bei dem Algorithmus von Dijkstra tats¨achlich m betragen kann ist der Kn mit Gewicht 2(j − i) − 1 auf der Kante (i, j) mit j > i. Bei der Bestimmung eines k¨urzesten Pfades von Knoten 1 zu n wird mit jeder Kante eine D ECREASE -K EY Operation durchgef¨uhrt. F¨ur n = 6 ist der entsprechende Graph in Abbildung 14a) dargestellt. 2

4

4

1 3

5

3 81 11 12 6 13 14

3

1

3

5

7

5

1

1

2

6

8 9

3

7 9

1

11

5

5 7

3

1

4

1

3

5

4

12

1

2

13

2

14

1

1

1

a)

b)

Abbildung 14: Beispiele von Graphen f¨ur die beim Dijkstra-Algorithmus m D ECREASE -K EY Operationen erforderlich sein k¨onnen. Man ben¨otigt ein etwas komplizierteres Beispiel, um zu sehen, dass bei Benutzung von bin¨aren Heaps eine Laufzeit von m log n auftreten kann. Dazu betrachte wiederum einen vollst¨andigen Graphen dessen Kanten in der Reihenfolge (2, 1), (3, 2), (3, 1), (4, 3), (4, 2), (4, 1), (5, 4), . . . durchnummeriert seien. Gibt man nun jeder Kante der Form (i, i − 1) das Gewicht 1 und den anderen Kanten jeweils ein Gewicht, das um genau 1 kleiner ist als die Nummer der Kante, so sind die Kosten einer jeden D ECREASE -K EY Operation gleich log n, wobei n die aktuelle Anzahl Elemente im Heap bezeichnet. F¨ur n = 6 ist der entsprechende Graph in Abbildung 14b) dargestellt.


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

28

Ein Fibonacci-Heap ist eine Ansammlung von Heaps, d.h. Wurzelb¨aumen mit der Eigenschaft, dass die Kinder eines jeden Elementes ein mindestens so großes Gewicht haben wie das Element selbst. Die Wurzeln aller zu einem Fibonacci-Heap geh¨orenden Wurzelb¨aume werden in einer Wurzelliste gehalten, die als doppeltverkettete ringf¨ormige Liste realisiert wird. Ein Pointer min zeigt jeweils auf das Element geringsten Gewichtes in der Wurzelliste. Ein FibonacciHeap H besitzt die folgenden Komponenten: H.num elements H.min

Anzahl Elemente im Fibonacci-Heap H Pointer auf das Element geringsten Gewichtes

: :

F¨ur die Initialisierung eines Fibonacci-Heaps m¨ussen lediglich diese beiden Werte initialisiert werden. Abbildung 15 zeigt die entsprechende Prozedur. fibonacci heap.init 1 2

min := nil num elements := 0 Abbildung 15: Initialisierung eines Fibonacci-Heaps

Die Kinder eines jeden Elementes im Fibonacci-Heap werden in einer doppelt verketteten ringf¨ormigen Liste gehalten. Diese wird dadurch realisiert, dass jedes Element die beiden Zeiger right sibling und left sibling besitzt. Diese beiden Zeiger werden auch verwendet, um die ringf¨ormige Wurzelliste zu realisieren. Alle weiteren Komponenten die pro Element x ben¨otigt werden sind nachfolgend beschrieben: x.right sibling x.left sibling x.first child x.parent

: : : :

x.num children x.key x.marked

: : :

x.object

:

Zeiger auf den rechten Nachbarn von x. Zeiger auf den linken Nachbarn von x. Zeiger auf ein Kind von x. Zeiger auf den Vater von x. Dieser hat Wert nil, falls x Element der Wurzelliste ist. Anzahl Kinder von x. Gewicht, das x zugeordnet ist. Ein Knoten wird markiert, wenn er ein Kind verliert nachdem er Kind eines anderen Knoten wurde. Zeiger auf das Objekt, das durch x repr¨asentiert wird.

Um ein Element in den Fibonacci-Heap einzuf¨ugen, wird dieses einfach in die Wurzelliste ¨ eingef¨ugt. Ubergeben wird der Prozedur fibonacci heap.insert (Abbildung 16) ein Zeiger auf das einzuf¨ugende Objekt sowie dessen Gewicht. Zur¨uckgeliefert wird ein Zeiger auf das neue Element im Fibonacci-Heap. Das Entfernen des Elementes minimalen Gewichtes gestaltet sich a¨ hnlich einfach wie das Einf¨ugen eines Elementes. Die Prozedur fibonacci heap.extract min (Abbildung 17) liefert in der Variablen object das Objekt geringsten Gewichtes zur¨uck. Dazu wird der Zeiger H.min benutzt, der auf das minimale Element zeigt. Dieses wird aus der Wurzelliste entfernt und alle sei-


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

29

fibonacci heap.insert (object, key, element) 1 new (x) 2 x.num children := 0 3 x.parent := nil := nil 4 x.first child 5 x.marked := false 6 x.key := key 7 x.object := object 8 element := x 9 f¨uge x in die Wurzelliste ein 10 aktualisiere gegebenenfalls H.min 11 H.num elements := H.num elements +1 Abbildung 16: Einf¨ugen eines Elementes in einen Fibonacci-Heap ne Kinder in die Wurzelliste eingef¨ugt. Anschließend wird die Prozedur fibonacci heap.consolidate aufgerufen. Diese reorganisiert den Fibonacci-Heap so, dass keine zwei Wurzeln in der Wurzelliste die gleiche Anzahl Kinder haben. fibonacci heap.extract min (object) 1 object := H.min.object 2 f¨uge alle Kinder von H.min in die Wurzelliste ein 3 entferne H.min aus Wurzelliste 4 if H.num elements = 1 5 then H.min := nil 6 else consolidate 7 H.num elements := H.num elements −1 Abbildung 17: Entfernen eines Elementes minimalen Gewichtes aus einem Fibonacci-Heap F¨ur die Reorganisation des Fibonacci-Heaps in der Prozedur fibonacci heap.consolidate (Abbildung 18) werden je zwei Wurzeln in der Wurzelliste, die die gleiche Anzahl Kinder haben, zusammengefasst, indem die Wurzel mit gr¨oßerem Gewicht zu einem Kind der anderen Wurzel gemacht wird. Dazu wird ein Feld A[0 . . . D(H.num elements)] benutzt, welches an Stelle i auf eine Wurzel mit i Kindern zeigt falls eine solche existiert. Ansonsten enth¨alt das Feld den Wert nil. Die Funktion D gibt die maximal auftretende Anzahl Kinder eines Elementes an. Wir werden sp¨ater sehen, dass D(n) = O(log n) gilt (siehe Lemma 22). Das Vereinigen von zwei Wurzelb¨aumen wird so lange iteriert, bis alle Wurzeln unterschiedliche Anzahl Kinder haben. Abschließend muss der Wert H.min aktualisiert werden, indem das Element minimalen Gewichtes aus der Wurzelliste gesucht wird. Nachfolgend beschreiben wir noch die Prozedur fibonacci heap.decrease key (Abbildung 19). Dieser wird ein Element x des Fibonacci-Heaps und das neue Gewicht key u¨ bergeben, welches


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

30

fibonacci heap.consolidate 1 for i := 0 to D(H.num elements) do A[i] := nil 2 for w in Wurzelliste von H do 3 x := w 4 while A[x.num children] 6= nil do 5 y := A[x.num children] 6 if x.key > y.key then vertausche x und y 7 entferne y aus der Wurzelliste von H und mache es zu Kind von x 8 y.marked := false 9 A[x.num children] :=nil 10 x.num children := x.num children+1 11 A[x.num children] := x 12 aktualisiere H.min Abbildung 18: Reorganisation eines Fibonacci-Heaps nach Entfernen des minmalen Elementes kleiner sein muss, als das alte Gewicht. Falls x nicht Wurzelknoten ist und der Vater y von x ein gr¨oßeres Gewicht als x hat, so w¨are die Heap-Eigenschaft verletzt. In diesem Fall wird daher x aus der Kinderliste von y entfernt und in die Wurzelliste eingef¨ugt. Dies geschieht in der Prozedur cut. fibonacci heap.decrease key (x, key) 1 2 3 4

x.key := key y := x.parent if (y 6=nil) and (key < y.key) then cut (x, y) if key < H.min.key then H.min := x Abbildung 19: Verkleinern des Gewichtes eines Elementes des Fibonacci-Heaps

Die Prozedur cut (Abbildung 20) u¨ berpr¨uft zudem, ob x bereits das zweite Kind ist, das seinem Vater entrissen wurde. Falls dies der Fall ist, so wird rekursiv die cut-Prozedur so lange fortgesetzt, bis man an einem Wurzelknoten oder einem unmarkierten Knoten ankommt. Dieses Vorgehen wird sich sp¨ater bei der Laufzeitanalyse als wichtig herausstellen.

2.4 Laufzeitanalyse der Fibonacci-Heap Operationen F¨ur die amortisierte Laufzeitanalyse der Fibonacci-Heap Operationen definieren wir f¨ur einen Fibonacci-Heap H die Potenzialfunktion Ψ(H) := w(H) + 2 · m(H) wobei w(H) die Anzahl Wurzelknoten und m(H) die Anzahl markierter Knoten in H bezeichnet. Offensichtlich gilt Ψ(H) ≥ 0 und Ψ(H) = 0 nach der Initialisierung des Fibonacci-Heaps


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

31

fibonacci heap.cut (x, y) 1 2 3 4 5 6 7 8 9

entferne x aus der Kinderliste von y f¨uge x in die Wurzelliste ein x.marked := false z := y.parent if z 6=nil then if not y.marked then y.marked := true else cut (y, z) Abbildung 20: Abschneiden von Elementen, die ihr zweites Kind verlieren.

H. F¨ur die maximale Anzahl Kinder D(n), die ein Element im Fibonacci-Heap mit n Elementen haben kann, wird nachfolgend eine Schranke hergeleitet. Lemma 20 Es sei x ein Element eines Fibonacci-Heaps mit Kindern y 1 , y2 , . . . , yk mit k = x.num children, wobei die Kinder in der Reihenfolge ihres Anf u¨ gens an x nummeriert seien. Dann gilt yi .num children≥ i − 2 f¨ur i = 2, 3, . . . , k. Beweis. Nur in Zeile 7 der Prozedur consolidate wird ein Element zu einem Kind eines anderen. Zu dem Zeitpunkt wo das Element y i Kind von x wird hatte x bereits die Kinder y1 , . . . , yi−1 . Somit gilt x.num children ≥ i − 1. Da y i nur Kind von x werden kann, wenn diese in der Prozedur consolidate gleich viele Kinder haben, muss auch y i .num children ≥ i − 1 gelten. Nachfolgend kann das Element y i in der Prozedur cut maximal ein Kind verloren haben, da es danach markiert wird und bei Verlust eines weiteren Kindes abgeschnitten wird. Somit gilt yi .num children ≥ i − 2. t u

Sei x ein Element eines Fibonacci-Heaps. Dann bezeichne im Folgenden x.size die Anzahl Elemente einschließlich x im Baum unterhalb von x. Die i-te Fibonacci-Zahl F i ist durch die Rekursion F0 := 0, F1 := 1 und Fi+2 := Fi+1 + Fi definiert. Lemma 21 Es sei x ein Element eines Fibonacci-Heaps, k := x.num children und φ := (1 + √ 5)/2. Dann gilt x.size ≥ Fk+2 ≥ φk . Beweis. Es bezeichne sk den kleinstm¨oglichen Wert von z.size f¨ur alle Elemente z mit z.num children = k. Offensichtlich gilt s 0 = 1, s1 = 2 und s2 = 3. Es seien y1 , y2 , . . . , yk die


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

32

Kinder von x in der Reihenfolge ihres Anf¨ugens an x nummeriert. Dann gilt nach Lemma 20: x.size ≥ sk ≥ 2 +

k X

si−2

i=2

Wegen F2 = 1 und F3 = 2 gilt si ≥ Fi+2 f¨ur i = 0, 1 und per Induktion: sk ≥ 2 +

k X i=2

si−2 ≥ 2 +

k X

Fi = 1 +

i=2

k X

Fi = Fk+2 .

i=0

Dabei folgt letzte Gleichheit durch Induktion unter Ausnutzung der Rekursionsgleichung f¨ur die Fibonacci-Zahlen. Ebenso l¨asst sich induktiv zeigen, dass Fi =

φi − (−φ)−i √ 5

gilt. Damit erh¨alt man Fk+2

= ≥

φk+2 − (−φ)−(k+2) √ 5     k+2 −(k+2) φk 1 1 φ −φ φk 2 2 √ = √ φ − 2k+2 φ − 2 ≥ √ = φk φ φ 5 5 5 t u

womit das Lemma bewiesen ist.

Lemma 22 D(n) ≤ blog φ nc mit φ = (1 +

5)/2.

Beweis. Sei x ein Element eines Fibonacci-Heaps mit n Elementen. Dann gilt n ≥ x.size≥ φx.num children . Damit gilt also x.num children ≤ log φ n und da D(n) eine ganze Zahl sein muss folgt damit die Behauptung.

t u

Satz 23 Bei Verwendung von Fibonacciheaps ben o¨ tigen die Operationen Init, Insert und DecreaseKey jeweils amortisiert konstant viel Laufzeit. Die Operation ExtractMin ben o¨ tigt amortisiert O(log n) Laufzeit, wenn n die Anzahl Elemente des Fibonacciheaps bezeichnet.


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

33

Beweis. Die Operationen fibonacci heap.init und fibonacci heap.insert ben¨otigen offenbar nur konstante (amortisierte) Laufzeit. F¨ur die Operation fibonacci heap.extract min berechnen sich die amortisierten Kosten wie folgt: Um die Kinder eines Elementes in die Wurzelliste einzuf¨ugen sind O(D(n)) Operationen ausreichend. Hinzu kommen die Kosten f¨ur die Operation fibonacci heap.consolidate. Dazu werden O(D(n)) Operationen f¨ur die Initialisierung des Arrays A ben¨otigt. Hinzu kommen maximal O(D(n) + w(H)) Operationen in der while-Schleife von fibonacci heap.consolidate: In jeder Ausf¨uhrung der while-Schleife wird die Anzahl der Elemente in der Wurzelliste um 1 reduziert, insgesamt k¨onnen maximal D(n) + w(H) Elemente in der Wurzelliste gewesen sein. Bei der Ausf¨uhrung von fibonacci heap.extract min werden keine Elemente neu markiert, es k¨onnen h¨ochstens Elemente in Zeile 8 von consolidate ihre Markierung verlieren. Die Potenzialdifferenz betr¨agt somit maximal D(n) + 1 − w(H), da vor der Ausf¨uhrung von fibonacci heap.extract min w(H) Elemente in der Wurzelliste enthalten sind und nach der Ausf¨uhrung maximal D(n) + 1 viele Elemente. Letzteres begr¨undet sich dadurch, dass die Elemente in der Wurzelliste alle eine unterschiedliche Anzahl von Kindern haben, und nur die Werte 0, 1, . . . , D(n) f¨ur die Anzahl Kinder zul¨assig sind. Somit betr¨agt die amortisierte Laufzeit der Operation fibonacci heap.extract min O(D(n) + w(H)) − w(H) + D(n) + 1. Skaliert man das Potenzial mit einem konstanten Faktor, der gr¨oßer als die Konstante in dem O-Term ist, so ist dies O(D(n)) = O(log n). F¨ur die Operation fibonacci heap.decrease key wird konstante Laufzeit ben¨otigt zus¨atzlich zu der Laufzeit, die f¨ur die rekursiven Aufrufe von fibonacci heap.cut aufgewendet werden muss. Die Laufzeit von fibonacci heap.cut ist O(1), so dass die Gesamtlaufzeit f¨ur fibonacci heap.decrease key bei c rekursiven Aufrufen von fibonacci heap.cut also O(c) betr¨agt. Betrachten wir nun die Potenzialdifferenz bei Ausf¨uhrung von fibonacci heap.decrease key. In jedem Aufruf von fibonacci heap.cut wird die Anzahl der Wurzelknoten um 1 erh¨oht. Die Anzahl Wurzelknoten erh¨oht sich somit um c. In jedem Aufruf von fibonacci heap.cut, bis auf eventuell den ersten Aufruf, wird die Markierung eines Knotens zur¨uckgenommen. Beim letztmaligen Aufruf von fibonacci heap.cut kann zudem ein Knoten neu markiert werden. Die Anzahl der markierten Knoten verringert sich also um mindestens c−2. Die Potenzialdifferenz nach einem Aufruf von fibonacci heap.decrease key betr¨agt somit −c + 4. Damit ergibt sich als amortisierte Laufzeit f¨ur fibonacci heap.decrease key der Wert O(c) − c + 4. Wiederum erh¨alt man bei geeigneter Skalierung der Potenzialfunktion, dass dies O(1) ist. t u

Korollar 24 Der Algorithmus von Dijkstra l a¨ sst sich mit einer Laufzeit von O(m + n log n)


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

34

t u

implementieren.

Damit haben wir auch bereits die bestm¨ogliche Implementation des Algorithmus von Dijkstra kennengelernt, da mithilfe dieses Algorithmus n Zahlen sortiert werden k¨onnen (sternf¨ormiger Graph bei dem die Kantengewichte die zu sortierenden Zahlen sind). F¨ur das nur auf Vergleichen basierende Sortieren ist bekannt, dass Θ(n log n) eine untere Schranke f¨ur die Laufzeit darstellt.

2.5 Graphen mit negativen Kantengewichten Der Algorithmus von Dijkstra hat den Nachteil, dass er nur f¨ur nicht negative Kantengewichte eine korrekte L¨osung liefert. Wir wollen in diesem Abschnitt einen Algorithmus kennenlernen, der k¨urzeste Pfade auch in Netzwerken bestimmen kann, die negative Kantengewichte haben. Als Motivation daf¨ur, dass man auch negative Kantengewichte zulassen m¨ochte betrachten wir die folgende Anwendung: Ein Spediteur m¨ochte einen LKW von A nach B fahren lassen, diesen jedoch nicht leer fahren lassen, sondern auf dem Weg m¨oglichst viel dadurch verdienen, dass er zur Strecke passende Auftr¨age annimmt. Dieses Problem l¨asst sich wie folgt als ein k¨urzeste Wege Problem modellieren: Der zugrunde liegende Graph ist das Straßennetz, wobei Knoten den Straßenkreuzungen und Kanten den Straßenabschnitten zwischen diesen Kreuzungen entspricht. Jede Kante bekommt als Gewicht die Kosten, die das Entlangfahren verursacht abz¨uglich eventueller Einnahmen, die dadurch realisiert werden k¨onnen, dass ein Auftrag angenommen wird, der das Transportieren von Ladung entlang dieser Strecke verlangt. Wenn die Kosten eines Streckenabschnittes geringer sind als die Einnahmen, so wird das Kantengewicht negativ. Ein k¨urzester Pfad von A nach B entspricht damit (unter einigen vereinfachenden Annahmen) einer Fahrtroute, bei der gr¨oßtm¨oglicher Gewinn erzielt werden kann. Wir erweitern nun das Modell noch einen Schritt weiter, indem wir nicht nur negative Kantengewichte sondern auch sogenannte gerichtete Kanten zulassen. Ein gerichteter Graph (oder Digraph) ist ein Paar D = (V, A) wobei V eine Menge von Knoten ist und A ⊆ V × V . Die Elemente aus A heißen gerichtete Kanten. Eine Kante der Form (v, v) ∈ A heißt Schleife. F¨ur x ∈ V definiere: N + (x) := {y ∈ V |∃(x, y) ∈ A}

N − (x) := {y ∈ V |∃(y, x) ∈ A}

Die Kardinalit¨aten der Mengen N + (x) und N − (x) werden mit d+ (x) und d− (x) bezeichnet. Man nennt diese beiden Werte den Ausgangsgrad und Eingangsgrad des Knotens x. Ein ungerichteter Graph l¨asst sich einfach in einen gerichteten Graphen umwandeln, indem man jede


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

35

Kante {x, y} durch die zwei gerichteten Kanten (x, y) und (y, x) ersetzt. Wie man leicht sieht, l¨asst sich der Algorithmus von Dijkstra auch auf gerichtete Graphen anwenden. Das Zulassen negativer Kantengewichte kann jedoch zu einem Problem f¨uhren: gibt es in einem Graphen Kreise, die negative L¨ange haben, so existiert eine k¨urzeste Verbindung nicht mehr notwendigerweise, da mehrfaches Durchlaufen des Kreises eine gegebene Verbindung k¨urzer machen k¨onnte. Damit eine k¨urzeste Verbindung zwischen zwei Knoten tats¨achlich existiert, muss also sichergestellt sein, dass dabei kein Kreis negativer L¨ange durchlaufen werden kann, ansonsten ist die gesuchte Verbindungsl¨ange beliebig klein. Ein Algorithmus, der k¨urzeste Verbindungen in Netzwerken bestimmt, bei denen auch negative Kantengewichte zugelassen sind, muss also insbesondere auch Kreise negativer L¨ange finden k¨onnen. Die Idee des Algorithmus von Bellman und Moore (siehe Abbildung 21) ist, die L¨ange eines k¨urzesten s, x-Pfades mittels dynamischer Programmierung zu bestimmen. Dazu wird der Wert dk (x) definiert, der die L¨ange eines k¨urzesten s, x-Pfades ist, der maximal k Kanten benutzt. Falls ein solcher Pfad nicht existiert, so wird die L¨ange auf ∞ gesetzt. Die Beobachtung ist nun, dass der Wert dn (x) gerade dem gesuchten Abstand dist(s, x) entspricht, falls der Graph keine Kreise negativer L¨ange enth¨alt. Sei G = (V, E) ein Graph mit Kantengewichtsfunktion l : E → R und s ein vorgegebener Knoten. Dann ist di wie folgt rekursiv definiert:

d0 (s) = 0,

d0 (x) = ∞ f¨ur x 6= s

und dk+1 (x) = min{dk (x), min {dk (v) + l(v, x)}} (v,x)∈E

Bellman-Moore (G, l : E → R, s) 1 2 3 4 5 6 7 8 9

for x ∈ V − {s} do d0 (x) := ∞ for i := 0 to n do di (s) := 0 for i := 1 to n do for (x, y) ∈ E do di (y) := min{di−1 (y), di−1 (x) + l(x, y)} for x ∈ V do if dn (x) 6= dn−1 (x) then return (false) else x.abstand := dn (x) Abbildung 21: Der Algorithmus von Bellman-Moore zur Berechnung k¨urzester Pfade.

Satz 25 In Graphen ohne negativen Kreisen arbeitet der Algorithmus von Bellman-Moore korrekt und hat eine Laufzeit von O(nm). Beweis. Die Schleife in den Zeilen 3–5 wird nm mal durchlaufen. Jeder Schleifendurchlauf


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

36

l¨asst sich in konstanter Zeit durchf¨uhren. Die Zeilen 1 und 2 sowie 6–9 sind in O(n) durchf¨uhrbar. Damit ergibt sich eine Gesamtlaufzeit von O(nm). Wir zeigen nun die Korrektheit des Algorithmus. Dazu zeigen wir zun¨achst dass gilt: dist(s, x) ≤ di (x) f¨ur alle x ∈ V und i = 0, . . . , n.

(1)

Wir beweisen dies durch Induktion u¨ ber i. F¨ur i = 0 gilt diese Aussage sicherlich. Wir nehmen nun an, dass dist(s, x) > di (x) gilt. Nach Induktionsvoraussetzung gilt dist(s, x) ≤ d i−1 (x). Damit gilt also di (x) < di−1 (x) und wegen di (x) = min{di−1 (x), min {di−1 (v) + l(v, x)}} (v,x)∈E

gibt es somit ein v ∈ V mit di−1 (v) + l(v, x) = di (x) < dist(s, x). Nun gilt: di−1 (v) + l(v, x) = di (x) < dist(s, x) ≤ dist(s, v) + l(v, x) . Dabei gilt die letzte Ungleichung, da ein k¨urzester s, x-Pfad h¨ochstens so lang sein kann, wie ein s, x-Pfad, der den Knoten v benutzt. Damit ergibt sich d i−1 (v) < dist(s, v) was einen Widerspruch zur Induktionsannahme darstellt. Somit gilt die Ungleichung (1). Betrachte einen k¨urzesten s, x-Pfad s = v 0 , v1 , . . . , vk = x. Wir behaupten nun dass f¨ur i = 0, . . . , k dist(s, vi ) = di (vi ) = di+1 (vi ) = . . . = dn (vi ) gilt. Wir beweisen dies durch Induktion u¨ ber i. F¨ur i = 0 gilt dist(s, v0 ) = dist(s, s) = 0 = d0 (s). Wegen (1) gilt di (s) ≥ dist(s, s) = 0 und da di monoton fallend ist in i gilt somit d i (s) = 0 f¨ur alle i. Wir nehmen nun an, dass di−1 (vi−1 ) = dist(s, vi−1 ) gilt und haben zu zeigen, dass dann auch d i (vi ) = dist(s, vi ) gilt. Nach (1) gilt di (vi ) ≥ dist(s, vi ). Zudem gilt di (vi ) ≤ dist(s, vi−1 )+l(vi−1 , vi ) = dist(s, vi ). Somit gilt di (vi ) = dist(s, vi ) und wegen der Monotonie von di und wegen (1) gilt daher auch dj (vi ) = dist(s, vi ) f¨ur alle j ≥ i. Es bleibt zu zeigen, dass falls von s aus erreichbare negative Kreise existieren, dies durch die Bedingung in Zeile 7 bemerkt wird. Falls d n (x) = dn−1 (x) f¨ur alle x ∈ V g¨alte, so w¨are dj (x) = dn (x) f¨ur alle x ∈ V und j > n. Dies kann aber nicht sein, da es mindestens einen Knoten geben muss, zu dem es von s aus einen Kantenzug beliebig kleiner L¨ange gibt. t u

Die Schleife in Zeile 3 im Algorithmus von Bellman-Moore muss nicht notwendigerweise nmal durchlaufen werden. Sobald dk (x) = dk−1 (x) f¨ur alle x ∈ V f¨ur ein k < n gilt kann ¨ abgebrochen werden, da sich in nachfolgenden Schleifendurchl¨aufen keine Anderungen der Werte ergeben k¨onnen.


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

37

Eine weitere M¨oglichkeit, um in der Praxis die Laufzeit des Algorithmus von Bellman-Moore zu verbessern, ist die Yen-Variante. Anstelle der bei Bellman-Moore verwendeten Rekursionsgleichung dk+1 (x) = min{dk (x), min {dk (v) + l(v, x)}} (v,x)∈E

werden in der Yen-Variante die beiden Rekursionsgleichungen

dk+1 (x) = min{dk (x), dk+1 (x) = min{dk (x),

min

{dk+1 (v) + l(v, x)}} f¨ur k gerade

min

{dk+1 (v) + l(v, x)}} f¨ur k ungerade

(v,x)∈E,v<x (v,x)∈E,v>x

benutzt. Dabei wird davon ausgegangen, dass auf den Knoten eine lineare Ordnung ,,<” existiert (indem diese beispielsweise durchnummeriert werden). Die Idee der Yen-Variante ist, dass man die Kanten des Graphen in zwei Mengen partitioniert: Zum einen die Kanten, die von kleineren zu gr¨oßeren Knoten verlaufen und zum anderen die Kanten, die von gr¨oßeren zu kleineren Knoten verlaufen. Der Wert di (x) bei der Yen-Variante gibt die L¨ange eines k¨urzesten Pfades von s nach x an, bei dem es zu maximal i Wechseln zwischen Kanten aus der ersten und der zweiten Partition kommt. Die Yen-Variante hat gegen¨uber der Originalversion von Bellman-Moore einen Laufzeitvorteil von Faktor 2. Im Falle, dass der Eingabegraph ein azyklischer gerichteter Graph ist, das heißt ein gerichteter Graph ohne gerichtete Kreise, kann man k¨urzeste Pfade von einem Knoten s ausgehend sogar in O(m + n) bestimmen. Dies liegt daran, dass man in azyklischen gerichteten Graphen in linearer Zeit eine Nummerierung der Knoten angeben kann, so dass alle Kanten zu dem Knoten mit gr¨oßerer Nummer gerichtet sind. In diesem Fall ben¨otigt die Yen-Variante lediglich einen Schleifendurchlauf. Eine v¨ollig andere M¨oglichkeit, k¨urzeste Wege Probleme zu l¨osen, f¨ur die allerdings nicht klar ist, wie sie sich auf Computeren realisieren l¨asst, ist die folgende. Man modelliere den Graphen, indem man die Kanten durch Seile der entsprechenden L¨ange realisiert. Dann findet man einen k¨urzesten Pfad zwischen zwei Knoten, indem man diese in entgegengesetzte Richtung so weit wie m¨oglich zieht. Ein k¨urzester Pfad ist dann eine Verbindung u¨ ber stramm gezogene Seile. ¨ In Tabelle 6 ist ein Uberblick u¨ ber die L¨osbarkeit verschiedener Varianten des k¨urzeste Wege Problems in Graphen gegeben. Falls die Kantengewichtsfunktion nicht negativ ist, so liefert der Algorithmus von Dijkstra eine optimale L¨osung. Falls negative Kantengewichte zugelassen sind, aber keine negativen Kreise existieren, so liefert im Fall von gerichteten Graphen der Algorithmus von Bellman-Moore eine optimale L¨osung. In ungerichteten Graphen l¨asst


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

Graphtyp

l≥0

l beliebig, negative Kreise erlaubt

l beliebig, keine negativen Kreise

gerichtet

Dijkstra

NP-vollst¨andig

Bellman–Moore

ungerichtet

Dijkstra

NP-vollst¨andig

∈ P via Matching

38

¨ Tabelle 6: Ein Uberblick u¨ ber Algorithmen zum Finden k¨urzester Wege in gerichteten und ungerichteten Graphen mit unterschiedlichen Kantengewichtsfunktionen l. sich ebenfalls ein k¨urzester Weg in polynomieller Zeit bestimmen. Dazu sind Matchingalgorithmen notwendig, die wir in einem sp¨ateren Kapitel kennenlernen werden. Falls negative Kantengewichte zugelassen sind und auch negative Kreise existieren, so wird das Problem NPvollst¨andig. Dies zeigt man leicht, indem man das Problem Hamiltonpfad darauf reduziert. Gewichtet man in einem Graphen alle Kanten mit −1, so existiert genau dann ein Hamiltonpfad zwischen zwei Knoten x und y, falls es einen Pfad zwischen diesen beiden Knoten der L¨ange 1 − n gibt. F¨ur den Nachweis, dass auch das Finden k¨urzester Wege, in denen jede Kante h¨ochstens einmal durchlaufen wird, NP-vollst¨andig ist, falls beliebige negative Kantengewichte erlaubt sind, gen¨ugt folgende Reduktion, die aus einem gegebenen Graphen G einen neuen Graphen G0 konstruiert: Der Graph G0 enth¨alt alle Knoten und Kanten von G. Gewichte jede Kante von G0 mit 1 und f¨uge f¨ur jeden Knoten x des Graphen G 0 zwei weitere Knoten x1 und x2 ein, und verbinde diese drei Knoten durch einen (gerichteten) Kreis mit Gewicht −3n. Genau dann enth¨alt der Graph G einen Hamiltonpfad, falls G 0 einen Weg der L¨ange n − 1 + (n − 2) · (−3n) enth¨alt, bei dem keine Kante mehrfach benutzt wird.

2.6 Kurzeste ¨ Wege zwischen allen Knotenpaaren H¨aufig trifft man das Problem, nicht nur die k¨urzesten Wege von einem Knoten zu einem oder allen anderen zu bestimmen, sondern f¨ur je zwei Knoten einen k¨urzesten Weg zwischen diesen zu bestimmen. Dieses Problem l¨asst sich nat¨urlich durch n-maliges Anwenden der Algorithmen von Dijkstra bzw. Bellman-Moore erreichen. Damit ergeben sich Laufzeiten von O(mn + n2 log n) bzw. von O(n2 m). Wir werden nun im Folgenden den Algorithmus von Floyd-Warshall kennenlernen, der dieses Problem sehr einfach und im Falle negativer Kantengewichte auch effizienter l¨ost. F¨ur einen Weg x1 , x2 , . . . , xk bezeichnen wir die Knoten x2 , x3 , . . . , xk−1 als innere Knoten des Pfades. Im Folgenden gehen wir davon aus, dass die Knoten des Graphen mit 1 bis n bezeichnet sind. Die Idee des Floyd-Warshall Algorithmus ist es, den Wert d i,j (k) zu betrachten: Dieser ist als die L¨ange eines k¨urzesten Pfades zwischen den Knoten i und j definiert, bei dem alle inneren Knoten in der Menge {1, . . . , k} liegen. Der Wert d i,j (n) ist dann offensichtlich die gesuchte L¨ange eines k¨urzesten Weges zwischen den Knoten i und j, falls der Graph keine


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

39

negativen Kreise enth¨alt. Da sich die Werte d i,j (0) leicht bestimmen lassen, liefert die folgende Rekursionsformel eine einfache M¨oglichkeit die Werte d i,j (k) zu bestimmen: di,j (k + 1) = min{di,j (k), di,k+1 (k) + dk+1,j (k)} . Der Algorithmus von Floyd-Warshall (siehe Abbildung 22) ist nun eine direkte Umsetzung dieser Rekursionsformel. Floyd-Warshall (G, l : E → R) 1 2 3 4 5

di,j (0) = ∞, falls i 6= j, di,i = 0, ∀i, j for k := 0 to n − 1 do for i := 1 to n do for j := 1 to n do di,j (k + 1) := min{di,j (k), di,k+1 (k) + dk+1,j (k)}

Abbildung 22: Der Algorithmus von Floyd-Warshall zur Berechnung k¨urzester Wege zwischen allen Knotenpaaren.

Satz 26 Der Algorithmus Floyd-Warshall berechnet in O(n 3 ) k¨urzeste Wege zwischen allen Paaren von Knoten eines Graphen, falls dieser keine negativen Kreise enth a¨ lt. Beweis. F¨ur die Korrektheit des Algorithmus reicht es zu zeigen, dass die oben angegebene Rekursionsformel korrekt ist. Betrachte hierzu einen k¨urzesten Weg zwischen den Knoten i und j, dessen innere Knoten in der Menge {1, . . . , k + 1} liegen. Falls der Knoten k + 1 in einem solchen Weg nicht vorkommt, so gilt offensichtlich d i,j (k + 1) = di,j (k). Falls der Knoten k + 1 in dem Weg vorkommt, so gilt d i,j (k + 1) = di,k+1 (k) + dk+1,j (k). Die Zeile 5 des Algorithmus Floyd-Warshall wird genau n 3 mal durchlaufen. Da sie in konstanter Zeit ausgef¨uhrt werden kann, ist die Laufzeit des Algorithmus O(n 3 ). t u F¨ur den Fall, dass der gegebene Graph nur o(n 2 ) Kanten enth¨alt gibt es noch eine schnellere M¨oglichkeit, k¨urzeste Wege zwischen allen Paaren von Knoten zu bestimmen. Falls keine negativen Kantengewichte vorkommen, so liefert das n-malige Anwenden des Algorithmus von Dijkstra in O(mn + n2 log n) das Ergebnis. Falls auch negative Kantengewichte vorkommen, aber keine negativen Kreise, so kann man die Kantengewichte durch einen Aufruf von BellmanMoore in O(nm) so transformieren, dass man das Problem auf eines reduzieren kann, in dem alle Kantengewichte nicht negativ sind. Dieses kann man dann wieder mit Dijkstra l¨osen. Damit ergibt sich also eine Laufzeit von O(mn + n 2 log n) f¨ur das Bestimmen k¨urzester Wege zwischen allen Knotenpaaren.


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

40

3 Minimal spannende B¨aume (Vorlesung 9–13) Motivation: k¨urzeste Telefonnetzwerke, Vernetzung von Rechnern Genau wie im vorangegangenen Kapitel betrachten wir im folgenden nur kantengewichtete Graphen. Wir haben gesehen, dass man mittels DFS oder BFS spannende B¨aume in einem zusammenh¨angenden Graphen in linearer Zeit berechnen kann. Wir wollen nun Algorithmen kennenlernen, die minimal spannende B a¨ ume berechnen k¨onnen, d.h. spannende B¨aume, deren Gesamtl¨ange minimal ist. Genauer: zu einem gegebenen zusammenh¨angenden Graphen G = (V, E) und Kantengewichtsfunktion l : E → R + ist ein spannender Baum B gesucht, der die P Summe e∈B l(e) minimiert.

3.1 Der Algorithmus von Kruskal Ein Ansatz, mit dem man minimal spannende B¨aume berechnen kann basiert auf einer einfachen Greedy-Strategie: Man starte mit einem leeren Graphen und f¨uge in jedem Schritt die jeweils k¨urzeste Kante hinzu, die keinen Kreis schließt. Dies ist genau die Idee des Algorithmus von Kruskal, siehe Abbildung 23. Kruskal (G, l : E → R) 1 2 3 4

sortiere E(G), so dass l(e1 ) ≤ l(e2 ) ≤ . . . ≤ l(em ) T := V (G) for i = 1 to m do if T + ei ist kreisfrei then T := T + ei

Abbildung 23: Der Algorithmus von Kruskal zur Berechnung minimal spannender B¨aume.

Satz 27 Der Algorithmus von Kruskal findet in einem zusammenh a¨ ngenden Graphen einen minimal spannenden Baum und kann mit Laufzeit O(m log n) implementiert werden. Beweis. Der Graph T , der vom Algorithmus Kruskal zur¨uckgeliefert wird, ist offensichtlich kreisfrei. Angenommen T ist nicht zusammenh¨angend. Dann gibt es eine Partition der Knoten von G in zwei nicht leere Teile, so dass in T keine Kante zwischen diesen beiden Teilen verl¨auft. Da G zusammenh¨angend ist, muss es mindestens eine Kante in G zwischen diesen beiden Teilen geben. Eine solche Kante w¨are aber vom Algorithmus Kruskal in Zeile 4 ausgew¨ahlt worden, da sie keinen Kreis schließen kann. Widerspruch. Wir zeigen nun, dass T tats¨achlich minimal spannender Baum ist. Sei T ∗ ein minimal spannender Baum so dass der kleinste Index i f¨ur den e i ∈ T aber ei 6∈ T ∗ gr¨oßtm¨oglich ist. Falls dieser Index nicht existiert, so gilt T = T ∗ und wir sind fertig. Ansonsten betrachte den Graphen T ∗ + ei . Dieser enth¨alt einen Kreis. Da T kreisfrei ist, muss dieser Kreis eine Kante


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

41

ej 6∈ T enthalten. Die Kanten, die vor ei in T eingef¨ugt wurden, sind gem¨aß Annahme auch alle in T ∗ enthalten. Anstelle von ei h¨atte der Algorithmus Kruskal auch jede andere Kante von T ∗ als n¨achste Kante aufnehmen k¨onnen, ohne einen Kreis zu erzeugen. Da der Algorithmus ei gew¨ahlt hat, muss also l(ej ) ≥ l(ei ) gelten. Dann ist jedoch T ∗ + ei − ej ein minimal spannender Baum, was im Widerspruch zur Wahl von T ∗ steht. Kommen wir nun zur Laufzeitbestimmung. Das Sortieren von m Zahlen l¨asst sich in O(m log m) = O(m log n) durchf¨uhren. Die for-Schleife in Zeile 3 und 4 wird m Mal durchlaufen. Der Test, ob T + ei kreisfrei ist l¨asst sich in konstanter Zeit wie folgt durchf¨uhren. F¨ur jeden Knoten merkt man sich die Komponente in der er liegt. Zu Beginn liegt jeder Knoten in einer anderen Komponente. Wird eine Kante eingef¨ugt, so werden zwei Komponenten zu einer vereinigt und die entsprechenden Werte aller Knoten in einer der beiden Komponenten auf den Wert der anderen gesetzt. Damit l¨asst sich Kreisfreiheit in konstanter Zeit testen, da lediglich getestet werden muss, ob die beiden Endknoten der einzuf¨ugenden Kante in unterschiedlichen Komponenten liegen. Es bleibt zu zeigen, dass das Aktualisieren der Komponentennummern der Knoten hinreichend schnell durchgef¨uhrt werden kann. Die Idee hierzu ist, dass man bei Einf¨ugen einer Kante den Knoten der kleineren Komponente als neuen Komponentenwert den der gr¨oßeren Komponente gibt. Damit ist sichergestellt, dass jeder Knoten maximal O(log n) Mal eine neue Komponentennummer bekommt, da die neue Komponente mindestens doppelt so groß ist wie die alte. Die Gesamtlaufzeit betr¨agt mithin O(m + n log n) f¨ur die Zeilen 3 und 4. Die Laufzeit f¨ur den Algorithmus von Kruskal ist daher O(m log n) t u

3.2 Der Algorithmus von Prim Die Laufzeit f¨ur den Algorithmus von Kruskal ist optimal in dem Sinne, dass das Sortieren der m Kanten im Allgemeinen nicht schneller als in O(m log n) durchgef¨uhrt werden kann. Wir haben bereits gesehen, dass der Algorithmus von Dijkstra mit Hilfe von Fibonacci-Heaps mit Laufzeit O(m + n log n) implementiert werden kann. Dieser Algorithmus berechnet nicht nur den Abstand von einem Knoten s zu allen anderen Knoten. Durch eine leichte Modifikatiuon dieses Algorithmus lassen sich auch minimal spannende B¨aume berechnen. Diese M¨oglichkeit einen minimal spannenden Baum zu bestimmen wird zumeist als Algorithmus von Prim bezeichnet (siehe Abbildung 24), obwohl vermutlich Jarnik der erste war, der diesen Algorithmus angegeben hat. Satz 28 Der Algorithmus von Prim findet in einem zusammenh a¨ ngenden Graphen einen mini-


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

42

Prim (G, l : E → R) 1 2 3 4

T := {s}, wobei s ∈ V (G) beliebig for i = 1 to n − 1 do w¨ahle Kante e = {x, y} mit x ∈ V (T ), y ∈ V (G) − V (T ), die l(.) minimiert T := T + y + e Abbildung 24: Der Algorithmus von Prim zur Berechnung minimal spannender B¨aume.

mal spannenden Baum und kann mit Laufzeit O(m + n log n) implementiert werden. Beweis. Wir zeigen induktiv, dass T jeweils Teilbaum eines minimal spannenden Baumes von G ist, der die Knotenmenge V (T ) spannt. Dies gilt sicherlich zu Beginn des Algorithmus nach Initialisierung in Zeile 1. Betrachte nun einen Durchlauf der for-Schleife, in dem eine Kante e = {x, y} mit x ∈ V (T ), y ∈ V (G) − V (T ) zu T hinzugef¨ugt wird. Dann ist T + y + e weiterhin ein Baum, da T dies nach Induktionsannahme ist und der Knoten y Grad 1 in T hat. Es bleibt zu zeigen, dass T + y + e Teilbaum eines minimal spannenden Baumes von G ist. Angenommen dies ist nicht der Fall. Sei T ∗ minimal spannender Baum von G, der T als Subbaum enth¨alt. Dann enth¨alt T ∗ + e einen Kreis. In diesem muss es eine Kante f geben, die einen Knoten aus V (T ) mit einem Knoten aus V (G) − V (T ) verbindet. Da der Algorithmus von Prim die Kante e gew¨ahlt hat, muss l(f ) ≥ l(e) gelten. Somit stellt T ∗ − f + e ebenfalls einen minimal spannenden Baum f¨ur G dar, was im Widerspruch zu der Annahme steht, dass T + y + e nicht Teilbaum eines minimal spannenden Baumes von G ist. Um eine Laufzeit von O(m + n log n) zu realisieren, merken wir uns f¨ur jeden Knoten die k¨urzeste Kante, die diesen mit dem aktuell gefundenen Baum T verbindet und geben dem Knoten als Wert die L¨ange dieser Kante. Falls eine solche Kante nicht existiert, so erh¨alt der Knoten den Wert ∞. Jedesmal wenn ein neuer Knoten in den Baum aufgenommen wird, m¨ussen lediglich die Werte seiner Nachbarn aktualisiert werden. In Zeile 3 ist jeweils der Knoten aus V (G)−V (T ) mit kleinstem Wert zu w¨ahlen. Damit ergibt sich bei Verwendung von FibonacciHeaps eine Laufzeit von O(m + n log n). t u

3.3 Matroide und der Greedy-Algorithmus Ein Unabh¨angigkeitssystem ist ein Paar M = (S, I), das folgenden Bedingungen gen¨ugt: 1) S ist eine endliche, nicht leere Menge 2) I ist eine Familie von Teilmengen von S mit der Eigenschaft, dass wenn A ∈ I und B ⊆ A dann gilt auch B ∈ I. Die Elemente von I heißen unabh a¨ ngige Mengen.


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

43

Gilt zudem die folgende, als Austauscheigenschaft bezeichnete Bedingung, so nennt man das Unabh¨angigkeitssystem ein Matroid. 3) Falls A ∈ I und B ∈ I und |A| < |B|, so gibt es ein x ∈ B \ A so dass A ∪ {x} ∈ I. Zwei Matroide M1 = (S1 , I1 ) und M2 = (S2 , I2 ) heißen isomorph, falls es eine bijektive Abbildung φ : S1 → S2 gibt, so dass f¨ur alle X ⊆ S1 gilt: φ(X) ist genau dann unabh¨angig in I2 , falls X unabh¨angig in I1 ist. Beispiele f¨ur Matroide

a) Graphische Matroide Sei G = (V, E) ein Graph. Dann ist M = (E, I) ein Matroid, wobei I alle kreisfreien Teilmengen von E beinhaltet. Offensichtlich gen¨ugt M den Eigenschaften 1) und 2) und ist somit ein Unabh¨angigkeitssystem. Zum Nachweis der Eigenschaft 3) betrachte A ⊆ E und B ⊆ E, die die Kantenmengen zweier W¨alder G A und GB sind, wobei |A| < |B| gelte. Dann besteht GA aus |V | − |A| vielen Komponenten (jede Kante reduziert die Anzahl komponenten um 1) und GB aus |V | − |B| vielen Komponenten. Der Wald G B enth¨alt somit weniger Komponenten als G A und es gibt somit mindestens eine Kante in GB , deren Endknoten in zwei unterschiedlichen Komponenten von G A liegen. Diese Kante kann zu GA hinzugef¨ugt werden, ohne einen Kreis zu erzeugen. b) Matrix-Matroide Es sei A = (aij ) eine m × n-Matrix mit Spaltenvektoren A 1 , . . . An . Dann ist M = (S, I) ein Matroid, wobei S = {1, . . . , n} die Menge der Indizes von Spaltenvektoren ist und X ⊆ S ist unabh¨angige Menge, falls die Spaltenvektoren {A j |j ∈ X} linear unabh¨angig sind. Offensichtlich ist M ein Unabh¨angigkeitssystem und die Eigenschaft 3) gilt auf Grund des Steinitzschen Austauschsatzes. Falls A eine Matrix u¨ ber F 2 ist, so wird M bin¨ares Matroid genannt. c) Uniforme Matroide Es sei S eine beliebige Menge mit n Elementen und I die Menge aller Teilmengen von S mit h¨ochstens k Elementen. Dann ist M = (S, I) offensichtlich ein Matroid, welches das uniforme Matroid genannt wird. Uniforme Matroide k¨onnen allein durch die Angabe von k und n spezifiziert werden. Man bezeichnet sie daher mit U k,n . Das Matroid Un,n heißt freies oder triviales Matroid . Es sei M = (S, I) ein Matroid. Eine unabh¨angige Menge A ∈ I heißt maximale unabh a¨ ngige Menge oder Basis, falls A ∪ {x} 6∈ I f¨ur alle x ∈ S \ A, d.h. keine Obermenge von A ist in I enthalten.


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

44

Proposition 29 In einem Matroid haben alle maximalen unabh a¨ ngigen Mengen die gleiche Gr¨oße. Beweis. Angenommen es gibt maximale unabh¨angige Mengen A, B ∈ I mit |A| < |B|. Dann gibt es nach 3) ein x ∈ B mit A∪{x} ist unabh¨angig. Dies ist ein Widerspruch zur Maximalit¨at von A. t u

In einem graphischen Matroid sind die maximalen unabh¨angigen Mengen genau die Kantenmengen der spannenden B¨aume. In einem Graphen mit n Knoten haben diese die Gr¨oße n − 1. Ein gewichtetes Matroid ist ein Matroid M = (S, I) zusammen mit einer Gewichtsfunktion P w : S → R>0 . F¨ur eine Menge A ∈ I ist w(A) als x∈A w(x) definiert.

Wir wollen nun in gewichteten Matroiden unabh¨angige Mengen gr¨oßten Gewichts finden. Dies ist eine Verallgemeinerung des Problems, einen minimal spannenden Baum in einem Graphen zu finden. Dazu muss man lediglich das zugeh¨orige graphische Matroid betrachten, und jedes Kantengewicht w durch C − w ersetzen, wobei C eine Zahl ist, die gr¨oßer als das gr¨oßte auftretende Kantengewicht ist. Greedy (M = (S, I), w : S → R>0 ) 1 2 3 4

sortiere S, so dass w(s1 ) ≥ w(s2 ) ≥ . . . ≥ w(sn ) A := ∅ for i = 1 to n do if A ∪ {si } ∈ I then A := A ∪ {si }

Abbildung 25: Der Greedy Algorithmus zur Berechnung unabh¨angiger Mengen gr¨oßten Gewichts. Lemma 30 Es sei M = (S, I) mit w : S → R>0 ein gewichtetes Matroid. Falls der Algorithmus Greedy ein erstes Element x wa¨ hlt, so gibt es eine unabh¨angige Menge A ⊆ S gr¨oßten Gewichts, die x enth¨alt. Beweis. Falls der Algorithmus Greedy kein x w¨ahlt, so ist ∅ die einzige unabh¨angige Menge in I. Ansonsten sei B eine beliebige unabh¨angige Menge gr¨oßten Gewichts mit x 6∈ B. Da f¨ur alle y ∈ B die Menge {y} eine unabh¨angige Menge ist, muss f¨ur jedes y ∈ B gelten: w(y) ≤ w(x). Es sei A := {x}. Gem¨aß 3) k¨onnen nun sukzessive Elemente von B zu A hinzugef¨ugt werden, so dass A unabh¨angig bleibt. Dann sind am Ende alle Elemente aus B mit Ausnahme eines Elements y ∈ B zu A hinzugef¨ugt, d.h. es gilt: A = B \ {y} ∪ {x}. Damit gilt


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

w(A) ≥ w(B) und somit ist A eine unabh¨angige Menge gr¨oßten Gewichts, die x enth¨alt.

45

t u

Gegeben sei ein gewichtetes Matroid M = (S, I) mit w : S → R >0 und ein x mit {x} ∈ I. Dann bezeichne Mx = (Sx , Ix ) mit wx : Sx → R>0 das gewichtete Matroid, das wie folgt definiert ist: Sx := {y ∈ S|{x, y} ∈ I}, Ix := {B ⊆ S \ {x}|B ∪ {x} ∈ I} und wx sei die Einschr¨ankung von w auf Sx . Es ist nun leicht zu sehen, dass Mx Matroid ist. Lemma 31 Sei M = (S, I) mit w : S → R>0 ein gewichtetes Matroid und x das erste Element, das der Greedy Algorithmus w a¨ hlt. Ist A0 unabh¨angige Menge gr¨oßten Gewichts in Mx , so ist A := A0 ∪ {x} eine unabh¨angige Menge gr¨oßten Gewichts in M . Beweis. Es sei A0 eine beliebige unabh¨angige Menge in M x . Dann ist nach Definition von Mx die Menge A := A0 ∪ {x} unabh¨angig in M . Ist umgekehrt A eine unabh¨angige Menge in M , die x enth¨alt, so ist A0 := A \ {x} unabh¨angige Menge in Mx . Es gilt w(A) = w(A0 ) + w(x). Somit ist A genau dann unabh¨angige Menge gr¨oßten Gewichts in M , falls A 0 eine solche in Mx ist. t u

Satz 32 Der Greedy Algorithmus findet in O(n log n+nf (n)) eine unabh a¨ ngige Menge gr¨oßten Gewichts in einem gewichteten Matroid M = (S, I) mit w : S → R >0 , wobei O(f (n)) die Laufzeit ist, um zu testen, ob A ∪ {x} unabh a¨ ngig ist. Beweis. F¨ur das Sortieren der Elemente von S ist eine Laufzeit von O(n log n) erforderlich. Die Schleife in den Zeilen 3 und 4 wird n-mal durchlaufen und ben¨otigt somit O(nf (n)) Laufzeit insgesamt. Ist B 6= ∅ eine unabh¨angige Menge gr¨oßten Gewichts in M , so w¨ahlt der Greedy Algorithmus ein erstes Element x, da f¨ur alle y ∈ B die Menge {y} unabh¨angig ist. Nach Lemma 30 gibt es eine unabh¨angige Menge A in M , die x enth¨alt. Nach Auswahl von x kann der Greedy Algorithmus als Algorithmus auf M x interpretiert werden. Lemma 31 impliziert somit die Korrektheit des Greedy Algorithmus. t u

Wir zeigen nun, dass auch die Umkehrung von Satz 32 gilt, d.h. der Greedy Algorithmus liefert in Unabh¨angigkeitssystemen genau dann unabh¨angige Mengen gr¨oßten Gewichts, wenn es sich um Matroide handelt. Satz 33 Es sei M = (S, I) ein Unabha¨ ngigkeitssystem. Falls der Greedy Algorithmus f u¨ r


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

46

beliebige Gewichtsfunktionen w : S → R >0 eine unabh¨angige Menge gr¨oßten Gewichts findet, so ist M ein Matroid. Beweis. Angenommen M ist kein Matroid, d.h. es gibt Mengen A, B ∈ I mit |A| < |B| aber f¨ur alle x ∈ B \ A ist A ∪ {x} 6∈ I. Definiere eine Gewichtsfunktion w durch   |B| + 1, falls x ∈ A 1 w(x) := |A| + 1, falls x ∈ B \ A |B| − |A|  1/|S|, sonst

Dann gilt w(A) = |A| · (|B| + 1)/(|B| − |A|) < |B| · (|A| + 1)/(|B| − |A|) ≤ w(B) und somit ist A nicht unabh¨angige Menge gr¨oßten Gewichts. Der Greedy Algorithmus liefert zun¨achst die Elemente von A, da diese gr¨oßtes Gewicht haben. Da nach Annahme A∪{x} 6∈ I f¨ur x ∈ B\A kann der Greedy Algorithmus im Weiteren nur Elemente aus S \ B zu A hinzuf¨ugen. Deren Gesamtgewicht ist aber kleiner als 1/(|B| − |A|). Wegen w(A) + 1/(|B| − |A|) < w(B) liefert der Greedy Algorithmus daher nicht eine unabh¨angige Menge gr¨oßten Gewichts. Dies ist ein Widerspruch. t u

Es sei M = (S, I) ein Matroid. Dann heißt X ⊆ S abh a¨ ngige Menge, falls X 6∈ I. Ein Kreis C ist eine minimale abh¨angige Menge, d.h. eine Menge C mit C \ {x} ∈ I f¨ur alle x ∈ C. Satz 34 Es sei M = (S, I) ein Matroid und A ∈ I. F u¨ r x ∈ S \ A ist A ∪ {x} entweder in I oder A ∪ {x} enth¨alt einen eindeutig bestimmten Kreis. Beweis. Es sei A ∪ {x} 6∈ I. Definiere C := {c ∈ S|(A ∪ {x}) \ {c} ∈ I}. Dann ist C 6∈ I, denn ansonsten betrachte eine maximale Menge D mit C ⊆ D ⊆ A ∪ {x} mit D ∈ I. Da A maximale unabh¨angige Menge in A ∪ {x} ist, muss |D| = |A| gelten. Daraus folgt, dass es ein d ∈ A gibt mit D = (A ∪ {x}) \ {d}. Dann aber w¨are d ∈ C, was ein Widerspruch ist, da C ⊆ D ist, aber d 6∈ D. Nach Definition von C ist C \{c} ∈ I f¨ur alle c ∈ C, da C ⊆ A∪{x} und (A∪{x})\{c} ∈ I. Die Menge C ist somit ein Kreis. Es bleibt zu zeigen, dass C eindeutiger Kreis ist. Sei D ein beliebiger weiterer Kreis in A∪{x}. Falls es ein c ∈ C \ D gibt, so ist D eine Teilmenge von (A ∪ {x}) \ {c}, also D ∈ I und somit kein Kreis. Also gilt C ⊆ D und wegen der Minimalit¨at muss dann C = D gelten. t u

Es sei M = (S, I) ein Matroid und X ⊆ S. Dann ist der Rang r(X) von X als die Gr¨oße einer gr¨oßten unabh¨angigen Menge in X definiert. In graphischen Matroiden ist der Rang einer Menge F ⊆ E durch r(F ) = |V (F )| − Anzahl Komponenten von (V (F ), F ) gegeben.


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

47

Satz 35 Es sei M = (S, I) ein Matroid. Dann ist auch M ∗ = (S, I ∗ ) ein Matroid, wobei I ∗ := {X ⊆ S|es gibt Basis B von M mit X ⊆ S \ B}. Die Rangfunktion r ∗ von M ∗ ist durch r ∗ (X) = |X| + r(S \ X) − r(S) gegeben. Beweis. Offenbar ist M ∗ ein Unabh¨angigkeitssystem, denn mit X ist auch jede Teilmenge von X in I ∗ . Zum Nachweis der Austauscheigenschaft seien A 1 , A2 ∈ I ∗ mit |A1 | < |A2 |. Zu zeigen ist dann: Es gibt ein x ∈ A2 \ A1 mit A1 ∪ {x} ∈ I ∗ . Da A1 und A2 Mengen aus I ∗ sind, gibt es nach Definition Basen B 1 und B2 in M so dass A1 ⊆ S \ B1 und A2 ⊆ S \ B2 . Es sei B1 so gew¨ahlt, dass B1 ∩ B2 maximal ist. Falls es x ∈ A2 \ A1 gibt mit x 6∈ B1 , so ist A1 ∪ {x} ∈ I ∗ . Ansonsten gilt f¨ur alle x ∈ A2 \ A1 , dass x in B1 liegt, d.h. also A2 \ A1 ⊆ B1 . Elemente aus S, die in B1 ∩ B2 liegen, sind weder in A1 noch in A2 . Also enth¨alt A2 \ A1 maximal |B1 \ B2 | viele Elemente. Dann kann nicht B2 \ B1 ⊆ A1 gelten, da dann |A1 | ≥ |A2 | g¨alte. Somit gibt es mindestens ein y ∈ B 2 \ B1 mit y 6∈ A1 . Betrachte y ∪ (B2 ∩ B1 ). Erweitere diese Menge um Elemente von B 1 bis sie eine Basis ist. Damit erh¨alt man eine neue Basis, die mehr Elemente als B 1 mit B2 gemeinsam hat und disjunkt zu A1 ist. Dies ist ein Widerspruch zur Wahl von B 1 . F¨ur die Rangfunktion gilt: r ∗ (S) = |S| − r(S) und zudem r ∗ (X) = r ∗ (S) − (|S| − r(S \ X) − |X|) = |S| − r(S) − |S| + r(S \ X) + |X| = |X| + r(S \ X) − r(S). t u

Abschließend behandeln wir die Frage, wie ein Matroid M = (S, I) abgespeichert wird. Werden alle Mengen von I explizit gespeichert, so w¨are es trivial, eine unabh¨angige Menge gr¨oßten Gewichts zu finden, da man dann in linearer Zeit u¨ ber alle Mengen aus I laufen k¨onnte. Wir gehen hier daher normalerweise von einer kompakterer Repr¨asentation von Matroiden aus, wie dies z.B. der Fall bei graphischen Matroiden ist, die durch Angabe des Graphen implizit gegeben sind. Allerdings k¨onnen nicht alle Matroide kompakt repr¨asentiert werden, denn man kann n/2 zeigen, dass es mindestens 22 Matroide mit n Elementen gibt und somit im Allgemeinen exponentiell viel Speicherplatz daf¨ur notwendig ist. Wir gehen daher davon aus, dass ein Matroid implizit durch ein Orakel gegeben ist, welches eines der folgenden vier Orakel sein kann: 1) 2) 3) 4)

Unabh¨angigkeitsorakel: Kreisorakel: Basisorakel: Rangorakel :

ist F ⊆ S unabh¨angig? ist F ⊆ S ein Kreis? ist F ⊆ S eine Basis? r(F )

Man sagt, dass ein Algorithmus auf einem durch ein Orakel gegebenes Matroid orakelpolynomielle Laufzeit hat, falls seine Laufzeit polynomiell ist und nur polynomiell viele Orakelaufrufe ben¨otigt. Man kann zeigen, dass man jedes andere Orakel jeweils durch polynomiell viele Aufrufe des Unabh¨angigkeitsorakels bzw. des Rangorakels simulieren kann. Mit dem Basis-


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

48

und dem Kreisorakel k¨onnen solche Simulationen nicht durchgef¨uhrt werden.

3.4 Steinerb¨aume: Grundlegende Definitionen und NP-Vollst¨andigkeit Sei G = (V, E) ein Graph, ||.|| : E → R+ eine Funktion, die jeder Kante eine L¨ange zuordnet und R ⊆ V eine Menge von Terminalen. Ein Subgraph B ⊆ G heißt Steinerbaum, falls B ein Baum ist und alle Terminale enth¨alt. Knoten aus V (B) \ R werden Steinerknoten genannt. P Die L¨ange von B ist als ||B|| := urzest m¨oglich ist, so heißt e∈B ||e|| definiert. Falls B k¨ er Steiner minimaler Baum. Wie man leicht sieht, sind alle Bl¨atter eines Steiner minimalen Baumes Terminale. Unter dem Steinerbaumproblem in Graphen versteht man das folgende Entscheidungsproblem: Gegeben ein Graph G = (V, E), eine Terminalmenge R ⊆ V , eine L¨angenfunktion ||.|| : E → R+ und eine Zahl k ∈ R+ , entscheide, ob es in G einen Steinerbaum f¨ur R gibt, der L¨ange h¨ochstens k hat. Satz 36 (Karp 1972) Das Steinerbaumproblem in Graphen ist NP-vollst a¨ ndig. Beweis. Wir geben eine Reduktion von 3-SAT auf das Steinerbaumproblem an. Zu einer gegebenen 3-SAT Formel F mit Variablen x 1 , . . . , xn und Klauseln C1 , . . . , Cm konstruieren wir einen Graphen G wie folgt. Der Graph G enth¨alt die Terminale C 1 , . . . , Cm , y1 , . . . , yn+1 sowie die Knoten x1 , . . . , xn und x1 , . . . , xn . Die Knoten xi und xi sind jeweils durch Kanten der L¨ange 1 mit yi und yi+1 verbunden. Jeder Knoten Cj ist durch eine Kante der L¨ange 3 mit genau den Knoten verbunden, die in Klausel C j als Literal auftreten. Abbildung 3.4 zeigt diese Konstruktion f¨ur den Fall einer Klausel C j = (x2 ∨ xi ∨ xn ). Knoten, die Terminale sind, sind in dieser Abbildung durch Quadrate repr¨asentiert. Wir zeigen nun, dass die 3-SAT Formel F genau dann erf¨ullbar ist, wenn es in G einen Steinerbaum der L¨ange h¨ochstens 2n + 3m gibt. Wir nehmen zun¨achst an, dass F erf¨ullbar ist. Dann kann man zu einer Wahrheitsbelegung f¨ur F einen Pfad der L¨ange 2n von y1 nach yn+1 w¨ahlen, der genau durch die Literale l¨auft, die unter dieser Wahrheitsbelegung wahr sind. Da jede Klausel unter dieser Wahrheitsbelegung erf¨ullt ist, gibt es in jeder Klausel mindestens ein Literal, das wahr ist. Verbindet man jede der m Klauseln mit einem solchen Literal, so erh¨alt man einen Steinerbaum der L¨ange 2n + 3m in G. Ein solcher Steinerbaum ist durch die dick gezeichneten Kanten in Abbildung 3.4 angedeutet. Wir zeigen nun umgekehrt, wie man aus einem Steinerbaum der L¨ange h¨ochstens 2n+3m eine Wahrheitsbelegung f¨ur F gewinnen kann. Dazu bemerken wir zun¨achst, dass jeder Steinerbaum in G die L¨ange mindestens 2n + 3m haben muss, da von jedem Terminal C j mindestens eine Kante der L¨ange 3 ausgehen muss. Zudem ben¨otigt man zum Verbinden der Terminale yi mindestens 2n Kanten der L¨ange mindestens 1. Jeder Steinerbaum der L¨ange 2n + 3m in


PSfrag replacements

9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

49

Cj

x1 y1

y2 x1

xi

x2

xn−1

xn yn+1

y3

x2

xi

xn−1

xn

Abbildung 26: Konstruktion einer Instanz f¨ur das Steinerbaumproblem aus einer 3-SAT Instanz. G muss einen Pfad von y1 nach yn+1 enthalten, der keinen der Knoten Cj benutzt. Ansonsten g¨abe es zwei Knoten yi und yi+1 , die nicht durch einen Pfad der L¨ange 2 verbunden sind. F¨ugt man einen solchen ein, so entsteht ein Kreis, der mindestens eine Kante der L¨ange 3 enthalten muss und das Entfernen dieser Kante erg¨abe einen k¨urzeren Steinerbaum. Wir wissen nun also, dass es in jedem Steinerbaum der L¨ange 2n + 3m in G einen Pfad von y1 nach yn+1 geben muss, der keinen der Knoten Cj benutzt. Damit besteht ein Steinerbaum der L¨ange 2n + 3m in G aus diesem Pfad von y 1 nach yn+1 und m Kanten der L¨ange 3, die die Terminale Ci mit dem Pfad verbinden. Belegt man nun die Variablen so, dass die auf dem Pfad gelegenen Literale wahr sind, so erh¨alt man eine Wahrheitsbelegung f¨ur F . t u

Korollar 37 Das Steinerbaumproblem in ungewichteten bipartiten Graphen ist NP-vollst a¨ ndig. Beweis. Ersetzt man die Kanten der L¨ange 3 in obiger Reduktion durch Pfade der L¨ange 3, so ist der Graph G bipartit und alle Kanten haben das Gewicht 1. t u

3.5 Der Algorithmus von Kou, Markowsky und Berman Die NP-Vollst¨andigkeit des Steinerbaumproblems impliziert, dass wir keine polynomiellen Algorithmen erwarten k¨onnen, die dieses Problem exakt l¨osen. Wir werden uns daher im folgenden mit der Frage besch¨aftigen, was die beste G¨ute ist, die ein polynomieller Approximationsalgorithmus f¨ur das Steinerbaumproblem erreichen kann. Gegeben sei ein Optimierungsproblem Q ⊆ I × S zusammen mit einer Bewertungsfunktion f : I × Q → R. Ein Approximationsalgorithmus A f¨ur Q ist ein Algorithmus, der f¨ur jedes


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

50

x ∈ I ein s ∈ S ausgibt, so dass (x, s) ∈ Q. Den Wert f (s) der L¨osung s, die A f¨ur die Instanz x zur¨uckliefert, bezeichnen wir mit A(x). Es sei Q ein Minimierungsproblem. Der Algorithmus A hat Approximationsgu¨ te c, falls A(x) ≤ c · f (s) gilt f¨ur alle (x, s) ∈ Q. Ein von vielen Autoren unabh¨angig voneinander entdeckter Ansatz besteht darin, das Steinerbaumproblem auf das Problem des Findens eines minimal spannenden Baumes zur¨uckzuf¨uhren. Man nennt diese Algorithmen daher minimal-spannender-Baum-Heuristik bzw. MSTHeuristik. Ein solcher Ansatz ist bereits 1968 von Moore vorgeschlagen worden. Die Unterschiede der verschiedenen Varianten der MST-Heuristik bestehen lediglich in der Art, wie ein minimal spannender Baum berechnet wird. Allen ist gemein, dass sie eine Approximationsg¨ute von 2 erreichen. Wir stellen nachfolgend die Variante von Kou, Markowsky und Berman aus dem Jahre 1981 vor. Sei G = (V, E) ein Graph, ||.|| : E → R+ eine L¨angenfunktion und R ⊆ V eine Menge von Terminalen. Der Distanzgraph GD (R) ist ein vollst¨andiger Graph auf der Knotenmenge R, in dem je zwei Knoten durch eine Kante verbunden sind, deren L¨ange gerade die L¨ange eines k¨urzesten Pfades in G zwischen diesen beiden Knoten ist. Der Algorithmus von Kou, Markowsky und Berman (siehe Abbildung 27) berechnet zu einem gegebenen Graphen G = (V, E) mit Terminalmenge R zun¨achst den Distanzgraphen GD (R). In diesem wird ein minimal spannender Baum B D bestimmt und die Kanten dieses Baumes werden durch die entsprechenden k¨urzesten Pfade im Graphen G ersetzt. In einem letzten Schritt werden eventuell vorhandene u¨ berfl¨ussige Kanten entfernt. Kou-Markowsky-Berman (G = (V, E), l : E → R + , R ⊆ V ) 1 2 3 4

berechne GD (R) bestimme minimal spannenden Baum B D f¨ur GD (R) ersetze jede Kante in BD durch entsprechenden k¨urzesten Pfad in G entferne u¨ berfl¨ussige Kanten und nenne so erhaltenen Baum B KM B Abbildung 27: Der Algorithmus von Kou, Markowsky und Berman.

In Abbildung 28 ist ein Beispiellauf des Algorithmus von Kou, Markowsky und Berman gezeigt. Die linke Abbildung zeigt den Ausgangsgraphen. Hierbei handelt es sich um ein Gitter, bei dem alle Kanten die gleiche L¨ange haben. Es gibt f¨unf Terminale, die entsprechend markiert sind. Im zweiten Bild ist der Distanzgraph auf der Terminalmenge gezeigt. Das dritte Bild zeigt einen minimal spannenden Baum f¨ur diesen Distanzgraphen. Im n¨achsten Bild sind die Kanten des Distanzgraphen durch entsprechende k¨urzeste Pfade im Ausgangsgraphen ersetzt worden. Wie man sieht kann es dabei passieren, dass Kreise entstehen. Diese werden im vierten Schritt des Algorithmus zerst¨ort. Das letzte Bild zeigt das resultierende Ergebnis. Satz 38 Der Algorithmus von Kou, Markowsky und Berman erreicht eine Approximationsg u¨ te von 2 und hat eine Laufzeit von O(n · m + n 2 log n).


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

51

Abbildung 28: Ein Beispiel f¨ur die vier Schritte des KMB-Algorithmus Beweis. Sei BKM B der vom KMB-Algorithmus zur¨uckgelieferte Baum und SM T ein Steiner minimaler Baum. Zu zeigen ist dann, dass ||B KM B || â&#x2030;¤ 2||SM T || gilt. Betrachte einen Weg, der entlang SM T einmal durch alle Terminale l¨auft. Ein solcher Weg benutzt jede Kante des Steiner minimalen Baumes h¨ochstens zwei Mal und hat somit eine L¨ange von maximal 2||SM T ||. Da ein Weg durch alle Terminale mindestens so lang ist wie ein minimal spannender Baum im Distanzgraph G D (R), erhalten wir: 2||SM T || â&#x2030;Ľ ||M ST (GD )|| â&#x2030;Ľ ||BKM B ||. Die Berechnung des vollst¨andigen Distanzgraphen in Zeile 1 des Algorithmus kann durch nmaliges Aufrufen des Dijkstra Algorithmus erreicht werden. Dies erfordert O(n¡m+n 2 log n) Laufzeit. Dies restlichen Schritte des Algorithmus sind sicherlich ebenfalls in dieser Zeit durchf¨uhrbar. t u

Es ist leicht einzusehen, dass die Analyse des Algorithmus von Kou, Markowsky und Berman bestm¨oglich ist. Betrachte dazu ein Rad mit n Speichen, die jeweils die L¨ange 1 haben und zus¨atzlich Kanten auf dem Rand des Rades, die jeweils die L¨ange 2 â&#x2C6;&#x2019;  haben (siehe Abbildung 29). Dann gilt ||SM T || = n und ||B KM B || = (n â&#x2C6;&#x2019; 1) ¡ (2 â&#x2C6;&#x2019; ), d.h. ein Steiner minimaler Baum und der vom KMB-Algorithmus zur¨uckgelieferte Baum unterscheiden sich asymptotisch um einen Faktor von 2. 2â&#x2C6;&#x2019;Îľ

PSfrag replacements

1

1

2â&#x2C6;&#x2019;Îľ 1 2â&#x2C6;&#x2019;Îľ

1

1 2â&#x2C6;&#x2019;Îľ

Abbildung 29: Ein Beispiel, das zeigt, dass Satz 38 bestm¨oglich ist.


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

52

3.6 Mehlhorns Algorithmus Die Laufzeit des Algorithmus von Kou, Markowsky und Berman wird von der Berechnung des vollst¨andigen Distanzgraphen im ersten Schritt dominiert. Diese erfordert eine Laufzeit von O(|V |2 log |V | + |V ||E|), welche auch gleichzeitig die Gesamtlaufzeit des Algorithmus ist. Mehlhorn hat eine Variante des Algorithmus vorgeschlagen, die mit einer Gesamtlaufzeit von O(|V | log |V | + |E|) auskommt. Die wesentliche Idee dabei besteht darin, dass f¨ur die Berechnung eines minimal spannenden Baumes im Distanzgraphen G D dieser nicht notwendigerweise vollst¨andig berechnet werden muss. Stattdessen wird lediglich ein sogenannter modifizierter Distanzgraph G∗D berechnet, der wesentlich weniger Kanten enthalten kann als der Distanzgraph und sich in O(|V | log |V | + |E|) berechnen l¨asst. Es sei G = (V, E) ein Graph, ||.|| : E → R + eine L¨angenfunktion und R ⊆ V eine Menge von Terminalen. F¨ur jedes Terminal x ∈ R definieren wir sodann sein Voronoi-Gebiet Φ(x) als die Menge all derjenigen Knoten in V , deren Abstand zu x h¨ochstens so groß ist, wie zu jedem anderen Terminal in R. Falls es einen Knoten in V gibt, der zu mehreren Terminalen in R den gleichen minimalen Abstand hat, so ordnen wir diesen Knoten einem beliebigen dieser Terminale zu, fordern jedoch, dass mit jedem Knoten auch alle Knoten eines k¨urzesten Pfades von dem Terminal zu diesem Knoten im Voronoi-Gebiet des Knotens enthalten sind. Damit ist sichergestellt, dass die Voronoi-Gebiete die Knotenmenge V in disjunkte Teile zerlegen. Der modifizierte Distanzgraph ist nun als Graph auf der Menge R definiert, in dem zwei Knoten x und y aus R durch eine Kante miteinander verbunden sind, wenn es Knoten a ∈ Φ(x) und b ∈ Φ(y) gibt, die adjazent sind. Die L¨ange einer solchen Kante {x, y} wird sodann als min{dist(x, a) + ||a, b|| + dist(b, y)|a ∈ Φ(x), b ∈ Φ(y)} definiert. Der modifizierte Distanzgraph kann also weniger Kanten enthalten als der Distanzgraph. Zudem k¨onnen die Kanten im modifizierten Distanzgraphen gr¨oßere L¨ange haben als im Distanzgraphen. In Abbildung 30 ist ein solches Beispiel gezeigt. W¨ahrend im Distanzgraphen die Knoten x und y durch eine Kante der L¨ange 4 verbunden sind, hat die entsprechende Kante im modifizierten Distanzgraphen die L¨ange 5. PSfrag replacements x 1 1

3 1

y

1

1

z

Abbildung 30: Ein Beispiel, in dem sich der Abstand zwischen x und y im Distanzgraphen und im modifizierten Distanzgraphen unterscheiden.

Wie wir sp¨ater sehen werden, l¨asst sich der modifizierte Distanzgraph schneller berechnen als


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

53

der Distanzgraph. Entscheidend f¨ur die Korrektheit des Algorithmus von Mehlhorn ist aber die folgende Aussage. Lemma 39 Jeder minimal spannende Baum in G ∗D ist auch minimal spannender Baum in G D .

Beweis. Wir beweisen, dass es minimal spannende B¨aume in G D gibt, die gleichzeitig auch minimal spannende B¨aume in G∗D sind, und dort die gleiche L¨ange haben. Daraus folgt sofort die Aussage des Lemmas, da alle minimal spannenden B¨aume eines Graphen die gleiche L¨ange haben. Sei T ein minimal spannender Baum in G D , der die Anzahl der nicht in E(G∗D ) enthaltenen Kanten minimiert. Falls es mehrere solcher B¨aume gibt, so w¨ahle einen, der die L¨ange aller in E(G∗D ) enthaltenen Kanten minimiert. Wir zeigen nun im folgenden, dass T auch ein minimal spannender Baum in G∗D ist und ||T ||GD = ||T ||G∗D gilt, d.h. die L¨ange von T in G∗D ist genau so groß wie die L¨ange von T in GD . Wir nehmen nun an, dass dies nicht gilt, d.h. es gibt zwei Terminale s und t in R f¨ur die {s, t} ∈ E(T ), aber (i) {s, t} ∈ E(T ) \ E(G∗D ) oder (ii) ||{s, t}||G∗D > ||{s, t}||GD . Die Abbildung Φ−1 : V → R ordnet jedem Knoten in V dasjenige Terminal zu, zu dem dieser Knoten geringsten Abstand hat. Sei s = v 0 , v1 , . . . , vr = t ein k¨urzester s-t-Pfad in G. Dann zerf¨allt T − {s, t} in zwei Komponenten, von denen die eine s enth¨alt und die andere t. Da Φ−1 (v0 ) 6= Φ−1 (vr ) gilt, gibt es einen kleinsten Index i, so dass Φ −1 (vi−1 ) und Φ−1 (vi ) in verschiedenen Komponenten von T − {s, t} liegen. Da {v i−1 , vi } Kante in G ist, sind nach Definition von G∗D die Knoten Φ−1 (vi−1 ) und Φ−1 (vi ) in G∗D adjazent und es gilt:

||{Φ−1 (vi−1 ), Φ−1 (vi )}||GD

≤ ||{Φ−1 (vi−1 ), Φ−1 (vi )}||G∗D

≤ dist(Φ−1 (vi−1 ), vi−1 ) + ||{vi−1 , vi }|| + dist(vi , Φ−1 (vi )) ≤ dist(s, vi−1 ) + ||{vi−1 , vi }|| + dist(vi , t) = ||{s, t}||GD

Ersetzt man nun in dem Baum T die Kante {s, t} durch die Kante {Φ −1 (vi−1 ), Φ−1 (vi )} (wie wir oben bemerkt haben, existiert diese Kante auch in G ∗D ) so erh¨alt man einen spannenden Baum T˜ f¨ur GD , dessen L¨ange h¨ochstens so groß ist wie die von T . Da T aber als minimal spannender Baum f¨ur GD gew¨ahlt war, kann die L¨ange von T˜ nicht kleiner als die von T sein,


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

54

was impliziert, dass in obiger Ungleichungskette u¨ berall Gleichheit gelten muss. Insbesondere gilt also ||{Φ−1 (vi−1 ), Φ−1 (vi )}||GD = ||{Φ−1 (vi−1 ), Φ−1 (vi )}||G∗D .

Falls (i) gilt, so hat T˜ mehr Kanten in E(G∗D ) als T , was der Wahl von T widerspricht. Falls (ii) gilt, so gilt ||{s, t}||G∗D > ||{s, t}||GD und wir erhalten wiederum einen Widerspruch zur Wahl von T , da dann ||{Φ−1 (vi−1 ), Φ−1 (vi )}||GD = ||{Φ−1 (vi−1 ), Φ−1 (vi )}||G∗D = ||{s, t}||GD < ||{s, t}||G∗D gilt. Dies widerspricht der Annahme, dass T unter allen minimal spannenden B¨aumen so gew¨ahlt war, dass die L¨ange der Kanten in G ∗D minimiert wird.

Also k¨onnen weder (i) noch (ii) gelten und T ist somit ein minimal spannender Baum in G ∗D und hat dort die gleiche L¨ange wie in G. t u

Satz 40 Der Algorithmus von Mehlhorn ist korrekt und hat eine Laufzeit von O(n log n + m). Beweis. Die Korrektheit des Algorithmus ergibt sich aus Lemma 39. Es bleibt der Nachweis der Laufzeit. Einzig kritischer Punkt ist die Berechnung des modifizierten Distanzgraphen G ∗D , da die Zeilen 2-4 des KMB-Algorithmus offensichtlich in O(n log n + m) durchf¨uhrbar sind. Zur Berechnung des modifizierten Distanzgraphen berechnet man zun¨achst die Voronoi-Gebiete eines jeden Terminals. Dies l¨asst sich mit einem einzigen Aufruf des Algorithmus von Dijkstra durchf¨uhren, indem man einen Knoten dem Graphen hinzuf¨ugt, der mit allen Terminalen u¨ ber eine Kante der L¨ange 0 verbunden ist und den Algorithmus von Dijkstra in diesem Knoten startet. Um die Kanten des modifizierten Distanzgraphen zu berechnen, sortiert man alle Kanten, die zwei Knoten aus verschiedenen Voronoi-Gebieten verbinden, zun¨achst mittels Bucketsort in O(m) nach der Voronoi-Gebiets Nummer des kleineren Knoten. Nimmt man die so erhaltene Sortierung her und sortiert diese mittels Bucketsort ein zweites Mal nach der Nummer des zweiten Knotens, so stehen in dieser Reihenfolge alle Kanten die zwischen den gleichen Voronoi-Gebieten verlaufen hintereinander. Man kann somit in O(m) alle Kanten und deren L¨angen im modifizierten Distanzgraphen bestimmen. t u

Floren hat bemerkt, dass Mehlhorns Variante des Algorithmus von Kou, Markowsky und Berman die Zeile 4 des Algorithmus u¨ berfl¨ussig macht, d.h. in Mehlhorns Variante k¨onnen keine Kreise entstehen, wenn man die Kanten des minimal spannenden Baumes durch die entsprechenden k¨urzesten Pfade ersetzt.


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

55

4 Flusse ¨ und Zusammenhang (Vorlesung 14–16) Motivation: Datenfl¨usse in Rechnernetzen, k-fachen Zusammenhang testen

4.1 Grundlegende Definitionen, Flusse ¨ maximalen Wertes, Schnitte Ein Netzwerk ist ein Tupel N = (V, A, s, t, c), wobei (V, A) ein gerichteter Graph ist, s und t Knoten aus V sind und c : A → R+ als Kapazit¨atsfunktion bezeichnet wird. Die Knoten s und t werden auch Quelle und Senke genannt. Eine Abbildung f : A → R+ heißt s-t-Fluss im Netzwerk N = (V, A, s, t, c), falls die folgenden beiden Bedingungen erf¨ullt sind: X X 1. Flusserhaltung: f (y, x) = f (x, y) ∀x ∈ V − {s, t} y∈N + (x)

y∈N − (x)

2.

Zul¨assigkeit :

f (x, y) ≤ c(x, y)

∀(x, y) ∈ A

Hierbei haben wir die abk¨urzende Notation f (x, y) und c(x, y) anstelle von f ((x, y)) und c((x, y)) benutzt. Der Wert val(f ) eines s-t-Flusses f ist als val(f ) :=

X

x∈N + (s)

f (s, x) −

X

f (x, s)

x∈N − (s)

definiert. Ein Fluss f hat maximalen Wert, falls val(f ) ≥ val(f 0 ) f¨ur alle Fl¨usse f 0 von N gilt. Gilt f (x, y) ≥ f (y, x) > 0 f¨ur einen Fluss f und Kanten (x, y) und (y, x), so erh¨alt man einen neuen Fluss f 0 gleichen Wertes, indem man f 0 (x, y) := f (x, y) − f (y, x) und f 0 (y, x) := 0 setzt und ansonsten f 0 wie f definiert. Im folgenden k¨onnen wir daher stets davon ausgehen, dass ein Fluss f die Bedingung f (x, y) > 0

f (y, x) = 0

erf¨ullt. Satz 41 Jedes Netzwerk besitzt einen Fluss maximalen Wertes. Beweis. Die Menge aller Fl¨usse in einem Netzwerk ist als Punktmenge des R |A| abgeschlossen und beschr¨ankt. Die Funktion val ist stetig und nimmt daher nach dem Satz von Weierstraß ihr Maximum in R|A| an. t u

Eine Teilmenge X ⊂ V mit X ∩ {s, t} = {s} heißt s-t-Schnitt. Die Kapazit a¨ t cap(X) eines


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

56

s-t-Schnittes X ist als X

cap(X) :=

c(u, v)

u∈X v∈N + (u)−X

definiert. Lemma 42 Ist f ein Fluss und X ein s-t-Schnitt in einem Netzwerk N = (V, A, s, t, c), so gilt val(f ) ≤ cap(X). P P Beweis. Nach Definition von val gilt val(f ) = + (s) f (s, x) − x∈N x∈N − (s) f (x, s). Der P P Ausdruck x∈N + (y) f (y, x) − x∈N − (y) f (x, y) hat f¨ur alle Knoten y ∈ X − {s} den Wert 0. Somit gilt:   X X X  f (y, x) − f (x, y) val(f ) = x∈N + (y)

y∈X

=

X

y∈X,x∈N + (y)

f (y, x) −

x∈N − (y)

X

f (x, y)

y∈X,x∈N − (y)

F¨ur alle Paare (x, y) ∈ X × X mit x ∈ N + (y) gilt y ∈ N − (x). Somit tritt der Wert f (x, y) f¨ur solche Paare sowohl in der ersten als auch in der zweiten Summe auf und hebt sich weg. Die Summation muss daher nur f¨ur solche Paare (y, x) durchgef¨uhrt werden, f¨ur die y ∈ X und x 6∈ X gilt. Wir erhalten somit: X X val(f ) = f (y, x) − f (x, y) y∈X,x∈N + (y)−X

≤ ≤

y∈X,x∈N − (y)−X

X

f (y, x)

X

c(y, x)

y∈X,x∈N + (y)−X

y∈X,x∈N + (y)−X

= cap(X) t u

4.2 Restnetzwerke, augmentierende Pfade Das Restnetzwerk Nf = (V, Af , s, t, cf ) eines Netzwerkes N = (V, A, s, t, c) bez¨uglich eines Flusses f ist wie folgt definiert. Die Funktion c sei auf ganz V × V erweitert, indem sie f¨ur alle


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006 PSfrag replacements

57

f=

1

f =3

Elemente aus V × V − A mit dem Wert 0 definiert wird. ur jedes (x, y) ∈ V × V 2 Dann setze f¨ f=   c(x, y) − f (x, y) falls f (x, y) > 0 c(x, y) + f (y, x) falls f (y, x) > 0 cf (x, y) :=  4 PSfrag replacements c(x, y) f = sonst 1 Die Menge Af bestehe aus allen Kanten, f¨ur die die Funktion c f positiv ist. 2

Abbildung 31 zeigt ein Beispiel f¨ur ein Restnetzwerk.3 In der linken Abbildung ist ein Netz4 rechten Abbildung ist das zugeh¨ werk mit einem s-t-Fluss vom Wert 3 angegeben, in der orige 5 Restnetzwerk zu sehen.

s 3 4

f =5 1 5

f =5 1 1

f =3

5 4 f=

4

t

5 2 2 f=

4

1

3

s6

1 8

7

t

2

4 2

9

Abbildung 31: Ein Netzwerk mit Fluss f und dazugeh¨origem Restnetzwerk Lemma 43 Ist f ein Fluss und W ein gerichteter s-t-Weg im Restnetzwerk N f , so kann f entlang W zu einem Fluss f 0 erh¨oht werden, f¨ur den val(f 0 ) > val(f ) gilt. Beweis. Ohne Einschr¨ankung sei W ein Pfad. Setze δ := min cf (e) und definiere f 0 durch e∈W

1. f 0 (x, y) := 0 und f 0 (y, x) := f (y, x) − δ, 2. f 0 (x, y) := f (x, y) + δ − f (y, x) und f 0 (y, x) := 0, 3. f 0 (x, y) := f (x, y),

falls (x, y) ∈ W und δ < f (y, x) falls (x, y) ∈ W und δ ≥ f (y, x) falls (x, y) 6∈ W und (y, x) 6∈ W

Wir zeigen zun¨achst, dass 0 ≤ f 0 (x, y) ≤ c(x, y) f¨ur alle Kanten (x, y) gilt. Dabei benutzen wir die Annahme, dass maximal einer der beiden Werte f (x, y) und f (y, x) gr¨oßer als 0 sein kann. Im Fall 1. gilt δ < f (y, x) und somit 0 ≤ f 0 (y, x) = f (y, x)−δ ≤ c(y, x)−δ ≤ c(y, x). Gilt f (y, x) = 0 so gilt cf (x, y) = c(x, y) − f (x, y) ≥ δ im Fall 2. Es folgt f 0 (x, y) = f (x, y) + δ ≤ c(x, y). Entsprechend gilt im Fall f (y, x) > 0: f 0 (x, y) = δ − f (y, x) ≤ c(x, y) + f (y, x) − f (y, x) = c(x, y). F¨ur jede Kante (x, y) ∈ W gilt: f 0 (x, y) − f 0 (y, x) = f (x, y) − f (y, x) + δ. Da mit Ausnahme von s und t f¨ur jeden Knoten x in W zwei Knoten y, z ∈ W existieren mit (x, y) ∈ W und (z, x) ∈ W , gilt f¨ur alle x ∈ W − {s, t}: X X X X f 0 (y, x) − f 0 (x, y) = f (y, x) − f (x, y) = 0. y∈N − (x)

y∈N + (x)

y∈N − (x)

y∈N + (x)


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

Somit ist f 0 ein s-t-Fluss in N und es gilt val(f 0 ) = val(f ) + δ.

58

t u

4.3 Max-Flow-Min-Cut-Theorem, Ford-Fulkerson-Algorithmus Satz 44 (Max-Flow-Min-Cut-Theorem) max val(f ) = min cap(X) s-t-Schnitt X Fluss f Beweis. Die Ungleichung val(f ) ≤ cap(X) wurde bereits in Lemma 42 gezeigt. F¨ur den Beweis der anderen Ungleichung betrachte einen Fluss f maximalen Wertes und das Restnetzwerk Nf = (V, Af , s, t, cf ). Es sei X ⊆ V die Menge der Knoten, die von s aus erreichbar sind. Gem¨aß Lemma 43 ist der Knoten t nicht in X enthalten. Betrachte eine beliebige Kante (v, w) in A mit v ∈ X, w 6∈ X. Dann muss f (v, w) = c(v, w) gelten, da ansonsten (v, w) auch in Af enthalten w¨are, was im Widerspruch zur Definition von X steht. Entsprechend muss f (v, w) = 0 f¨ur Kanten (v, w) in A mit v 6∈ X, w ∈ X gelten. Somit gilt val(f ) ≥ cap(X). t u

Als Konsequenz des Max-Flow-Min-Cut Theorems erh¨alt man den Flussalgorithmus von Ford und Fulkerson (siehe Abbildung 32). Dieser Algorithmus weist jedoch zwei Schwachstellen auf. Zum einen gibt es Beispiele, die zeigen, dass der Algorithmus f¨ur irrationale Kapazit¨aten nicht notwendigerweise gegen einen Fluss maximalen Wertes konvergiert. Zum anderen kann selbst bei ganzzahligen Kapazit¨aten die Laufzeit des Algorithmus sehr hoch sein. FordFulkerson (N = (V, A, s, t, c)) 1 2 3

f := 0 while es gibt s-t-Pfad W in Nf do augmentiere f entlang W Abbildung 32: Bestimmung von Fl¨ussen nach Ford und Fulkerson.

Satz 45 F¨ur ganzzahlige Kapazit¨aten terminiert der Algorithmus von Ford und Fulkerson nach P h¨ochstens O( u,v c(u, v)) vielen Schritten mit einem Fluss maximalen Wertes. Beweis. In jedem Augmentierungsschritt wird der Wert des Flusses um mindestens 1 erh¨oht. t u

In Abbildung 33 ist ein Beispiel angegeben, f¨ur das der Algorithmus von Ford und Fulkerson


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

PSfrag replacements

59

PSfrag replacements 100

200 Augmentierungsschritte ben¨otigen kann, wenn er jeweils ung¨unstig die augmentierenden Pfade (jeweils fett gezeichnet) ausw¨ahlt. Die linke Abbildung zeigt das Ausgangsnetzwerk, die 100 rechte Abbildung zeigt das Restnetzwerk nach einem Augmentierungsschritt. 100 1 s 1 99 99

1 99

100 s

t

1

t

1 99 1

100

100

100

100

Abbildung 33: Ein Beispiel f¨ur hohe Laufzeit des Ford-Fulkerson Algorithmus L¨asst man auch irrationale Kapazit¨aten zu, so terminiert der Algorithmus von Ford und Fulkerson nicht notwendigerweise. Es kann sogar passieren, dass der Algorithmus gegen einen Fluss konvergiert, dessen Wert kleiner als der maximal m¨ogliche Wert eines Flusses ist. Abbildung PSfrag 34 zeigtreplacements ein Beispiel f¨ur ein solches Verhalten des Algorithmus von Ford und Fulkerson. W¨ahlt man in diesem Graphen beliebig oft die Folge sabdceft, sefbacdt, scdfeabt und sefbacdt von augmentierenden Pfaden, so l¨asst sich zeigen, dass der Algorithmus von Ford und Ful√ kerson gegen einen Fluss mit Wert 1 + 2 konvergiert. Der maximale Wert eines Flusses in diesem Graphen ist aber offensichtlich ∞. a ∞

s

∞ ∞

∞ 1

c

b ∞

∞∞

d ∞∞

∞ ∞

t

2 e f Abbildung 34: Ein Beispiel bei dem der Ford-Fulkerson Algorithmus gegen eine nicht-optimale L¨osung konvergiert.

4.4 Der Algorithmus von Dinic Edmonds und Karp haben 1969 gezeigt, dass man das Problem der hohen Laufzeiten beim Algorithmus von Ford und Fulkerson leicht umgehen kann, wenn man in jedem Augmentierungsschritt nicht einen beliebigen s-t-Pfad w¨ahlt, sondern jeweils einen k¨urzesten. Sie zeigten, dass in dieser Variante lediglich O(nm) Augmentierungsschritte notwendig sind und kamen auf einen Algorithmus mit einer Gesamtlaufzeit von O(nm 2 ). Durch simultanes Finden aller k¨urzesten s-t-Pfade in einem Augmentierungsschritt hat Dinic 1970 einen Flussalgorithmus


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

60

mit einer Laufzeit von O(n3 ) erhalten. Wir werden den Algorithmus von Dinic im folgenden vorstellen. Um simultan entlang allen k¨urzesten s-t-Pfaden zu augmentieren, kann man Breitensuche auf das Restnetzwerk anwenden, wodurch die Knotenmenge in Schichten entsprechend ihrem Abstand zu s eingeteilt wird. Gegeben seien ein Netzwerk N = (V, A, s, t, c) und ein Fluss f . Dann ist das geschichtete Restnetzwerk GNf = (V 0 , GAf , s, t, cf ) bez¨uglich des Flusses f wie folgt definiert: Die Knotenmenge V 0 ist als die disjunkte Vereinigung von Mengen V 0 , V1 , . . . , Vk definiert mit V0 = {s}, Vk = {t} und Vi = {x ∈ V |dist(s, x) = i} f¨ur i = 1, . . . , k − 1. Dabei gibt der Index k den Abstand zwischen s und t im Restnetzwerk N f an. Die Kantenmenge GAf ist durch GAf := {(x, y)|x ∈ Vi , y ∈ Vi+1 , (x, y) ∈ Af , i = 0, . . . , k − 1} definiert. Ein Fluss f in einem Netzwerk N = (V, A, s, t, c) heißt maximal, falls es keinen f -augmentierenden Pfad gibt, der nur Kanten aus A benutzt. Jeder Fluss maximalen Wertes ist offensichtlich ein maximaler Fluss, aber die Umkehrung gilt nicht, wie z.B. in Abbildung 35 gezeigt.

s PSfrag replacements

t

Abbildung 35: Ein maximaler Fluss, der nicht Fluss maximalen Wertes ist Die Idee des Algorithmus von Dinic ist es, in jedem Augmentierungsschritt einen maximalen Fluss in GNf zu bestimmen und diesen zu dem aktuell gefundenen Fluss hinzuzuaddieren. Der Durchsatz eines Knotens v im Netzwerk GN f ist als das Minimum der Summe der einfließenden und ausfließenden Kapazit¨aten definiert, d.h. als 

min 

X

(x,v)∈GAf

cf (x, v),

X

(v,x)∈GAf

cf (v, x)

F¨ur die Knoten s und t wird dabei die einfließende bzw. ausfließende Kapazit¨at als ∞ angenommen. Zur Berechnung eines maximalen Flusses in GN f wird ausgehend von einem Knoten minimalen Durchsatzes ein Fluss von s zu diesem Knoten und von diesem Knoten nach t konstruiert, dessen Wert gerade dem Durchsatz des Knotens entspricht. Die Kantenkapazit¨aten in GN f werden aktualisiert, u¨ berfl¨ussige Knoten und Kanten entfernt und mit dem n¨achsten Knoten


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

61

minimalen Durchsatzes wird entsprechend verfahren, bis es keinen s-t-Pfad mehr in GN f gibt. Der entsprechende Algorithmus ist in Abbildung 36 gezeigt. Die Prozedur pushFlow (siehe Abbildung 37) arbeitet sich schichtweise von v zum Knoten t vor, indem der ankommende Fluss in einem Knoten jeweils auf die von ihm ausgehenden Kanten verteilt wird. Analog wird in der Prozedur pullFlow ein Fluss von s nach v konstruiert. MaxFlow (GNf = (V 0 , GAf , s, t, cf )) 1 g := 0 2 while es gibt s-t-Pfad in GNf do 3 v := Knoten geringsten Durchsatzes 4 pushFlow (v) 5 pullFlow (v) 6 g := g + v.Durchsatz 7 aktualisiere Kapazit¨aten in GNf 8 entferne rekursiv Knoten vom Durchsatz 0 und Kanten mit Kapazit¨at 0 aus GNf Abbildung 36: Bestimmung eines Flusses von maximalem Wert im geschichteten Restnetzwerk GNf . PushFlow (v) 1 Q := {v} 2 x.push:= 0 f¨ur alle x ∈ V 0 , v.push:= v.Durchsatz 3 while Q 6= {t} do 4 v := erster Knoten in Q 5 for (v, x) ∈ GAf do 6 if cf (v, x) > v.push 7 then x.push:= x.push + v.push 8 v.push:= 0 9 else x.push:= x.push + cf (vx) 10 v.push:= v.push − cf (vx) 11 if x 6∈ Q then Q := Q + x 12 until v.push = 0 Abbildung 37: Bestimmung eines Flusses von v nach t mit Wert Durchsatz(v). Lemma 46 Der Algorithmus MaxFlow berechnet einen maximalen Fluss g in GN f . Beweis. Zun¨achst wird gezeigt, dass es f¨ur eine Kante e, die im Laufe der Berechnung von g aus GNf entfernt wird, keinen g-augmentierenden Pfad gibt, der diese benutzt. F¨ur das Entfernen einer Kante e gibt es zwei Gr¨unde. Entweder benutzt der Fluss g bereits die volle Kapazit¨at, dann gibt es sicherlich keinen g-augmentierenden Pfad mehr, der diese Kante benutzt. Die


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

62

zweite M¨oglichkeit f¨ur das Entfernen von e besteht darin, dass ein mit ihr inzidenter Knoten entfernt wird, da er Durchsatz 0 hat. Dann kann aber auch kein g-augmentierender Pfad u¨ ber e verlaufen, da u¨ ber den Knoten vom Durchsatz 0 kein zus¨atzlicher Fluss m¨oglich ist. Der Algorithmus MaxFlow terminiert, falls es keinen s-t-Pfad mehr in GN f gibt. Damit gibt es nach obigen dann auch keinen g-augmentierenden Pfad in GN f , der nur Kanten aus GNf benutzt und g ist daher ein maximaler Fluss in GN f . t u

Der Flussalgorithmus von Dinic berechnet ausgehend vom leeren Fluss in jeder Phase einen maximalen Fluss im geschichteten Restnetzwerk und addiert diesen zum aktuellen Fluss hinzu (siehe Abbildung 38). Dinic (N ) 1 f := 0 2 while es gibt s-t-Pfad in GNf do 3 f := f + MaxFlow(GNf ) Abbildung 38: Bestimmung eines s-t-Flusses von maximalem Wert. Entscheidend f¨ur die Laufzeitanalyse des Algorithmus von Dinic ist die folgende Aussage: Lemma 47 Nach jeder Durchf¨uhrung der while-Schleife im Algorithmus Dinic vergr o¨ ßert sich der s-t-Abstand in GNf . Beweis. Das Netzwerk GNf enth¨alt alle k¨urzesten Pfade zwischen s und t. Ist g maximaler Fluss in GNf , so gibt es keinen augmentierenden Pfad bez¨uglich g in GN f , der nur Kanten aus GNf benutzt und ein augmentierender Pfad in GN f +g hat daher gr¨oßere L¨ange. t u

Satz 48 Der Algorithmus Dinic findet einen Fluss maximalen Wertes in O(n 3 ). Beweis. Der Algorithmus Dinic terminiert, wenn das Restnetzwerk unzusammenh¨angend ist, womit nach Satz 44 ein Fluss maximalen Wertes gefunden ist. In jeder Phase des Algorithmus, in der ein maximaler Fluss in GN f gesucht wird, erh¨oht sich der Abstand zwischen s und t nach Lemma 47 um mindestens 1. Es kann daher maximal O(n) viele Phasen geben. Innerhalb einer Phase gibt es maximal n Aufrufe von push und pull, da nach jedem Aufruf mindestens ein Knoten vom Durchsatz 0 entfernt wird. Jede Kante kann h¨ochstens einmal entfernt werden und es gibt bei Durchf¨uhrung von push oder pull pro Knoten


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

63

jeweils maximal eine Kante, die nur partiell benutzt wird. Es sind also maximal O(n 2 + m) = O(n2 ) Operationen pro Phase notwendig, womit sich die Gesamtlaufzeit zu O(n 3 ) ergibt. t u

Korollar 49 Bei 0-1-Kapazita¨ ten hat der Algorithmus von Dinic eine Laufzeit von O(nm). Beweis. Innerhalb einer Phase gibt es keine partiell benutzten Kanten, d.h. jede einmal benutzte Kante wird sofort entfernt. Damit ist eine Phase in O(m) durchf¨uhrbar. t u

Lemma 50 Ist f ein Fluss maximalen Wertes in einem 0-1-Netzwerk N = (V, A, s, t, c), so p betr¨agt der Abstand zwischen s und t ho¨ chstens 2n/ val(f ). Beweis. Es bezeichne Vi die Menge der Knoten in V die Abstand i von s haben und es sei t ∈ Vl . Die Kanten zwischen Vi und Vi+1 begrenzen die maximale Kapazit¨at eines s-tSchnittes in N , so dass also val(f ) ≤ |V i ||Vi+1 | gilt. Somit muss also jeweils mindestens einer p p der beiden Werte |V2i | und |V2i+1 | gr¨oßer als val(f ) sein. Demzufolge gilt 2l val(f ) ≤ n woraus die Behauptung folgt. t u

Satz 51 Bei 0-1-Kapazit¨aten hat der Algorithmus von Dinic eine Laufzeit von O(n 2/3 m). Beweis. Ist der maximale Wert eines Flusses kleiner als n 2/3 , so sind h¨ochstens n2/3 viele Phasen notwendig, da in jeder Phase der Wert des Flusses um mindestens 1 erh¨oht wird. Sei also nun f ein Fluss maximalen Wertes mit val(f ) ≥ n 2/3 . Betrachte die Phase des Algorithmus, nach der der Fluss erstmals einen Wert von val(f ) − n 2/3 u¨ bersteigt. Sei g der Fluss zu Beginn dieser Phase. Dann sind maximal n 2/3 weitere Phasen zur Berechnung von f notp wendig. Nach Lemma 50 betr¨agt der s-t-Abstand in N g h¨ochstens 2n/ val(f ) − val(g). Da der Abstand zwischen s und t sich aber in jeder Phase um mindestens 1 vergr¨oßert, k¨onnen p bis zur Berechnung von g maximal 2n/ val(f ) − val(g) viele Phasen durchgef¨uhrt worden sein. Wegen val(g) ≤ val(f ) − n2/3 gilt val(f ) − val(g) ≥ n2/3 und somit sind bis zur Berechnung von g maximal 2n2/3 viele Phasen ben¨otigt worden. Insgesamt sind daher maximal 2n2/3 + 1 + n2/3 = O(n2/3 ) viele Phasen notwendig. t u


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

64

4.5 k-facher Zusammenhang, S¨atze von Menger Ein Graph G heißt k-fach kantenzusammenh a¨ ngend, falls G nach Entfernen beliebiger k − 1 Kanten zusammenh¨angend ist. Zwei Pfade in einem Graphen heißen kantendisjunkt, falls sie keine Kante gemeinsam haben. Als eine direkte Konsequenz aus Satz 44 ergibt sich die Kantenversion des Satzes von Menger. Satz 52 Es sei G ein Graph und s und t zwei Knoten in G. Dann ist die minimale Anzahl Kanten, die entfernt werden muss, um s und t zu trennen gleich der maximalen Anzahl kantendisjunkter Pfade zwischen s und t. Beweis. Konstruiere ein Netzwerk N = (V, A, s, t, c) das die gleiche Knotenmenge wie G hat und f¨ur jede ungerichtete Kante {x, y} in G die gerichteten Kanten (x, y) und (y, x) besitzt, die jeweils Kapazit¨at 1 haben. Einem s-t-Fluss maximalen Wertes in N entspricht dann eine Menge kantendisjunkter s-t-Pfade in G; einem s-t-Schnitt in N entspricht eine Menge von Kanten, die s und t in G trennt. Somit ist nach Satz 44 die maximale Anzahl kantendisjunkter Pfade zwischen s und t gleich der minimalen Anzahl von Kanten, die entfernt werden muss, um s von t zu trennen. t u

Durch eine einfache Konstruktion kann man aus Satz 44 auch die Knotenversion des Satzes von Menger ableiten. Ein Graph G heißt k-fach knotenzusammenh a¨ ngend oder einfach nur k-fach zusammenh a¨ ngend, falls G mindestens k + 1 Knoten enth¨alt und nach Entfernen beliebiger k − 1 Knoten zusammenh¨angend ist. Zwei s-t-Pfade in einem Graphen heißen knotendisjunkt, falls sie außer den Endpunkten keinen Knoten gemeinsam haben. Satz 53 Es sei G ein Graph und s und t zwei nicht adjazente Knoten in G. Dann ist die minimale Anzahl Knoten, die entfernt werden muss, um s und t zu trennen gleich der maximalen Anzahl knotendisjunkter Pfade zwischen s und t. Beweis. Konstruiere zun¨achst aus G ein Netzwerk N = (V, A, s, t, c) wie im Beweis von Satz 52. Aus diesem konstruiere sodann ein Netzwerk N 0 = (V 0 , A0 , s, t, c0 ), das aus N entsteht, indem jeder Knoten x ∈ V − {s, t} durch eine Kante (x a , xe ) ersetzt wird, wobei die von x ausgehenden Kanten durch von x e ausgehende Kanten ersetzt werden und die nach x laufenden Kanten durch nach xa laufende Kanten ersetzt werden (siehe Abbildung 39). Alle Kanten erhalten die Kapazit¨at 1. Ein s-t-Fluss maximalen Wertes im Netzwerk N 0 entspricht nach Konstruktion einem s-t-Fluss maximalen Wertes in N , der f¨ur jeden Knoten verschieden von s und t einen Durchsatz von


9. Februar 2006

PSfrag replacements

Hougardy: Graphen und Algorithmen 1, WS2005/2006

x

PSfrag replacements → x

xa

65

xe

xa xe Abbildung 39: Konstruktionsschritt im Beweis von Satz 53. maximal 1 zul¨asst, d.h. der Fluss in N entspricht gerade einer maximalen Menge knotendisjunkter s-t-Pfade in G. Ein minimaler s-t-Schnitt in N 0 enth¨alt ohne Einschr¨ankung mit jedem Knoten xe auch alle dessen Nachbarn (d.h. nur Kanten der Form (x a , xe ) verlaufen u¨ ber den Schnitt). Einem solchen Schnitt in N 0 entspricht eine Menge von Knoten in N , die s von t trennt. Nach Satz 44 folgt somit die Behauptung. t u

Die im Beweis von Satz 53 benutzte Konstruktion l¨asst sich auch auf den Fall knotengewichteter Graphen anwenden. In diesem Fall hat man zu einem Graphen G und zwei ausgezeichneten Knoten s und t zus¨atzlich eine Gewichtsfunktion w : V (G) → R + gegeben und sucht nach einer Knotenmenge geringsten Gesamtgewichtes, die s von t trennt. F¨ur diesen Fall erh¨alt man als eine weitere Konsequenz aus Satz 44 folgende Aussage. Korollar 54 In einem Netzwerk N = (V, A, s, t, c) mit unbeschr a¨ nkten Kantenkapazit¨aten und Durchsatzbeschr¨ankung auf den Knoten ist der maximale Wert eines s-t-Flusses gleich dem kleinsten Gewicht einer Knotenmenge, die entfernt werden muss, um s von t zu trennen. t u

4.6 Berechnung von Kanten- und Knotenzusammenhangszahl Die Knotenzusammenhangszahl κ(G) eines Graphen G ist als die gr¨oßte Zahl k definiert, so dass G k-fach knotenzusammenh¨angend ist. Analog ist die Kantenzusammenhangszahl λ(G) eines Graphen G als die gr¨oßte Zahl k definiert, so dass G k-fach kantenzusammenh¨angend ist. Proposition 55 Es gilt κ(G) ≤ λ(G) ≤ δ(G). Beweis. Entfernt man alle mit einem Knoten inzidenten Kanten, so erh¨alt man eine trennende Kantenmenge, also gilt λ(G) ≤ δ(G). Hat man eine trennende Kantenmenge und w¨ahlt von


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

66

jeder der Kanten jeweils einen Endknoten aus, so erh¨alt man eine trennende Knotenmenge, d.h. es gilt κ(G) ≤ λ(G). t u

Der Graph in Abbildung 40 zeigt, dass die Werte von κ, λ und δ alle verschieden sein k¨onnen.

Abbildung 40: Ein Graph mit δ = 3, λ = 2 und κ = 1. F¨ur die Berechnung von λ und κ k¨onnen nach den S¨atzen 52 und 53 Flussalgorithmen benutzt werden, die f¨ur jedes Paar von Knoten die minimale Anzahl Kanten bzw. Knoten berechnen, die entfernt werden m¨ussen, um diese beiden Knoten voneinander zu trennen. Zusammen mit Satz 51 ergibt sich somit, dass mit einer Laufzeit von O(n 8/3 m) sowohl der Kanten- als auch der Knotenzusammenhang eines Graphen berechnet werden k¨onnen. Korollar 56 Die Kanten- Knotenzusammenhangszahl eines Graphen kann in O(n 8/3 m) bestimmt werden. √ F¨ur den Knotenzusammenhang kennt man auch Algorithmen, die diesen mit Laufzeit O( nm2 ) bestimmen. F¨ur d¨unne Graphen liefert dies eine bessere Laufzeit. F¨ur den Kantenzusammenhang werden wir den schnellsten bekannten Algorithmus im n¨achsten Abschnitt vorstellen.

4.7 Der Algorithmus von Nagamochi und Ibaraki Ein Multigraph G = (V, E) ist ein Graph, bei dem zwischen zwei Knoten mehr als eine Kante existieren kann. Die Kantenmenge E ist in diesem Fall eine Multimenge, d.h. eine Menge zusammen mit einer Abbildung, die jedem Element der Menge seine Vielfachheit zuordnet. Ist G = (V, E) ein Multigraph und sind X und Y disjunkte Teilmengen von V , so bezeichne d(X, Y, G) die Anzahl Kanten, die zwischen X und Y in G verlaufen. F¨ur einen Knoten x definiere d(x, G) := d({x}, V − x, G). Es sei v 1 , v2 , . . . , vn eine Anordnung der Knoten von G und bezeichne Vi die Menge der ersten i Knoten in dieser Anordnung. Die Anordnung der Knoten von G heißt zul¨assig, falls d(Vi−1 , vi , G) ≥ d(Vi−1 , vj , G)

∀2 ≤ i < j ≤ n.

Mit c(x, y, G) wird die kleinste Anzahl Kanten bezeichnet, die notwendig ist, um x von y in G zu trennen.


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

67

In einer zul¨assigen Ordnung hat also ein Knoten v i stets mindestens so viele Nachbarn in Vi−1 , wie alle nachfolgenden Knoten. Eine zul¨assige Anordnung kann leicht in linearer Zeit berechnet werden, siehe Abbildung 41. MaxCardinalitySearch 1 Bucket[0] := V 2 i := 0 3 while nicht alle Buckets sind leer do 4 i := i + 1 5 k := maximaler Index mit Bucket[k] 6= ∅ 6 w¨ahle vi ∈Bucket[k] beliebig und entferne v i aus Bucket[k] 7 for {x, vi } ∈ E und x ist in einem Bucket enthalten do 8 verschiebe x in n¨achsth¨oheren Bucket Abbildung 41: Bestimmung einer zul¨assigen Knotenanordnung in linearer Zeit. Eine zul¨assige Knotenanordnung v 1 , v2 , . . . , vn bleibt zul¨assig, wenn man alle Kanten zwischen vn−1 und vn entfernt. Zudem bleibt diese Anordnung auch eine zul¨assige Anordnung f¨ur die Graphen G − vn und G − vn−1 . Grundlage des Algorithmus von Nagamochi und Ibaraki ist die folgende rekursiv anwendbare Aussage. Lemma 57 Ist G ein Multigraph und v1 , . . . , vn eine zul¨assige Knotenanordnung, so gilt c(v n , vn−1 , G) = d(vn , G). Beweis. Die zwischen vn und Vn−1 verlaufenden Kanten trennen vn von vn−1 , folglich gilt c(vn , vn−1 , G) ≤ d(vn , G). Sei G ein Graph, der eine zul¨assige Knotenanordnung v 1 , v2 , . . . , vn besitzt, f¨ur die c(vn , vn−1 , G) < d(vn , G) gilt und der inklusionsminimal mit dieser Eigenschaft ist. D.h. kein echter Teilgraph von G besitzt diese Eigenschaft. Dann gilt offensichtlich n ≥ 3. Zudem ist {v n , vn−1 } keine Kante in E(G), da ansonsten wegen der Minimalit¨at von G in G − {v n , vn−1 } die Gleichheit c(vn , vn−1 , G − {vn , vn−1 }) = d(vn , G − {vn , vn−1 }) gilt und somit auch c(vn , vn−1 , G) = d(vn , G) g¨alte, da die Kante {vn , vn−1 } in jeder die Knoten vn und vn−1 trennenden Kantenmenge enthalten sein muss. Nach Wahl von G gilt die Aussage des Lemmas f¨ur den Graphen G − v n , d.h. es gilt: c(vn−1 , vn−2 , G − vn ) = d(vn−1 , Vn−2 , G − vn ). Wegen d(vn−1 , Vn−2 , G−vn ) = d(vn−1 , Vn−2 , G) ≥ d(vn , Vn−2 , G) = d(vn , G) und c(vn−1 , vn−2 , G) ≥ c(vn−1 , vn−2 , G − vn ) erh¨alt man somit c(vn−1 , vn−2 , G) ≥ d(vn , G).


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

68

Wendet man die Aussage des Lemmas auf den Graphen G − v n−1 an, so erh¨alt man entsprechend c(vn , vn−2 , G − vn−1 ) = d(vn , Vn−2 , G − vn−1 ). Wegen d(vn , Vn−2 , G − vn−1 ) = d(vn , G) und c(vn , vn−2 , G) ≥ c(vn , vn−2 , G − vn−1 ) erh¨alt man somit c(vn , vn−2 , G) ≥ d(vn , G). Eine Kantenmenge, die vn von vn−1 trennt, muss auch vn von vn−2 oder vn−1 von vn−2 trennen, da sonst ein Weg von vn nach vn−1 u¨ ber vn−2 verliefe. Somit gilt mit oben gezeigtem: c(vn , vn−1 , G) ≥ min(c(vn , vn−2 , G), c(vn−1 , vn−2 , G)) ≥ d(vn , G), was im Widerspruch dazu steht, dass G Gegenbeispiel ist. t u

Satz 58 Die Kantenzusammenhangszahl λ(G) eines Graphen G kann in O(nm) berechnet werden. Beweis. Sind x und y zwei Knoten in einem Multigraphen G so bezeichne G/xy den Multigraphen, den man aus G erh¨alt, indem man die Knoten x und y entfernt und daf¨ur einen neuen Knoten in G einf¨ugt, der mit allen Nachbarn von x und allen Nachbarn von y in ihren entsprechenden Vielfachheiten verbunden ist. Dann gilt λ(G) = min(λ(G 0 ), c(x, y, G)). Findet man nun Knoten x und y in G, so dass d(x, G) = c(x, y, G) gilt, so erh¨alt man λ(G) = min(λ(G0 ), d(x, G)), d.h. man kann λ(G) durch rekursives Kontrahieren von Knoten berechnen. Lemma 57 zeigt gerade wie man Knoten x und y mit d(x, G) = c(x, y, G) finden kann. Abbildung 42 zeigt den auf dieser Idee beruhenden Algorithmus. Die Laufzeit dieses Algorithmus betr¨agt O(n(m+n)) da maximal n rekursive Aufrufe erfolgen und jeder dieser Aufrufe in O(n + m) durchf¨uhrbar ist. Da m ≥ n − 1 angenommen werden kann, ergibt sich insgesamt die Laufzeit von O(nm) t u

lambda (G) 1 2 3 4

if |G| = 2 then return δ(G) else berechne zul¨assige Ordnung v 1 , . . . , vn return min(λ(G/vn−1 vn ), d(vn , G)) Abbildung 42: Bestimmung von λ(G).

Der Algorithmus von Nagamochi und Ibaraki l¨asst sich auch auf kantengewichtete Graphen erweitern.


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

69

5 Matching (Vorlesung 17–19) Motivation: Zuordnungsprobleme, Graphpartitionierung

5.1 Grundlegende Definitionen, maximale Matchings, gro¨ ßte Matchings in bipartiten Graphen Sei G = (V, E) ein Graph. Eine Menge M ⊆ E heißt Matching, falls keine zwei Kanten aus M einen Knoten gemeinsam haben. Die Menge M heißt maximales Matching, falls M ∪{e} f¨ur alle e ∈ E \ M kein Matching ist. Ein Matching M heißt gr o¨ ßtes Matching, falls |M | ≥ |M 0 | f¨ur alle Matchings M 0 von G gilt. Die Kardinalit¨at eines gr¨oßten Matchings in G wird mit ν(G) bezeichnet. Ein Matching M heißt perfekt, falls 2 · |M | = |V | gilt. Ein Knoten x ∈ V heißt u¨ berdeckt bez¨uglich eines Matchings M , falls es eine Kante e ∈ M gibt, mit x ∈ e. Maximale Matchings in einem Graphen lassen sich sehr einfach in O(m) bestimmen: MaximalesMatching (G = (V, E)) 1 2 3 4

M := ∅, alle Knoten in V seien unmarkiert while ∃ {x, y} ∈ E, so dass x und y unmarkiert sind do markiere x und y M := M ∪ {x, y} Abbildung 43: Bestimmung maximaler Matchings in linearer Zeit.

Proposition 59 F¨ur ein maximales Matching M in einem Graphen G gilt 1 · ν(G) ≤ |M | ≤ ν(G). 2

Beweis. Es sei S ⊆ V die Menge der von M u¨ berdeckten Knoten. Dann gilt 2 · |M | = |S|. Jede Kante eines gr¨oßten Matchings M ∗ von G muss mindestens einen Knoten aus S enthalten, da ansonsten M nicht maximal w¨are. Somit gilt ν(G) = |M ∗ | ≤ |S| = 2 · |M |, d.h. also |M | ≥ 12 · ν(G) und die Ungleichung ν(G) ≥ |M | folgt aus der Definition von ν. t u

In Abbildung 44 ist ein Beispiel f¨ur ein Matching angegeben, das maximal ist und lediglich die Gr¨oße 12 · ν(G) hat. Dies zeigt, dass Proposition 59 bestm¨oglich ist. Die Bestimmung gr¨oßter Matchings in Graphen ist wesentlich aufw¨andiger, als die Bestimmung maximaler Matchings. F¨ur den Spezialfall der bipartiten Graphen existiert jedoch eine


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

70

Abbildung 44: Ein maximales Matching. einfache Reduktion mithilfe derer das Problem auf ein Flussproblem zur¨uckgef¨uhrt werden kann. Satz 60 In bipartiten Graphen lassen sich gr o¨ ßte Matchings in O(n2/3 m) finden. Beweis. Sei G = (V, E) ein bipartiter Graph mit Bipartition V = V 1 ∪˙ V2 . Konstruiere aus G ein Netzwerk N = (V ∪˙ {s, t}, A, s, t, c) mit A := E ∪ {(s, x)|x ∈ V 1 } ∪ {(x, t)|x ∈ V2 } und c : A → N mit c(e) := 1 f¨ur alle e ∈ A. Wir zeigen nun, dass der maximale Wert eines Flusses in N gleich der Kardinalit¨at eines gr¨oßten Matchings in G ist. Sei f ein ganzzahliger s-t-Fluss in N , d.h. der Flusswert auf jeder Kante betr¨agt 0 oder 1. Jeder Knoten in N verschieden von s und t hat einen Durchsatz von 1. Somit k¨onnen wir ohne Einschr¨ankung davon ausgehen, dass f aus knotendisjunkten s-t-Pfaden besteht u¨ ber die jeweils ein Fluss vom Wert 1 fließt. Die Kanten zwischen V 1 und V2 u¨ ber die ein Fluss vom Wert 1 fließt bilden somit ein Matching in G und deren Anzahl betr¨agt val(f ). Sei nun umgekehrt ein Matching M in G gegeben. Dann erh¨alt man einen s-t-Fluss in N vom Wert |M |, indem man f¨ur jede Kante {x, y} ∈ E(G) einen Flusspfad s, x, y, t mit Flusswert 1 w¨ahlt. Alle diese Flusspfade sind kantendisjunkt und bilden somit insgesamt einen Fluss mit Wert |M |. Die Laufzeit ergibt sich unmittelbar aus Satz 51.

t u

5.2 Augmentierende Pfade, Satz von Berge, ungarische Wa¨ lder, gr¨oßte Matchings in bipartiten Graphen F¨ur den Fall der Bestimmung gr¨oßter Matchings in beliebigen Graphen oder aber auch f¨ur die Bestimmung schwerster Matchings in gewichteten Graphen ist keine Reduktion auf ein Flussproblem bekannt. Man ist in diesen F¨allen auf andere Algorithmen angewiesen. Wir ge-


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

71

ben im Folgenden einen Algorithmus an, der gr¨oßte Matchings in bipartiten Graphen in polynomieller Zeit findet und sich auch auf den Fall beliebiger Graphen erweitern l¨asst. Wir ben¨otigen zun¨achst den Begriff des augmentierenden Pfades. Ein Pfad in einem Graphen G = (V, E) heißt M -alternierend bez¨uglich eines Matchings M , falls er abwechselnd Kanten aus M und aus E(G) \ M benutzt. Ein Pfad der L¨ange mindestens 1 heißt M -augmentierend , falls er alternierend ist und Anfangs- und Endknoten von M nicht u¨ berdeckt werden. Satz 61 (Berge 1957) Ein Matching M ist genau dann ein gr o¨ ßtes Matching, wenn kein M augmentierender Pfad existiert. Beweis. Falls es einen M -augmentierenden Pfad gibt, so ist M offensichtlich nicht ein gr¨oßtes Matching, denn durch Vertauschen von Matchingkanten und nicht-Matchingkanten entlang des M -augmentierenden Pfades erh¨alt man ein gr¨oßeres Matching. Somit gibt es bez¨uglich eines gr¨oßten Matchings M keine M -augmentierenden Pfade. Wir nehmen nun an, dass M kein gr¨oßtes Matching ist. Sei M ∗ Matching mit |M ∗ | > |M |. Betrachte die symmetrische Differenz M 4M ∗ . Diese induziert einen Graphen mit Maximalgrad 2 und besteht somit aus der Vereinigung von geraden Kreisen und Pfaden. Wegen |M ∗ | > |M | muss es dann einen M -augmentierenden Pfad geben. t u

Der Beweis von Satz 61 zeigt sogar eine etwas st¨arkere Aussage, die sp¨ater f¨ur den Algorithmus von Hopcroft und Karp ben¨otigt wird. Korollar 62 Sind M1 und M2 Matchings in einem Graphen G mit |M1 | > |M2 |, so existieren mindestens |M1 | − |M2 | viele (knoten-) disjunkte M2 -augmentierende Pfade in G, die nur Kanten aus M1 4M2 enthalten. t u

Zur Bestimmung M -augmentierender Pfade in bipartiten Graphen ben¨otigen wir den Begriff des alternierenden Waldes: Gegeben seien ein Graph G und ein Matching M . Ein Baum in G mit einem als Wurzel ausgezeichneten Knoten heißt alternierend, falls die Wurzel nicht von M u¨ berdeckt ist und alle von der Wurzel zu den Bl¨attern gehenden Pfade alternierend sind und gerade L¨ange haben. Ein alternierender Wald ist die disjunkte Vereinigung alternierender B¨aume. F¨ur einen alternierenden Wald F bezeichnen die Mengen even(F ) bzw. odd(F ) alle Knoten, die geraden bzw. ungeraden Abstand von einer Wurzel haben. Ein alternierender Baum mit Wurzel x enth¨alt alle potenziellen Anfangsst¨ucke von augmentierenden Pfaden, die in x beginnen. Die Idee bei der Suche nach augmentierenden Pfaden


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

72

in bipartiten Graphen ist es daher, alternierende B¨aume so lange zu erweitern, bis man eine nicht-Matchingkante findet, die zwei Bl¨atter verschiedener alternierender B¨aume verbindet. In diesem Fall hat man einen augmentierenden Pfad von der Wurzel des einen alternierenden Baumes zur Wurzel des anderen alternierenden Baumes gefunden. Falls eine solche Kante nicht existiert und kein alternierender Baum erweitert werden kann, so nennt man den erhaltenen Wald einen ungarischen Wald. Beachte, dass ein ungarischer Wald nicht notwendigerweise alle Knoten des Graphen enthalten muss. Als Beispiel betrachte man einen Pfad der L¨ange 3 an den man an einen der beiden mittleren Knoten eine Kante anh¨angt. Die Prozedur augmentiereBipartitesMatching (siehe Abbildung 45) bestimmt nach genau dieser Idee augmentierende Pfade in bipartiten Graphen. Mit Hilfe dieser Prozedur l¨asst sich durch maximal n/2-faches Anwenden ein gr¨oßtes Matching in bipartiten Graphen finden. Der entsprechende Algorithmus ist in Abbildung 46 angegeben. AugmentiereBipartitesMatching (G = (V, E), M ) 1 2 3 4 5 6 7

F := von M nicht u¨ berdeckte Knoten in G F .even := alle Knoten in F , F .odd := ∅ while ∃{x, y} ∈ E mit x ∈ F .even, y 6∈ F .odd do if y 6∈ F .even then erweitere F um {x, y} und Matchingkante {y, z} ∈ M f¨uge y in F .odd und z in F .even ein else return augmentierender Pfad von Wurzel des Baumes der x enth¨alt zu Wurzel des Baumes der y enth¨alt return F ist ungarischer Wald Abbildung 45: Bestimmung augmentierender Pfade in bipartiten Graphen.

BipartitesMatching (G) 1 M := ∅ 2 while AugmentiereBipartitesMatching(G, M ) liefert augmentierenden Pfad P 3 augmentiere M entlang P Abbildung 46: Bestimmung eines gr¨oßten Matchings in bipartiten Graphen. Satz 63 Der Algorithmus BipartitesMatching bestimmt ein gr o¨ ßtes Matching in dem bipartiten Graphen G und hat Laufzeit O(nm). Beweis. Zum Nachweis der Korrektheit reicht es offensichtlich zu zeigen, dass M gr¨oßtes Matching ist, wenn die Prozedur augmentiereBipartitesMatching einen ungarischen Wald F zur¨uckliefert. Ist F ein ungarischer Wald, so sind gem¨aß der Bedingung in der while-Schleife die Knoten in even(F ) nur mit Knoten aus odd(F ) adjazent. Jedes Matching l¨asst somit mindestens


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

73

|even(F )| − |odd(F )| viele Knoten in G un¨uberdeckt. Andererseits enth¨alt jede Komponente des ungarischen Waldes F genau einen von M nicht u¨ berdeckten Knoten. Auf der Menge V \ (even(F ) ∪ odd(F )) bildet M ein perfektes Matching, da alle ungematchten Knoten in even(F ) liegen und es keine Matchingkante gibt von der nur ein Endknoten im ungarischen Wald liegt. Die Anzahl Komponenten des ungarischen Waldes F ist |even(F )| − |odd(F )|, d.h. also M ist gr¨oßtes Matching. Ohne Einschr¨ankung k¨onnen wir n = O(m) annehmen. Die Routine augmentiereBipartitesMatching hat Laufzeit O(n + m) und wird maximal n-mal aufgerufen, womit sich die angegebene Gesamtlaufzeit ergibt. t u

5.3 Der Algorithmus von Hopcroft und Karp Der Algorithmus von Hopcroft und Karp liefert ein gr¨oßtes Matching in bipartiten Graphen √ in Laufzeit O( nm). Zentrale Idee dieses Algorithmus ist das simultane Augmentieren entlang k¨urzester augmentierender Pfade. F¨ur ein Matching M bezeichne l(M ) die L¨ange eines k¨urzesten M -augmentierenden Pfades. Falls M gr¨oßtes Matching ist und somit kein augmentierender Pfad existiert, so setze l(M ) = ∞. Lemma 64 Es sei M ein Matching und P1 , . . . , Pt eine (inklusions-) maximale Menge knotendisjunkter M -augmentierender Pfade der L a¨ nge l(M ). Dann gilt: l(M 4E(P1 )4 . . . 4E(Pt )) > l(M ). Beweis. Es sei Q ein augmentierender Pfad in M 0 := M 4E(P1 )4 . . . 4E(Pt ). Dann gilt |M 0 4Q| = |M | + t + 1. Nach Korollar 62 gibt es somit t + 1 knotendisjunkte M augmentierende Pfade Q1 , . . . , Qt+1 in M 4(M 0 4E(Q)), die alle L¨ange mindestens l(M ) haben. Wir erhalten: (t + 1) · l(M ) ≤ |E(Q1 )| + . . . + |E(Qt+1 )| ≤ |M 4(M 0 4E(Q))| Letztere Ungleichung ergibt sich dabei wegen E(Q i ) ⊆ M 4(M 0 4E(Q)). Aus der Definition von M 0 und der Eigenschaft, dass die Pi knotendisjunkt sind, folgt sodann |M 4(M 0 4E(Q))|

=

|E(P1 )4 . . . 4E(Pt )4E(Q)|

=

|(E(P1 ) ∪ . . . ∪ E(Pt ))4E(Q)|

=

|(E(P1 ) ∪ . . . ∪ E(Pt ))| + |E(Q)| − 2|(E(P1 ) ∪ . . . ∪ E(Pt )) ∩ E(Q)|

=

t · l(M ) + |E(Q)| − 2|(E(P1 ) ∪ . . . ∪ E(Pt )) ∩ E(Q)|


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

74

Somit gilt also: |E(Q)| ≥ l(M ) + 2|(E(P1 ) ∪ . . . ∪ E(Pt )) ∩ E(Q)| Falls Q knotendisjunkt zu P1 ∪. . .∪Pt ist, so gilt |E(Q)| > l(M ) wegen der Wahl der P i . Falls Q nicht knotendisjunkt zu P1 ∪. . .∪Pt ist, so ist Q auch nicht kantendisjunkt zu P 1 ∪. . .∪Pt (da in M 0 alle Knoten der Pi u¨ berdeckt sind) und es gilt daher |(E(P 1 )∪. . .∪E(Pt ))∩E(Q)| > 0. Somit erhalten wir in diesem Fall |E(Q)| ≥ l(M ) + 2|(E(P1 ) ∪ . . . ∪ E(Pt )) ∩ E(Q)| > l(M ) t u

HopcroftKarp (G = (A ∪ B, E)) 1 M := ∅ 2 while l(M ) < ∞ do 3 S := nicht u¨ berdeckte Knoten in A 4 T := u¨ ber alternierende Pfade der L¨ange l(M ) von S aus erreichbare Knoten 5 mittels DFS von den Knoten in T bestimme maximale Menge augmentierender Pfade der L¨ange l(M ) und augmentiere diese Abbildung 47: Der Algorithmus von Hopcroft und Karp.

Satz 65 Der Algorithmus von Hopcroft und Karp (siehe Abbildung 47) findet ein gr o¨ ßtes Mat√ ching in bipartiten Graphen in O( nm). Beweis. Wir zeigen zun¨achst, dass die while-Schleife in dem Algorithmus von Hopcroft und √ Karp O( n) mal durchlaufen wird. Nach jedem Durchlauf der while-Schleife erh¨oht sich die L¨ange eines k¨urzesten augmentie√ renden Pfades nach Lemma 64 um mindestens 1. Nach n Durchl¨aufen der while-Schleife √ betr¨agt die L¨ange eines k¨urzesten augmentierenden Pfades also mindestens n + 1. Damit kann es h¨ochstens √ n n √ ≤√ = n n+1 n weitere Durchl¨aufe der while-Schleife geben, da in jedem Durchlauf mindestens ein augmentierender Pfad gefunden wird und nach Korollar 62 nicht mehr augmentierende Pfade existieren √ √ √ k¨onnen. Insgesamt gibt es also h¨ochstens n + n = O( n) viele Durchl¨aufe der whileSchleife.


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

75

Es bleibt zu zeigen, dass jeder Durchlauf der while-Schleife eine Laufzeit von O(n + m) ben¨otigt. Die L¨ange l(M ) kann mittels einer modifizierten Version der Breitensuche die von allen nicht u¨ berdeckten Knoten in A ausgeht in linearer Zeit gefunden werden: in jedem Schritt werden ausgehend von einem Knoten in A alle dessen Nachbarn besucht, diese aber nicht in die Queue aufgenommen, sondern alle die Knoten (in A), die mit diesen Nachbarn u¨ ber eine Matchingkante verbunden sind. Die Menge T bestimmt sich dadurch, dass man die Breitensuche nur bis zu einer Tiefe von l(M ) laufen l¨asst. Zur Bestimmung einer maximalen Menge knotendisjunkter augmentierender Pfade startet man in den Knoten von T jeweils eine Tiefensuche zu Knoten in S, wobei einmal besuchte Knoten f¨ur folgende Tiefensuchen verboten werden und nur Kanten benutzt werden, die den Abstand entlang eines alternierenden Pfades zu einem Knoten in S verringern. Sobald ein Knoten in S erreicht wird, wird die Tiefensuche beendet, ein augmentierender Pfad ist gefunden und eine Tiefensuche vom n¨achsten Knoten in T wird gestartet. Es ist damit sichergestellt, dass jeder Knoten maximal einmal besucht wird und jede Kante somit maximal zweimal abgesucht wird. Damit ist die Gesamtlaufzeit eines Durchlaufes der while-Schleife O(m), falls der Graph zusammenh¨angend ist. Ansonsten liefert eine Betrachtung der Komponenten des Graphen ebenfalls Laufzeit O(m). t u

5.4 Knotenuberdeckungszahl, ¨ Satz von K¨onig, stabile Mengen in bipartiten Graphen Im Folgenden werden wir einen Zusammenhang zwischen der Matchingzahl und der Knoten¨uberdeckungs- bzw. Stabilit¨atszahl in bipartiten Graphen herstellen, der es insbesondere erm¨oglicht, eine gr¨oßte stabile Menge in bipartiten Graphen in polynomieller Zeit zu berechnen, w¨ahrend dieses Problem f¨ur allgemeine Graphen NP-vollst¨andig ist. Die Knoten¨uberdeckungszahl τ (G) eines Graphen G = (V, E) ist die kleinste Kardinalit¨at einer Menge S ⊆ V (G), so dass jede Kante von G mindestens einen Endpunkt in S hat. Unmittelbar aus der Definition der Knoten¨uberdeckungszahl ergibt sich der folgende Zusammenhang mit der Stabilit¨atszahl: Proposition 66 F¨ur jeden Graphen G = (V, E) gilt: α(G) = |G| − τ (G).

t u

Einen Zusammenhang zwischen Knoten¨uberdeckungszahl und Matchingzahl stellt die folgende Proposition her. Die obere Schranke ist dabei bestm¨oglich, wie z.B. ein Dreieck zeigt. Proposition 67 F¨ur jeden Graphen G = (V, E) gilt: ν(G) ≤ τ (G) ≤ 2ν(G).


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

76

Beweis. Jede Knoten¨uberdeckung muss von jeder Kante eines Matchings mindestens einen Knoten enthalten. Somit gilt τ ≥ ν. Nimmt man alle Endknoten der Kanten eines maximalen Matchings, so u¨ berdecken diese alle Kanten, d.h. es gilt τ ≤ 2ν. t u

F¨ur bipartite Graphen gilt nun in obiger Proposition 67 die Gleichheit mit der unteren Schranke: Satz 68 (K¨onig 1931) Ist G ein bipartiter Graph, so gilt: τ (G) = ν(G). Beweis. Gem¨aß Proposition 67 reicht es, die Ungleichung τ ≤ ν zu zeigen. Sei G = (A ∪ B, E) bipartiter Graph und M gr¨oßtes Matching in diesem Graphen. Die Menge der nicht u¨ berdeckten Knoten in A bezeichnen wir mit U , die Mengen S ⊆ A und T ⊆ B seien die Mengen der von U aus u¨ ber M -alternierende Pfade erreichbaren Knoten. Insbesondere gilt dann also U ⊆ S. Wir behaupten nun, dass C := A−S+T eine Knoten¨uberdeckung von G ist. Es sei {x, y} ∈ E beliebige Kante. Da die Knoten aus A − S in C enthalten sind k¨onnen wir x ∈ S und y ∈ B annehmen. Dann ist aber y u¨ ber einen alternierenden Pfad von U aus erreichbar, d.h. es gilt y ∈ T ⊆ C, d.h. C u¨ berdeckt alle Kanten von G. Wir bestimmen nun die Kardinalit¨at von C. Da es keine M -augmentierenden Pfade in G gibt, sind alle Knoten in T und wegen U ⊆ S auch in A − S und damit in C u¨ berdeckt. F¨ur jede Matchingkante {x, y} ∈ M mit y ∈ T gilt x ∈ S, d.h. die Menge C enth¨alt maximal einen Endknoten einer jeden Matchingkante aus M , d.h. es gilt |C| ≤ |M |. t u

√ Korollar 69 In bipartiten Graphen kann eine gr o¨ ßte stabile Menge in O( nm) bestimmt werden. Beweis. Mit dem Algorithmus von Hopcroft und Karp kann ein gr¨oßtes Matching in bipartiten √ Graphen in O( nm) bestimmt werden. Eine minimale Knoten¨uberdeckung berechnet sich daraus wie im Beweis von Satz 68 zu entnehmen in linearer Zeit. Das Komplement dieser Knoten¨uberdeckung ist eine gr¨oßte stabile Menge. t u


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

77

5.5 Schwerste Matchings in bipartiten Graphen Zu einem gegebenen Graphen G = (V, E) mit einer Gewichtsfunktion w : E → R + ist ein P schwerstes Matching als ein Matching M definiert, das w(M ) := e∈M w(e) maximiert. Die Bestimmung schwerster Matchings in bipartiten Graphen l¨asst sich mit Hilfe des Begriffes der zul¨assigen Knotengewichtung auf den ungewichteten Fall zur¨uckf¨uhren. Eine Funktion c : V → R+ heißt zul¨assige Knotengewichtung eines Graphen G = (V, E), falls w(e) ≤ c(x) + c(y) f¨ur alle Kanten e = {x, y} ∈ E. Der Zusammenhang zwischen zul¨assigen Knotengewichtungen und schwersten Matchings in bipartiten Graphen wird durch folgende Proposition hergestellt: Proposition 70 Es sei M ein Matching in einem bipartiten Graphen G = (V, E) und c : V → R+ zul¨assige Knotengewichtung. Falls i) w(e) = c(x) + c(y) f¨ur alle e = {x, y} ∈ M und ii) c(x) = 0 f¨ur alle nicht u¨ berdeckten Knoten x gilt, so ist M ein schwerstes Matching in G. Beweis. Es sei M 0 beliebiges Matching in G. Dann gilt: w(M 0 ) =

X

e∈M 0

w(e) ≤

X

{x,y}∈M 0

c(x) + c(y) ≤

X

c(x) = w(M )

x∈V (G)

t u

Falls ein Graph nicht bipartit ist, so existiert nicht notwendig eine zul¨assige Knotengewichtung, die die Bedingungen i) und ii) erf¨ullt. Dies kann man bereits am Beispiel eines Dreiecks sehen, bei dem alle Kanten das Gewicht 1 haben und eine der Dreieckskanten im Matching enthalten ist. Satz 71 Der Algorithmus SchwerstesBipartitesMatching (siehe Abbildung 48) findet schwerste Matchings in bipartiten Graphen und hat eine Laufzeit von O(n 3/2 m). Beweis. Wir nehmen zun¨achst δ > ε an. Zu Beginn des Algorithmus stellt die Funktion c offensichtlich eine zul¨assige Knotengewichtung dar. Wegen δ > ε gilt zudem stets c(x) ≥ 0. Betrachte eine beliebige Kante {x, y} mit x ∈ A, y ∈ B. Falls c(x) im aktuellen Schritt um ε erniedrigt wird, so gilt x ∈ A ∩ even(F ). Falls y ∈ B ∩ odd(F ) gilt, so wird c(y) um


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

78

ε erh¨oht und die Knotengewichtung bleibt somit f¨ur die Kante {x, y} zul¨assig. Andernfalls muss y in B\odd(F ) enthalten sein. Nach Definition von ε ist aber dann ebenfalls die neue Knotengewichtung wieder zul¨assig. Knoten, die von M u¨ berdeckt werden, bleiben auch nach Augmentierung von M u¨ berdeckt. Gilt δ ≤ ε so ist M bereits gr¨oßtes gewichtetes Matching. Um dies einzusehen beachte, dass alle von M nicht u¨ berdeckten Knoten in A Gewicht 0 haben, da sie zu Beginn alle das gleiche Gewicht hatten und ihr Gewicht in jedem Iterationsschritt um den gleichen Betrag vermindert wurde. Ebenso haben die in B enthaltenen und nicht von M u¨ berdeckten Knoten das Gewicht 0, da sie dieses zu Beginn haben und nur die Gewichte von u¨ berdeckten Knoten in B erh¨oht werden. Nach Proposition 70 ist M bei Terminierung somit ein gr¨oßtes gewichtetes Matching. F¨ur die Analyse der Laufzeit nehmen wir an, dass der Graph vollst¨andig bipartit ist. Dies l¨asst sich durch Hinzuf¨ugen von Kanten mit Gewicht 0 erreichen. In jedem Durchlauf der whileSchleife vergr¨oßert sich der ungarische Wald um mindestens eine Kante. Damit ist die Anzahl √ der Iterationen durch O(n) beschr¨ankt. Jede ben¨otigt nach Satz 65 O( nm) Operationen, womit sich eine Gesamtlaufzeit von O(n 3/2 m) ergibt. t u

SchwerstesBipartitesMatching (G = (A ∪ B, E)) 1

M := ∅ 

maxe∈E w(e) falls x ∈ A 0 falls x ∈ B

2

c(x) :=

3 4 5 6 7

repeat berechne G0 (A ∪ B, E 0 ) mit E 0 := {{x, y} ∈ E|w(x, y) = c(x) + c(y)} augmentiere M und berechne ungarischen Wald F in G 0 ε := min{c(x) + c(y) − w(x, y)|x ∈ even(F ) ∩ A, y ∈ B\odd(F ), {x, y} ∈ E} δ := min{c(x)|x ∈ A ∩ even(F )}   c(x) − min{ε, δ} falls x ∈ A ∩ even(F ) c(x) := c(x) + min{ε, δ} falls x ∈ B ∩ odd(F )  c(x) sonst until δ ≤ ε

8 9

Abbildung 48: Berechnung schwerster Matchings in bipartiten Graphen

5.6 Die S¨atze von Hall und K¨onig Satz 72 (Hall 1935) Ein bipartiter Graph G = (A ∪ B, E) besitzt genau dann ein Matching, das alle Knoten aus A u¨ berdeckt, wenn |N (S)| ≥ |S| fu¨ r alle S ⊆ A gilt. Beweis. Besitzt G ein Matching, das alle Knoten von A u¨ berdeckt, so zeigen die Matchingkanten, dass |N (S)| ≥ |S| f¨ur alle S ⊆ A gilt.


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

79

Zum Nachweis der anderen Richtung f¨uhren wir eine Induktion u¨ ber |A| durch. F¨ur |A| = 1 gilt die Aussage offensichtlich. Sei also |A| ≥ 2. Falls |N (S)| ≥ |S| + 1 f¨ur alle S ⊆ A mit |S| < |A| gilt, so sei {x, y} eine beliebige Kante in G. Nach Induktionsvoraussetzung besitzt der Graph G \ {x, y} ein Matching das zusammen mit der Kante {x, y} alle Knoten aus A u¨ berdeckt. Wir k¨onnen nun also davon ausgehen, dass es ein S ⊆ A gibt mit |N (S)| = |S| und |S| < |A|. Nach Induktionsvoraussetzung gibt es dann in dem von S ∪ N (S) induzierten Graphen ein Matching, das alle Knoten von S u¨ berdeckt. Betrachte nun den Graphen G\(S ∪N (S)). Dieser erf¨ullt die Voraussetzungen des Satzes, denn g¨abe es eine Menge T ⊆ A \ S mit |N (T )| < |T | so g¨alte |N (T ∪S)| < |T |+|S|. Somit gibt es nach Induktionsvoraussetzung in G\(S ∪N (S)) ein Matching, das alle Knoten von A \ S u¨ berdeckt und insgesamt damit ein Matching in G, das alle Knoten von A u¨ berdeckt. t u

Der Satz von Hall hat eine Reihe interessanter Konsequenzen, von denen wir hier einige angeben: Korollar 73 Ein bipartiter Graph G = (A ∪ B, E) mit |A| = |B| besitzt genau dann ein perfektes Matching, wenn |N (S)| ≥ |S| gilt f u¨ r alle S ⊆ A. t u

Korollar 74 (Ko¨ nig 1916) Ein k-regul¨arer bipartiter Graph besitzt ein perfektes Matching. Beweis. Ein k-regul¨arer bipartiter Graph erf¨ullt die Bedingung aus Satz 72.

t u

Korollar 75 Alle 3SAT Instanzen, in denen jede Variable h o¨ chstens dreimal auftritt und jede Klausel genau 3 Literale entha¨ lt (Literale d¨urfen mehrfach pro Klausel auftreten) sind erf u¨ llbar. Beweis. Betrachte den bipartiten Graphen dessen Knoten die Klauseln und Variablen sind und Kanten zwischen Klauseln und Variablen verlaufen, wenn eine Variable in einer Klausel enthalten ist. Dann sichert Satz 72 die Existenz eines Matchings, das alle Klauseln u¨ berdeckt. Damit ist jede Klausel erf¨ullbar, indem die durch die Matchingkante zugeordnete Variable geeignet gesetzt wird. t u


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

80

5.7 Defektformel, S¨atze von Tutte und Petersen Es sei G = (V, E) ein Graph. Dann bezeichnet q(G) die Anzahl Komponenten von G, die ungerade Kardinalit¨at haben. Der Defekt eines Graphen ist als def (G) := max S⊆V {q(G \ S) − |S|} definiert. Komponenten mit ungerader Kardinalit¨at k¨onnen kein perfektes Matching besitzen. Gibt es in einem Graphen G = (V, E) eine Teilmenge S ⊆ V mit q(G \ S) − |S| > 0 so l¨asst jedes Matching in G mindestens q(G \ S) − |S| viele Knoten un¨uberdeckt. Der Wert |G| − def (G) ist also eine obere Schranke f¨ur die maximale Anzahl Knoten, die von einem Matching u¨ berdeckt werden k¨onnen. Nachfolgender Satz zeigt nun, dass diese Schranke auch immer erreicht werden kann. Satz 76 (Berge 1958) F¨ur jeden Graphen G gilt: 2 · ν(G) = |G| − def (G). Beweis. Nach obigen Bemerkungen reicht es die Ungleichung 2 · ν(G) ≥ |G| − def (G) zu beweisen. Dazu f¨uhren wir eine Induktion u¨ ber |G|. F¨ur |G| = 1 gilt die Ungleichung offensichtlich. Sei nun |G| ≥ 2 und S ⊆ V eine gr¨oßte Menge mit def (G) = q(G \ S) − |S|. Zu zeigen ist, dass es ein Matching M gibt mit 2 · |M | ≥ |G| − def (G). Wir zeigen zun¨achst, dass alle Komponenten von G \ S ungerade Kardinalit¨at haben. Sei K eine beliebige Komponente von G \ S mit gerader Kardinalit¨at und x ∈ K ein beliebiger Knoten, so dass K \ {x} zusammenh¨angend ist. Dann gilt q(G \ (S + x)) = q(G \ S) + 1 und somit q(G \ (S + x)) − |S + x| = q(G \ S) − |S|, was im Widerspruch zur Wahl von S steht. Somit haben alle Komponenten von G \ S ungerade Kardinalit¨at. Als n¨achstes zeigen wir, dass jede Komponente K von G \ S ein perfektes Matching besitzt, falls ein beliebiger Knoten x ∈ K entfernt wird. Nach Induktionsvoraussetzung reicht es dazu zu zeigen, dass def (K \ {x}) = 0 f¨ur jeden Knoten x ∈ K gilt. Sei x ∈ K beliebig. Gilt def (K \ {x}) > 0 so gibt es R ⊆ K \ {x} mit q((K \ x) \ R) − |R| > 0. Da |K \ {x}| gerade ist, m¨ussen q((K \ x) \ R) und |R| gleichen Rest bei Division durch 2 haben. Daher gilt sogar q((K \ x) \ R) − |R| ≥ 2. Somit erhalten wir q(G \ (S ∪ R ∪ x)) − |S ∪ R ∪ x| = q(G \ S) − 1 + q((K \ x) \ R) − |S| − |R| − 1 ≥ def (G), was einen Widerspruch zur Wahl von S darstellt. Wir bilden nun einen bipartiten Graphen dessen Knoten zum einen die Knoten von S und zum anderen die Komponenten von G \ S sind. Ein Knoten in S wird mit einer Komponente K verbunden, falls er einen Nachbarn in K hat. Wir weisen nun nach, dass dieser Graph ein Matching besitzt, das alle Knoten von S u¨ berdeckt. Nach Satz 72 reicht es zu zeigen, dass


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

81

|X| ≤ |N (X)| f¨ur alle X ⊆ S gilt. Angenommen es gibt ein X ⊆ S mit |X| > |N (X)|. Dann gilt q(G \ (S \ X)) ≥ q(G \ S) − |N (X)| > q(G \ S) − |X|, denn G \ (S \ X) hat h¨ochstens |N (X)| weniger ungerade Komponenten als G \ S. Damit stellt die Menge S \ X aber einen Widerspruch zur Wahl von S dar, denn wir erhalten nun: q(G \ (S \ X)) − |S \ X| > q(G \ S) − |X| − |S \ X| = q(G \ S) − |S|. Ein Matching das alle Knoten von S u¨ berdeckt zusammen mit den Matchings in den Komponenten von G\S, die jeweils genau einen Knoten un¨uberdeckt lassen, liefert damit das gesuchte Matching M mit 2 · |M | = |G| − def (G). t u

Korollar 77 (Tutte 1947 ) Ein Graph G = (V, E) besitzt genau dann ein perfektes Matching, wenn q(G − S) ≤ |S| f¨ur alle S ⊆ V gilt. t u

F¨ur den Spezialfall der kubischen Graphen erh¨alt man aus Korollar 77 die folgende Versch¨arfung. Korollar 78 (Petersen 1891) Ein zusammenh a¨ ngender kubischer Graph mit ho¨ chstens 2 trennenden Kanten besitzt ein perfektes Matching. Beweis. Sei G = (V, E) ein zusammenh¨angender kubischer Graph mit h¨ochstens 2 trennenden Kanten, und S ⊆ V beliebig. In jede ungerade Komponente von G − S f¨uhrt von S entweder eine Kante (die dann trennend ist) oder mindestens 3 Kanten. Aus Parit¨atsgr¨unden ist es nicht m¨oglich, dass 2 Kanten von S in eine ungerade Komponente von G − S f¨uhren. Somit f¨uhren mindestens 3·q(G−S)−4 Kanten aus S hinaus, aber maximal 3·|S|. Also gilt q(G−S)−|S| ≤ 4/3 woraus q(G−S)−|S| = 0 folgt, da ein kubischer Graph eine gerade Anzahl Knoten besitzt und somit q(G−S) ≡ |S| (mod 2) gelten muss. Nach Korollar 77 besitzt G somit ein perfektes Matching. t u

Es ist leicht einzusehen, dass jedes perfekte Matching in einem kubischen Graphen alle trennenden Kanten enthalten muss, denn eine trennende Kante in einem solchen Graphen erzeugt aus Parit¨atsgr¨unden stets zwei Komponenten ungerader Kardinalit¨at. Der Graph in Abbildung 49 zeigt somit, dass die Aussage von Korollar 78 scharf ist bez¨uglich der Anzahl trennender Kanten.


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

Abbildung 49: Ein kubischer Graph ohne perfektes Matching.

82


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

83

6 Eulertouren, Hamiltonkreise und das TSP (Vorlesung 20-22) Motivation: K¨onigsberger Br¨uckenproblem, Icosean Game, Springertour

6.1 Charakterisierung Eulerscher Graphen Ein Graph G heißt eulersch, falls es einen geschlossenen Kantenzug in G gibt, der jede Kante von G genau einmal enth¨alt. Ein solcher Kantenzug heißt Eulertour. Nachfolgender Satz liefert eine Charakterisierung eulerscher Graphen. Satz 79 Sei G ein zusammenh¨angender Graph. Dann sind a¨ quivalent: i) G ist eulersch ii) Jeder Knoten in G hat geraden Grad iii) Die Kantenmenge von G ist die disjunkte Vereinigung von Kreisen. Beweis. (i) ⇒ (ii): trivial (ii) ⇒ (iii): Wir zeigen, daß diese Implikation f¨ur beliebige, nicht notwendigerweise zusammenh¨angende Graphen gilt. Dazu f¨uhren wir eine Induktion u¨ ber |E(G)|. Falls |E(G)| = 0, so ist nichts zu zeigen. Ansonsten enth¨alt G mindestens einen Kreis, da bei Start in einem beliebigen Knoten mit Grad > 0 und fortgesetzter Auswahl einer beliebigen noch nicht besuchten inzidenten Kante, man einen Kreis findet. Entferne die Kantenmenge dieses Kreises. Dann hat jeder Knoten in dem so entstehenden Graphen wieder einen geraden Grad und besitzt damit nach Induktionsannahme eine Kreiszerlegung. (iii)⇒ (i): Induktion u¨ ber die Anzahl Kreise k in einer Kreiszerlegung von G. Da G zsh. ist muß G mindestens einen Kreis besitzen. Falls k = 1 so ist G offensichtlich eulersch. Ansonsten w¨ahle einen beliebigen Kreis C aus der Kreiszerlegung von G. Jede Komponente von G − C enth¨alt nach Induktionsannahme eine Eulertour. Da G zusammenh¨angend ist, muß C mindestens einen Knoten aus jeder Komponente von G − C enthalten. L¨auft man nun von einem festen Startknoten ausgehend entlang von C und f¨ugt die Eulertour einer jeden Komponente von G − C jeweils beim erstmaligen erreichen dieser Komponente ein, so erh¨alt man eine Eulertour f¨ur G. t u

Die soeben bewiesene Charakterisierung eulerscher Graphen gilt auch f¨ur Multigraphen. Dies sieht man z.B. leicht ein, wenn man jede Kante des Multigraphen durch einen Pfad der L¨ange 2 ersetzt und auf den so erhaltenen (einfachen) Graphen die Aussage des Satzes anwendet.


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

84

6.2 O(m)-Algorithmen zum Erkennen Eulerscher Graphen und Finden von Eulerkreisen Unmittelbar aus der Charakterisierung ii) aus Satz 79 folgt: Korollar 80 Es gibt einen O(m) Algorithmus, der entscheidet, ob ein Graph eulersch ist.

t u

Das explizite Konstruieren einer Eulertour ist hingegen in linearer nicht mehr ganz trivial durchf¨uhrbar. Ein linearer Algorithmus f¨ur dieses Problem wurde z.B. von Hierholzer angegeben und basiert auf dem Beweis von Eigenschaft iii) in Satz 79. Ein wesentlich einfacherer und ebenfalls linearer Algorithmus ergibt sich durch einfache Erweiterung des DFS: Satz 81 Es gibt einen O(m) Algorithmus, der in einem eulerschen Graphen eine Eulertour bestimmt. Beweis. Der in Abbildung 50 gezeigte Algorithmus, der eine leichte Modifikation des DFS darstellt, liefert eine Eulertour in O(m). t u

Euler (v) 1 while ∃ unmarkierte Kante {v, w} do 2 markiere {v, w} 3 Euler(w) 4 Tour := Tour + {v, w} Abbildung 50: Bestimmung einer Eulertour


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

85

6.3 Hamiltonkreise, NP-Vollst¨andigkeit, Algorithmus zum Finden von Hamiltonkreisen Analog zur Frage nach der Existenz einer Eulertour, die definitionsgem¨aß alle Kanten eines Graphen genau einmal benutzt, ist die Frage nach der Existenz einer Tour, die alle Knoten eines Graphen genau einmal benutzt. Nachfolgend werden wir sehen, daß dieses sehr a¨ hnlich klingende Problem ungleich schwieriger zu l¨osen ist. Ein Graph G heißt hamiltonsch, falls er einen Kreis der L¨ange n enth¨alt. Ein solcher Kreis heißt Hamiltonkreis. Das Problem H AMILTON K REIS ist wie folgt definiert: Gegeben ein Graph G = (V, E), entscheide, ob G einen Hamiltonkreis besitzt. Satz 82 Das Problem H AMILTON K REIS ist NP-vollst a¨ ndig.

t u

Ein einfaches, aber sehr ineffizientes Verfahren, um zu testen, ob ein Graph einen Hamiltonkreis enth¨alt ist es, alle m¨oglichen Knotenpermutationen durchzutesten. Der in Abbildung 51 gezeigte Algorithmus hat zwar die gleiche worst-case Laufzeit, erweist sich jedoch im Allgemeinen als wesentlich praktikableres Verfahren zur Bestimmung eines Hamiltonkreises: Hamilton (v) 1 2 3 4 5

markiere v if alle Knoten sind markiert then if v adjazent mit erstem Knoten return ist hamiltonsch else for w ∈ N (v), w unmarkiert do Hamilton(w) unmarkiere v Abbildung 51: Testen auf Hamiltonkreis

6.4 Hinreichende Bedingungen fur ¨ Hamiltonkreise: Bondy und Chva´ tal, Ore, Dirac, Chv´atal und Erd˝os Satz 82 zeigt, daß das Problem des Bestimmens eines Hamiltonkreises vermutlich keine gute Charakterisierung besitzt. Im folgenden interessieren wir uns daher daf¨ur, hinreichende Bedingungen f¨ur die Existenz von Hamiltonkreisen anzugeben. Lemma 83 Es seien x und y zwei nichtadjazente Knoten im Graph G mit d(x) + d(y) ≥ n. Der Graph G ist genau dann hamiltonsch, wenn G + {x, y} dies ist. Beweis. Ist G hamiltonsch so offensichtlich auch G + {x, y}. Sei also nun G + {x, y} hamiltonsch mit Hamiltonkreis C. Falls {x, y} 6∈ C so ist C auch in


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

86

G enthalten und G somit hamiltonsch. Seien x = v 1 , v2 , . . . , vn = y die Knoten von C. Gibt es einen Index 2 ≤ i ≤ n − 2, so daß {y, vi } und {x, vi+1 } Kanten in G sind, so enth¨alt G den Hamiltonkreis x = v1 , vi+1 , vi+2 , . . . , vn = y, vi , vi−1 , . . . , v1 . Falls es einen solchen Index i nicht gibt, so gilt d(x) + d(y) ≤ n − 2 − (d(y) − 1) + d(y) = n − 1 da x h¨ochstens n − 2 Nachbarn haben kann und jeder Nachbar von y bis auf v n−1 einen Nachbarn f¨ur x verbietet. Damit haben wir einen Widerspruch zu d(x) + d(y) ≥ n erhalten. t u

Zu einem Graphen G betrachte eine Folge G = G 0 , . . . , Gk maximaler L¨ange, wobei Gi+1 aus Gi entsteht, indem zwei nichtadjazente Knoten in G i deren Gradsumme mindestens n ist, durch eine Kante verbunden werden. Dann nennt man G k Hamiltonabschluß von G. Nachfolgendes Lemma zeigt, daß der Hamiltonabschluß eines Graphen unabh¨angig von der Wahl der in der Definition benutzten Folge ist. Lemma 84 Jeder Graph besitzt genau einen Hamiltonabschluß. Beweis. Seien G1 und G2 Hamiltonabschl¨usse eines Graphen G. Sei G 1 = G + {e1 , e2 , . . .}, wobei die Kanten in der Reihenfolge ihres Zuf¨ugens zu G numeriert seien. Bezeichne i den kleinsten Index einer Kante ei = {x, y}, die in G1 aber nicht in G2 vorkommt. Ein solches i existiert, da ansonsten G1 ⊆ G2 gelten w¨urde. Dann ist aber G + {e1 , e2 , . . . ei−1 } Teilgraph von G2 und es gilt somit dG2 (x) + dG2 (y) ≥ n, da dies bereits nach Definition von G 1 f¨ur den Graphen G+{e1 , e2 , . . . , ei−1 } gilt. Dann m¨ußte aber ei Kante in G2 sein, was im Widerspruch zur Wahl von i steht. t u

Satz 85 (Bondy, Chva´ tal 1976 ) Ein Graph ist genau dann hamiltonsch, wenn sein Hamiltonabschluß dies ist. Beweis. Induktion u¨ ber die Anzahl hinzugef¨ugter Kanten.

t u

Korollar 86 (Ore 1960 ) Ist G ein Graph mit mindestens drei Knoten und gilt f u¨ r alle (x, y) 6∈ E : d(x) + d(y) ≥ n so ist G hamiltonsch. t u


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

87

Korollar 87 (Dirac 1952) Ist G ein Graph mit mindestens drei Knoten und gilt δ(G) ≥ n/2 so ist G hamiltonsch. t u

Bemerkung Obige Resultate sind scharf, wie folgende Beispiele zeigen: 1) G = Kn/2 ∪ Kn/2 . Dann gilt δ(G) = n/2 − 1 und G ist nicht einmal zusammenh¨angend. 2) G = Kr,r+1 . Dann gilt δ(G) = r = (n − 1)/2 und G ist nicht hamiltonsch.

Satz 88 (Chv´atal, Erd˝os 1972) Ist G ein Graph mit mindestens drei Knoten und gilt κ(G) ≥ α(G) so ist G hamiltonsch. Beweis. Gilt α(G) = 1, so ist G eine Clique und damit sicherlich hamiltonsch. Sei nun also κ ≥ α ≥ 2 und C ein Kreis in G. Gilt |C| = n so ist C ein Hamiltonkreis. Sei also |C| < n S und S eine Zusammenhangskomponente in G − C. Setze T := C ∩ s∈S N (s), d.h. T ist die Menge aller Knoten in C, die einen Nachbarn in S haben. Da G 2-fach zusammenh¨angend ist gilt |T | ≥ 2. Je zwei Knoten aus T sind durch einen Pfad verbunden, dessen innere Knoten aus S sind. Sei der Kreis C beliebig orientiert und bezeichne x ∗ ∈ C bzgl. dieser Orientierung den Nachfolger eines Knotens x ∈ C. Gibt es einen Knoten x ∈ C mit x, x ∗ ∈ T , so l¨aßt sich der Kreis C verl¨angern, indem man die Kante xx ∗ durch den entsprechenden Pfad in S ersetzt. Sind x, y ∈ T und gilt x∗ y ∗ ∈ E, so l¨aßt sich der Kreis C verl¨angern, indem man die Kanten xx∗ und yy ∗ entfernt und stattdessen die Kante x ∗ y ∗ und das Pfadst¨uck von x nach y durch S einf¨ugt. Sei C ein Kreis maximaler L¨ange in G und sei T ∗ := {x∗ |x ∈ T }. Da sich C nicht mehr nach obigen Verfahren verl¨angern lassen kann, muß T ∗ stabil sein und es gilt T ∗ ∩ T = ∅, da T keine zwei konsekutiven Knoten aus C enthalten kann. Somit ist die Menge s ∪ T ∗ f¨ur alle s ∈ S stabil. Da T eine trennende Knotenmenge ist erhalten wir: κ(G) ≤ |T | = |T ∗ | < |T ∗ ∪ s| ≤ α(G), was einen Widerspruch zur Voraussetzung darstellt.

t u

Bemerkung Dieses Resultat ist scharf, wie folgende Beispiele zeigen: 1) G = Petersen Graph. Dann gilt α(G) = 4 und κ(G) = 3 und G ist nicht hamiltonsch. 2) G = Kr,r+1 . Dann gilt α(G) = r + 1 und κ(G) = r und G ist nicht hamiltonsch.

Satz 88 liefert unmittelbar einen polynomiellen Algorithmus zum Finden eines Hamiltonkreises in Graphen G mit κ(G) ≥ α(G). Dazu muß nur mit einem beliebigen Kreis gestartet werden und dieser gem¨aß dem Verfahren des Beweises so lange verl¨angert werden, bis er alle Knoten enth¨alt.


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

88

Korollar 89 In einem Graph G mit κ(G) ≥ α(G) l a¨ ßt sich ein Hamiltonkreis in O(mn) Schritten finden. t u

Beachte, daß dieser Algorithmus auch f¨ur Graphen G, in denen nicht κ(G) ≥ α(G) gilt polynomielle Laufzeit hat. Allerdings findet der Algorithmus dort nicht notwendigerweise einen Hamiltonkreis. Er kann auch mit einem Zertifikat daf¨ur abbrechen, daß κ(G) < α(G) gilt. Der C5 stellt ein Beispiel f¨ur einen Graphen dar, f¨ur den Satz 88 zeigt daß er hamiltonsch ist. Dies kann jedoch nicht aus Korollar 86 gefolgert werden. Das nachfolgende Ergebnis von Bondy zeigt nun, daß Satz 88 ein st¨arkeres hinreichendes Kriterium f¨ur die Existenz eines Hamiltonkreises liefert als Korollar 86. Lemma 90 (Bondy) Ist G ein Graph mit mindestens drei Knoten und gilt f u¨ r alle (x, y) 6∈ E : d(x) + d(y) ≥ n so gilt auch κ(G) ≥ α(G). Beweis. Sei S eine gr¨oßte stabile Menge und A eine minimal trennende Knotenmenge in G. Falls S ⊆ A gilt, so gilt offensichtlich κ(G) ≥ α(G). Ansonsten sei X eine Zusammenhangskomponente von G − A mit S ∩ X 6= ∅. Sei x ∈ S ∩ X und Y := V \(A ∪ X). Da G − A mindestens zwei Zusammenhangskomponenten besitzt, ist Y nicht leer. Wir unterscheiden nun zwei F¨alle. Sei zun¨achst S ∩ Y = ∅. W¨ahle y ∈ Y beliebig. Dann liegen x und y in verschiedenen Komponenten von G − A und sind somit nicht adjazent. Es gilt daher: n ≤ d(x) + d(y) ≤ |(X ∪ A)\S| + |Y | + |A| − 1 = n − |S| + |A| − 1 Somit erhalten wir |S| < |A|. Betrachte nun den Fall S ∩ Y 6= ∅. W¨ahle wiederum y ∈ S ∩ Y beliebig. Dann gilt: n ≤ d(x) + d(y) ≤ |X\S| + |A\S| + |Y \S| + |A\S| ≤ |V (G)\S| + |A| = n − |S| + |A| Nun erhalten wir |S| ≤ |A|.

t u

6.5 Das Traveling Salesman Problem, NP-Vollst¨andigkeit Gegeben seien ein vollst¨andiger Graph G = (V, E), eine Gewichtsfunktion c : E → R ≥0 sowie eine Zahl k. Das Traveling Salesman Problem (TSP) besteht darin, zu entscheiden, ob der Graph G einen Hamiltonkreis der L¨ange h¨ochstens k enth¨alt. Jeder Hamiltonkreis in G wird


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

89

als TSP-Tour bezeichnet. Eine optimale TSP-Tour f¨ur einen Graphen ist eine k¨urzest m¨ogliche TSP-Tour. Satz 91 (Karp 1972) Das Problem TSP ist NP-schwer. Beweis. Wir reduzieren das NP-vollst¨andige Problem H AMILTON K REIS auf TSP. Zu einer gegebenen Instanz G = (V, E) f¨ur H AMILTON K REIS konstruiere einen vollst¨andigen Graphen G0 auf der Knotenmenge V als Instanz f¨ur TSP wie folgt. Kanten, die auch in G enthalten sind erhalten das Gewicht 1, alle anderen Kanten erhalten das Gewicht 2. Der Graph G besitzt genau dann einen Hamiltonkreis, wenn G0 eine optimale TSP-Tour der L¨ange |V | enth¨alt. t u

In praktisch relevanten Instanzen des TSP kommen vielfach nur spezielle Gewichtsfunktionen vor. Gen¨ugt die Gewichtsfunktion c : E → R ≥0 der Dreiecksungleichung, d.h. gilt f¨ur je drei Knoten x, y, z : c(x, y) + c(y, z) ≥ c(x, z) so spricht man von metrischem TSP. Unmittelbar aus dem Beweis von Proposition 91 erh¨alt man: Korollar 92 Metrisches TSP ist NP-schwer.

t u

Zwei weitere Spezialf¨alle des TSP sind das euklidische und das rektilineare TSP. Diese Spezialf¨alle liegen vor, wenn man die Knoten des Graphen so in den R 2 einbetten kann, dass die Kantengewichtsfunktion gerade den Knotenabstand in L 2 bzw. L1 -Norm angibt. Auch diese beiden Spezialf¨alle des metrischen TSP lassen sich als NP-schwer nachweisen. Lemma 93 (Garey, Graham, Johnson 1976) Euklidisches und rektilineares TSP sind NP-schwer.

t u

6.6 Optimierungsprobleme, Nichtapproximierbarkeit von TSP Gegeben sei ein Optimierungsproblem Q ⊆ I × S zusammen mit einer Bewertungsfunktion f : I × Q → R. Ein Approximationsalgorithmus A f¨ur Q ist ein Algorithmus, der f¨ur jedes x ∈ I ein s ∈ S ausgibt, so dass (x, s) ∈ Q. Den Wert f (s) der L¨osung s, die A f¨ur die Instanz x zur¨uckliefert, bezeichnen wir mit A(x). Es sei Q ein Minimierungsproblem. Der Algorithmus A hat Approximationsg u¨ te c, falls A(x) ≤ c · f (s) gilt f¨ur alle (x, s) ∈ Q.


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

90

Satz 94 (Sahni, Gonzalez 1976) Falls es einen polynomiellen Approximationsalgorithmus f u¨ r TSP gibt mit Approximationsgu¨ te r ∈ N, so gilt P = N P . Beweis. Wir nehmen an, dass es eine Zahl r gibt f¨ur die es einen polynomiellen Approximationsalgorithmus A f¨ur TSP gibt mit Approximationsg¨ute kleiner als r. Wir zeigen, dass man A benutzen kann, um das NP-vollst¨andige Problem H AMILTON K REIS zu entscheiden. Zu einer gegebenen Instanz G von H AMILTON K REIS definieren wir eine Instanz G 0 von TSP mit Kantengewichten

cxy :=



1 , falls xy ∈ E(G) r · |V (G)|, sonst.

Ist G hamiltonsch, so gibt es in G0 eine TSP-Tour der L¨ange |V (G)|. Ansonsten muss jede TSP-Tour in G0 mindestens eine Kante der L¨ange r·|V (G)| benutzen und hat damit mindestens L¨ange r · |V (G)| + |V (G)| − 1 > r · |V (G)|. Der Algorithmus A angewendet auf G 0 liefert somit genau dann einen Wert ≤ r · |V (G)|, falls G hamiltonsch ist. t u

6.7 Die Gute ¨ der Nearest-Neighbor-Heuristik Die in obigem Beweis konstruierte Instanz G 0 ist nicht metrisch. Es zeigt sich, dass im Falle des metrischen TSP eine analoge Aussage nicht bewiesen werden kann. Vielmehr lassen sich f¨ur das Problem TSP in dem f¨ur die Praxis wichtigen Spezialfall metrischer Instanzen polynomielle Approximationsalgorithmen angeben, die konstante Approximationsg¨ute erzielen. Im folgenden werden zwei solche Approximationsalgorithmen vorgestellt. Zun¨achst einmal wird jedoch gezeigt, dass die naheliegende sogenannte Nearest-Neighbor-Heuristik keinen vern¨unftigen Approximationsalgorithmus f¨ur das metrische TSP darstellt. NearestNeighbor (G, v1 ) 1 2 3

Tour := v1 for i = 2 to |V (G)| do verl¨angere Tour v1 . . . vi−1 um Knoten vi , der geringsten Abstand zu vi−1 hat und noch nicht in der Tour enthalten ist. Abbildung 52: Die NearestNeighbor-Heuristik zum Finden einer TSP-Tour

Satz 95 (Rosenkrantz, Stearns, Lewis 1977) Die NearestNeighbor-Heuristik hat eine Approximationsg¨ute ∞ f¨ur metrisches TSP.


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

91

Beweis. Wir konstruieren induktiv Instanzen F i , f¨ur jedes i ∈ N, die die Eigenschaft haben, dass die von der Nearest-Neighbor-Heuristik gefundene Tour mindestens i/6 mal so lang ist wie eine optimale Tour. Jedes Fi besitzt jeweils drei ausgezeichnete Knoten L i , Ri und Mi . Die Instanz F1 besitztPSfrag lediglich diese drei Knoten und Kanten der L¨ange 1 zwischen je zwei dieser replacements Knoten. Die Instanz Fi+1 ensteht aus zwei Kopien der Instanz F i sowie 3 zus¨atzlichen Knoten, die wie in der Abbildung angegeben Mi+1 durch Kanten verbunden werden. Alle nicht eingezeichneten Kanten erhalten jeweils als Gewicht die L¨ange eines k¨urzesten Pfades der die Endpunkte der Kante verbindet. 1

2i PSfrag replacements F1 :

Fi Li+1 =Li Ri = Ri+11 Li

1 Fi+1 :

Mi

Ri

2i

1

Li+1 =Li

1

Mi

Ri

2i

1

1 Mi+1

1 Li

Fi

Mi

Ri = Ri+1

Fi

Man kann zeigen, dass die so konstruierten Instanzen F i metrisch sind. Es gilt |V (Fi+1 )| = 2|V (Fi )| + 3 und wegen |V (F1 )| = 3 erh¨alt man somit |V (Fi )| = 3(2i − 1). Offensichtlich gibt es in Fi gem¨aß Konstruktion einen Hamiltonpfad von L i nach Ri , der L¨ange 3(2i − 1) − 1 und man erh¨alt somit OP T (Fi ) ≤ 2(3(2i − 1) − 1) = 6 · 2i − 8 Wir zeigen nun induktiv, dass die Nearest-Neighbor-Heuristik eine Tour der L¨ange (i+1)2 i −2 in Fi finden kann, die aus einem Hamiltonpfad von L i nach Mi und der Kante Mi Li besteht. Bezeichne ti die L¨ange des Hamiltonpfades. Dann gilt die Behauptung offensichtlich f¨ur i = 1, da die Nearest-Neighbor-Heuristik die Tour L 1 , R1 , M1 , L1 der L¨ange 3 zur¨uckliefern kann. Eine von der Nearest-Neighbor-Heuristik gefundene Tour f¨ur F i+1 k¨onnte nun wie folgt aussehen (muss bewiesen werden): Starte mit dem Hamiltonpfad von L i nach Mi in der linken Kopie von Fi , benutze die Kante von Mi zum rechten Nachbarn von Mi+1 der L¨ange 2i , gehe nach Li in der rechten Kopie von Fi u¨ ber eine Kante der L¨ange 1, benutze Hamiltonpfad von Li nach Mi in der rechten Kopie von Fi , benutze die Kante von Mi zum linken Nachbarn von Mi+1 und gehe u¨ ber eine Kante der L¨ange 1 zu M i+1 . Damit erh¨alt man einen Hamiltonpfad


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

92

von Li+1 nach Mi+1 , f¨ur dessen L¨ange man wegen T1 = 2 somit erh¨alt: ti+1 = 2ti + 2 · 2i + 2 = (i + 1)2i − 2 Da die Tour in der Instanz Fi mindestens die L¨ange ti hat, erh¨alt man also, dass die Approxii −2 mationsg¨ute der Nearest-Neighbor-Heuristik h¨ochstens (i+1)2 ≥ i/6 sein kann. t u 6·2i −8

6.8 Die Minimum Spanning Tree Heuristik Nachfolgend werden wir nun zwei einfache Heuristiken f¨ur das metrische TSP kennenlernen, die konstante Approximationsg¨ute aufweisen. Beide benutzen minimal spannende B¨aume, um eine TSP-Tour zu berechnen. Nachfolgende Proposition zeigt, dass die L¨ange eines minimal spannenden Baumes eine einfache untere Schranke f¨ur die L¨ange einer optimalen TSP Tour darstellt. Proposition 96 Eine optimale TSP Tour ist mindestens so lang wie ein minimal spannender Baum. Beweis. Entfernt man aus einer TSP-Tour eine Kante, so erh¨alt man einen spannenden Baum, der mindestens so lang sein muss, wie ein minimal spannender Baum. t u

Die nachfolgende sogenannte Minimum Spanning Tree Heuristik liefert nun eine TSP Tour, die maximal doppelt so lang ist, wie eine optimale TSP-Tour. MSTHeuristik (G) 1 2 3 4 5

berechne minimal spannenden Baum B in G B 0 := Multigraph, der aus B durch Verdoppeln aller Kanten entsteht berechne Eulertour T in B 0 while es gibt konsekutive Kanten {x, y}, {y, z} ∈ T mit d T (y) > 2 do ersetze in T Kanten {x, y}, {y, z} durch Kante {x, z} Abbildung 53: Die Minimum-Spanning-Tree-Heuristik zum Finden einer TSP-Tour

Lemma 97 Die Minimum-Spanning-Tree-Heuristik hat Approximationsg u¨ te 2. Beweis. Sei M ST (I) die L¨ange einer L¨osung, die die Minimum Spanning Tree Heuristik f¨ur eine Instanz I liefert. Nach Proposition 96 hat die in dem Algorithmus konstruierte Eulertour


PSfrag replacements 9. Februar 2006 Mi Mi+1 Ri Li 1 1 2i

Hougardy: Graphen und Algorithmen 1, WS2005/2006

93

Fi PSfrag replacements Li+1 =Li Mi R = Ri+1 Mi+1i Ri Li 1 1 2i Li+1

Fi =Li Ri = Ri+1

Abbildung 54: Ein Beispiel, f¨ur das die Minimum-Spanning-Tree-Heuristik nur G¨ute 2 hat maximal eine L¨ange von 2 ¡ OP T (I). Wegen der Dreiecksungleichung wird diese aber durch die in der while-Schleife vorgenommenen Ersetzungen h¨ochstens k¨urzer. t u

Die Absch¨atzung in obigem Lemma ist bestm¨oglich, d.h. man kann f¨ur jedes  > 0 eine metrische (sogar euklidische) Instanz angeben, f¨ur die die Minimum Spanning Tree Heuristik nur eine Approximationsg¨ute von 2 â&#x2C6;&#x2019;  erreicht. Ein Beispiel einer solchen Instanz stellt ein 2 Ă&#x2014; n Gitter mit Kantenl¨ange 1 dar. Offensichtlich ist die L¨ange einer optimalen TSP-Tour in dieser Instanz 2n w¨ahrend Abbildung 54 zeigt, dass die Minimum Spanning Tree Heuristik eine Tour p der L¨ange 3n â&#x2C6;&#x2019; 3 + 1 + (n â&#x2C6;&#x2019; 2)2 > 4n â&#x2C6;&#x2019; 5 liefern kann.

6.9 Die Christofides-Heuristik Wie obiges Beispiel zeigt, verliert die Minimum Spanning Tree Heuristik den Faktor 2 gegen¨uber einer optimalen L¨osung durch das Verdoppeln aller Kanten. Von Christofides stammt die Idee, statt alle Kanten des Baumes zu verdoppeln, lediglich ein leichtestes gewichtetes perfektes Matching zwischen allen Knoten ungeraden Grades einzuf¨ugen, um so einen Graphen zu erhalten, der eine Eulertour besitzt. Lemma 98 Die Christofides-Heuristik hat Approximationsg u¨ te 3/2.


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

94

ChristofidesHeuristik (G) 1 berechne minimal spannenden Baum B in G PSfrag replacements 2 B 0 := Multigraph, der aus B durch Hinzuf¨ugen eines leichtesten peri fektenM Matchings auf allen Knoten ungeraden Grades in B entsteht M i+1 Eulertour T in B 0 4 berechne Rigibt konsekutive Kanten {x, y}, {y, z} ∈ T mit d T (y) > 2 do 5 while es Li in T Kanten {x, y}, {y, z} durch Kante {x, z} 6 ersetze 1 1 Abbildung 55: Die Christofides-Heuristik zum Finden einer TSP-Tour 2i Li+1

Fi =Li Ri = Ri+1

Abbildung 56: Ein Beispiel, f¨ur das die Christofides-Heuristik nur G¨ute 3/2 hat Beweis. Sei Ch(I) die L¨ange einer L¨osung, die die Christofides-Heuristik f¨ur eine Instanz I liefert. Dann gilt wegen Proposition 96 Ch(I) ≤ mst(I) + M (I) ≤ OP T (I) + M (I) wobei M (I) die L¨ange eines leichtesten gewichteten perfekten Matchings auf der Menge W der Knoten ungeraden Grades des minimal spannenden Baumes bezeichnet. Eine optimale TSP-Tour auf der Menge W hat wegen der Dreiecksungleichung h¨ochstens die L¨ange OP T (I). Da die Auswahl einer jeden zweiten Kante einer solchen TSP-Tour ein perfektes Matching auf W liefert, gilt M (I) ≤ OP T (I)/2, womit insgesamt Ch(I) ≤ 3/2 · OP T (I) folgt. t u

Auch f¨ur die Christofides-Heuristik lassen sich euklidische Instanzen angeben, die zeigen, dass die Approximationsg¨ute 3/2 bestm¨oglich ist. Abbildung 56 zeigt eine solche Instanz. Diese besteht aus 2n + 1 Punkten eines Dreiecksgitters mit Kantenl¨ange 1. Eine optimale Tour darin hat L¨ange 2n+1, w¨ahrend die Christofides-Heuristik eine Tour der L¨ange 2n+(n−1) = 3n−1 liefern kann.


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

95

7 F¨arbungen (Vorlesung 23–26) Motivation: Registerzuweisung, Frequenzzuweisungsproblem, Stundenpl¨ane

7.1 Grundlegende Definitionen, NP-Vollst¨andigkeit Wir wiederholen hier zun¨achst die grundlegenden Definitionen. Eine F a¨ rbung der Knoten eines Graphen G = (V, E) ist eine Abbildung f : V → N mit f (x) 6= f (y) f¨ur alle {x, y} ∈ E. Eine k-F¨arbung ist eine F¨arbung mit |f (V )| ≤ k. Besitzt ein Graph eine k-F¨arbung, so heißt er k-f¨arbbar. Die chromatische Zahl χ eines Graphen G ist als das kleinste k definiert, f¨ur das G eine k-F¨arbung besitzt. Knoten gleicher Farbe in einer F¨arbung von G bilden eine Farbklasse. Er heißt eindeutig k-f¨arbbar, falls alle k-F¨arbungen die gleichen Farbklassen erzeugen. Ein Graph G heißt bipartit, falls χ(G) ≤ 2 gilt. Das Bestimmen der chromatischen Zahl eines Graphen ist ein NP-schweres Problem. Selbst f¨ur den Spezialfall k = 3 ist dies ein schwieriges Problem, wie folgendes Ergebnis zeigt. Satz 99 Zu entscheiden, ob ein gegebener Graph 3-f a¨ rbbar ist, ist ein NP-vollsta¨ ndiges Problem. t u

7.2 Der Greedy-Algorithmus Falls P 6= N P ist, lassen sich also keine optimalen F¨arbungen in polynomieller Zeit finden. Das Finden einer zul¨assigen F¨arbung hingegen ist trivial, da man beispielsweise jedem Knoten eine andere Farbe zuordnen kann. Eine einfache M¨oglichkeit, in sogar linearer Zeit, eine im allgemeinen bessere zul¨assige F¨arbung zu finden, liefert der Greedy-Algorithmus. Greedy Coloring 1 2

for i := 1 to n do f¨arbe Knoten i mit der kleinsten Farbe, die in seiner Nachbarschaft nicht vorkommt. Abbildung 57: Der Greedy F¨arbungsalgorithmus

Proposition 100 Der Greedy-Algorithmus liefert in linearer Zeit eine F a¨ rbung des Graphen G mit h¨ochstens ∆(G) + 1 Farben. Beweis. Zun¨achst zeigen wir, wie der Greedy-Algorithmus mit linearer Laufzeit implementiert werden kann. Dazu gen¨ugt es zu zeigen, dass der Zeitaufwand, der pro Knoten in der


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

96

for-Schleife ben¨otigt wird, proportional zum Grad des Knotens ist. Zum Ermitteln der kleinsten Farbe, die in der Nachbarschaft eines Knotens i nicht vorkommt, benutzen wir ein Array A[1 . . . n] mit n Elementen, die zu Beginn alle auf 0 stehen. F¨ur jeden schon gef¨arbten Nachbarn x von i wird der Wert von A[F arbe(x)] auf i gesetzt. Der Knoten i bekommt sodann den kleinsten Index als Farbe, f¨ur den das Array A nicht den Wert i enth¨alt. Da maximal d(i) Eintr¨age in A den Wert i haben k¨onnen, ist die Laufzeit pro Knoten proportional zu seinem Grad und jeder Knoten ist mit einer Farbe gef¨arbt, die um h¨ochstens 1 gr¨oßer ist als sein Grad. Insbesondere ist der Graph G dann mit h¨ochstens ∆(G) + 1 Farben gef¨arbt. t u

Die Qualit¨at der L¨osung, die der Greedy-Algorithmus liefert, ist sehr stark von der Reihenfolge abh¨angig, in der die Knoten gef¨arbt werden. Proposition 101 F¨ur jeden Graphen G = (V, E) kann der Greedy-Algorithmus bei geeigneter Reihenfolge der Knoten eine optimale F a¨ rbung liefern. Beweis. Sei f : V → {1, . . . , χ(G)} eine optimale F¨arbung von G, die zudem die Eigenschaft habe, dass jeder Knoten mit Farbe i mit jeweils mindestens einem Knoten aller Farben k f¨ur 1 ≤ k < i adjazent ist. Eine solche F¨arbung existiert stets, da man ausgehend von einer beliebigen optimalen F¨arbung, sukzessive Knoten, die nicht diese Eigenschaft haben, eine kleinere Farbe geben kann. Sind die Knoten nun gem¨aß ihrer Farbe aufsteigend sortiert, so liefert der GreedyAlgorithmus eine optimale F¨arbung. t u

W¨ahrend der Greedy-Algorithmus also prinzipiell in der Lage ist, eine optimale F¨arbung zu finden, gibt es Beispiele von bipartiten Graphen, f¨ur die der Greedy-Algorithmus bei geeigneter Knotenreihenfolge linear viele Farben ben¨otigt. Sei G = (A ∪ B, E) bipartiter Graph mit |A| = |B|, f : A → B Bijektion und f¨ur a ∈ A und b ∈ B sei {a, b} ∈ E, falls b 6= f (a). Die Knoten von G seien derart sortiert, dass einem Knoten a ∈ A der Knoten f (a) folgt. Dann ben¨otigt der Greedy-Algorithmus |A| viele Farben zum F¨arben des bipartiten Graphen G.

7.3 Der Satz von Brooks Die vollst¨andigen Graphen und die ungeraden Kreise zeigen, dass die Schranke in Proposition 100 f¨ur die G¨ute des Greedy-Algorithmus bestm¨oglich ist. Der nachfolgende Satz von Brooks zeigt jedoch, dass diese beiden Graphenklassen die einzigen Graphen sind, f¨ur die ∆ + 1 viele Farben ben¨otigt werden. Satz 102 (Brooks 1941) F¨ur einen zusammenh¨angenden Graphen G, der weder vollst a¨ ndig noch ein ungerader Kreis ist, gilt χ(G) ≤ ∆(G).


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

97

Beweis. Wir nehmen zun¨achst an, dass der Graph G 3-fach zusammenh¨angend ist. Sei x n ein Knoten, der zwei nichtadjazente Nachbarn x 1 und x2 besitzt. Ein solcher Knoten existiert in G, da G nicht vollst¨andig ist. Nun seien die restlichen Knoten von G derart angeordnet, dass die Anordnung x1 , x2 , . . . , xn die Eigenschaft hat, dass jeder Knoten bis auf x n einen Nachbarn mit h¨oherem Index besitzt. Eine solche Anordnung liefert z.B. ein spannender Baum in G − {x1 , x2 } mit Wurzel xn , indem man der Reihe nach jeweils die Bl¨atter des spannenden Baumes entfernt. Nun benutze man den Greedy-Algorithmus f¨ur die Knotenanordnung x1 , . . . , xn . Dann werden maximal ∆(G) viele Farben benutzt, da jeder Knoten x i mit 1 ≤ i < n einen Nachbarn xj hat mit j > i und xj ist noch ungef¨arbt, wenn xi gef¨arbt wird. Zudem werden die Knoten x1 und x2 mit der gleichen Farbe gef¨arbt, sodass der Knoten xn maximal ∆(G) − 1 viele verschiedene Farben in seiner Nachbarschaft hat. Falls G nicht 3-fach zusammenh¨angend ist, so k¨onnen wir zumindest annehmen, dass G 2fach zusammenh¨angend ist, da wir ansonsten die Bl¨ocke von G unabh¨angig voneinander mit ∆(G) Farben f¨arben k¨onnen und nach geeigneter Permutation der Farben eine ∆(G)-F¨arbung von G erhalten. Sei also G = G1 ∪ G2 mit V (G1 ) ∩ V (G2 ) = {x1 , x2 } und |V (Gi )| ≥ 3. Da G 2-zusammenh¨angend ist, m¨ussen die Knoten x 1 und x2 jeweils Nachbarn in V (Gi ) − {x1 , x2 } haben. Falls {x1 , x2 } Kante in G ist, so kann man jeweils eine ∆(G)-F¨arbung von Gi finden und diese nach geeigneter Permutation der Farben zu einer ∆(G)-F¨arbung von G zusammensetzen. Ansonsten f¨uge man die Kante {x 1 , x2 } in G ein. Die Graphen Gi haben dann immer noch Maximalgrad ∆(G) und sind daher mit ∆(G) vielen Farben f¨arbbar, es sei denn sie sind vollst¨andig ∆(G)-regul¨ar oder induzieren einen ungeraden Kreis. Induziert einer der beiden Graphen einen ungeraden Kreis, so enthielte G einen Knoten x vom Grad 2. Da wir ∆(G) > 2 annehmen k¨onnen, ist G − x mit ∆(G) Farben f¨arbbar und der Knoten x kann mit einer beliebigen Farbe verschieden von den Farben seiner beiden Nachbarn gef¨arbt werden. Ist einer der beiden Graphen vollst¨andig ∆(G)-regul¨ar, z.B. sei dies G 1 , so haben die Knoten x1 und x2 jeweils nur einen Nachbarn in G2 . Kontrahiert man die Knoten x1 und x2 , so sind G1 und G2 mit ∆(G) Farben f¨arbbar, da G2 einen Knoten vom Grad 2 enth¨alt. Die ∆(G)F¨arbungen von G1 und G2 ergeben zusammen eine ∆(G)-F¨arbung von G. t u

7.4 Graphen mit hoher chromatischer Zahl und hohem girth, Mycielski-Graphen, Satz von Erd˝os Die Schranke ∆(G) f¨ur die chromatische Zahl eines Graphen kann beliebig schlecht sein, wie z.B. vollst¨andig bipartite Graphen zeigen. Auch f¨ur die untere Schranke χ(G) ≥ ω(G) lassen sich Beispiele angeben, die zeigen, dass diese Schranke beliebig schlecht sein kann. Solche Beispiele konkret anzugeben, ist jedoch schon ungleich schwieriger.


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

98

Die Familie der Mycielski-Graphen M i = (Vi , Ei ) ist rekursiv wie folgt definiert: M1 Mi+1 Vi+1 Ei+1

:= := := :=

C5 (Vi+1 , Ei+1 ) mit Vi × {0, 1} ∪ xi+1 und {{(x, 0), (y, 0)} ∈ (Vi , 0) × (Vi , 0)|{x, y} ∈ Ei }∪ {{(x, 0), (y, 1)} ∈ (Vi , 0) × (Vi , 1)|{x, y} ∈ Ei }∪ {{(x, 1), xi }|(x, 1) ∈ (Vi , 1)}

Lemma 103 F¨ur den i-ten Mycielski-Graphen Mi gilt ω(Mi ) = 2 und χ(Mi ) = i + 2. Beweis. Offensichtlich gilt ω(Mi ) = 2. Wir zeigen nun durch Induktion u¨ ber i, dass χ(M i ) = i + 2 gilt. Wegen χ(C5 ) = 3 gilt die Aussage f¨ur i = 1. Der Graph M i+1 l¨asst sich sicherlich mit i + 3 Farben f¨arben, da nach Induktionsvoraussetzung χ(M i ) = i + 2 gilt und die Knoten (x, 1) jeweils in der gleichen Farbe wie (x, 0) gef¨arbt werden k¨onnen. F¨ur den Knoten x i+1 kann sodann die (i + 3)te Farbe verwendet werden. Damit gilt i + 2 ≤ χ(M i+1 ) ≤ i + 3. Wir nehmen nun an, dass der Graph Mi+1 mit i+2 Farben f¨arbbar ist. In einer solchen F¨arbung gibt es zu jeder Farbe j einen mit dieser Farbe gef¨arbten Knoten (x j , 0) so dass in der Nachbarschaft von (xj , 0) alle anderen Farben vorkommen. Ansonsten w¨are der Graph M i bereits mit i + 1 Farben f¨arbbar. Dann m¨ussen aber auch alle i + 2 Farben in der Menge (x, 1) vorkommen und der Knoten xi+1 kann nicht zul¨assig gef¨arbt werden. t u

Die Mycielski Graphen zeigen, dass ein Graph hohe chromatische Zahl haben kann, auch wenn er keine Clique der Gr¨oße 3 enth¨alt. Allerdings haben die Mycielski-Graphen eine Knotenzahl, die exponenziell in der chromatischen Zahl ist. Die folgende Aussage von Erd˝os zeigt nun, dass es auch sehr viel kleinere solche Graphen gibt. Lemma 104 (Erdo˝ s 1959) Zu jedem k gibt es einen dreiecksfreien Graphen mit k 4 Knoten und chromatischer Zahl mindestens k. Beweis. Betrachte G ∈R G(n, p), d.h. einen Graph, der zuf¨allig aus der Menge aller Graphen auf n Knoten gew¨ahlt wird, wobei ein Graph mit m Kanten die Wahrscheinlichkeit p m (1 − n p)( 2 )−m hat. Setze 1 und x := n2/3 · (ln n)3 p := 2/3 n · ln n Dann gilt   n n3 3 ·p E[#Dreiecke] = · p3 ≤ 6 3


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

99

Mit der Markoff-Ungleichung P r[X > α] ≤ α1 E[X] f¨ur eine Zufallsvariable X ergibt sich daraus: 2 2 n3 3 n2 1 1 P r[#Dreiecke > ] ≤ ·p = · · = o(1) n n 6 3 n2 (ln n)3 Entsprechend ergibt sich   x n E[#stabile Mengen der Gr¨oßex] = · (1 − p)(2 ) x und somit   x x x2 n 2/3 4 2/3 5 P r[α ≥ x] ≤ · (1 − p)(2 ) ≤ nx e−p(2 ) ≤ nx e−p 3 = en (ln n) −n (ln n) = o(1) x W¨ahle n so groß, dass beide Wahrscheinlichkeiten kleiner 1/2 sind. Dann gibt es Graphen mit n Knoten der weniger als n2 Dreiecke enth¨alt und f¨ur den α ≤ n2/3 · (ln n)3 gilt. Entferne aus diesem Graphen maximal n2 viele Knoten, um alle Dreiecke zu zerst¨oren. Es bleibt ein Graph mit mindestens n2 vielen Knoten, dessen chromatische Zahl mindestens n/2 n/2 n1/3 ≥ 2/3 ≥ n1/4 = 3 3 α 2 · (ln n) n · (ln n) ist.

t u

7.5 Nichtapproximierbarkeit der chromatischen Zahl auf 4/3 Wie wir gesehen haben, erreicht der Greedy-Algorithmus nur eine Approximationsg¨ute von O(n) f¨ur das F¨arbungsproblem. Wir wollen nun im Folgenden untersuchen, ob es bessere Approximationsalgorithmen gibt. Unmittelbar aus Satz 99 ergibt sich Korollar 105 Falls P 6= N P gibt es keinen polynomiellen Algorithmus, der 3-f a¨ rbbare Graphen mit 3 Farben f¨arbt. Beweis. Angenommen es gibt einen solchen Algorithmus A, dessen Laufzeit durch ein Polynom p beschr¨ankt ist. Dann kann A dazu genutzt werden, um zu entscheiden, ob ein Graph G 3-f¨arbbar ist, indem A auf G angewandt wird und nach Laufzeit p(|G|) + 1 abgebrochen wird. Hat A eine zul¨assige 3-F¨arbung gefunden, so ist G 3-f¨arbbar, ansonsten nicht. t u

Als weitere Konsequenz aus Satz 99 erhalten wir ein Nichtapproximierbarkeitsresultat f¨ur die chromatische Zahl eines Graphen.


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

100

Lemma 106 Falls P 6= N P so gibt es keinen polynomiellen Algorithmus mit Approximationsg¨ute kleiner 4/3 f¨ur die chromatische Zahl. Beweis. Angenommen, es gibt doch einen polynomiellen Approximationsalgorithmus f¨ur die chromatische Zahl von Graphen mit Approximationsg¨ute kleiner 4/3. Dann k¨onnte dieser Algorithmus dazu verwendet werden, in polynomieller Zeit zu entscheiden, ob ein gegebener Graph 3-f¨arbbar ist, da er nur f¨ur 3-f¨arbbare Graphen einen Wert kleiner als 4 zur¨uckliefert. t u

7.6 Approximationsalgorithmen fur ¨ die chromatische Zahl Jeder Graph G kann offensichtlich mit |G| = n vielen Farben zul¨assig gef¨arbt werden, so dass man trivialerweise einen Approximationsalgorithmus mit Approximationsg¨ute n erh¨alt. Diese Approximationsg¨ute ist jedoch sehr weit von der unteren Schranke aus Lemma 106 entfernt, und wir wollen im Folgenden Approximationsalgorithmen f¨ur die chromatische Zahl kennenlernen, die eine bessere Approximationsg¨ute haben. Proposition 107 F¨ur beliebig große Konstanten C la¨ sst sich die chromatische Zahl in linearer Zeit auf einen Faktor n/C approximieren. Beweis. Partitioniere die Knotenmenge eines gegebenen Graphen G in St¨ucke der Gr¨oße C. Jeder von einem solchen St¨uck induzierte Graph kann in konstanter Zeit mit h¨ochstens χ(G) Farben gef¨arbt werden. Somit gilt:

RA ≤

χ(G) · Cn n = . χ(G) C

Die Laufzeit dieses Algorithmus betr¨agt O(n + m).

t u

Wir hatten oben bereits gesehen, dass der Greedy-Algorithmus lediglich eine Approximationsg¨ute von O(n) erreicht. Johnson konnte jedoch 1974 zeigen, dass man mittels einer geeigneten anderen Greedy-Strategie eine Approximationsg¨ute von o(n) erreichen kann. Die Idee dieses Algorithmus besteht einfach darin, dass sukzessive mittels eines Greedy-Algorithmus maximal stabile Mengen gesucht werden und diese als Farbklassen der F¨arbung verwendet werden. Der Graph in Abbildung 7.6 zeigt ein Problem dieser Vorgehensweise auf: Die gr¨oßte stabile Menge in diesem Graphen hat Gr¨oße 3, jedoch f¨uhrt ihre Verwendung als Farbklasse einer F¨arbung dazu, dass man 4 Farben ben¨otigt, um den Graphen zu f¨arben, obwohl er chromatische Zahl 3 hat.


9. Februar 2006 PSfrag replacements Hougardy: Graphen und Algorithmen 1, WS2005/2006 Mi Mi+1 Ri Li 1 1 2i Li+1

101

Fi =Li Ri = Ri+1

Abbildung 58: Große stabile Mengen sind keine guten Farbklassen. Johnson Coloring (G) 1 2 3 4 5 6 7 8 9 10

k := 0 while G 6= ∅ do S := ∅ H := G while H 6= ∅ do S := S + x, wobei x Knoten minimalen Grades in H H := H − x − N (x) G := G − S k := k + 1 f¨arbe die Knoten in S mit Farbe k Abbildung 59: Der F¨arbungsalgorithmus von Johnson

Satz 108 (Johnson 1974) Der Algorithmus Johnson Coloring hat eine Approximationsg u¨ te von O( logn n ). Beweis. Sei G = (V, E) der Eingabegraph des Algorithmus und k := χ(G). Der Algorithmus findet offensichtlich immer eine F¨arbung mit maximal n Farben. Gilt k > n 1/4 so hat der Algorithmus somit eine Approximationsg¨ute von mindestens n/n 1/4 = n3/4 = O(n/ log n). Wir k¨onnen daher annehmen, dass k ≤ n1/4 ⇔

1 1 log n ≥ log k ⇔ log n − 2 log k ≥ log n 4 2

gilt. In einer optimalen F¨arbung von G hat mindestens eine Farbklasse mindestens die Gr¨oße n/k, also gilt δ(G) ≤ n − n/k. Sei S1 die erste Farbklasse, die der Algorithmus Johnson Coloring bestimmt. Erster Knoten in S1 sei x1 . Dieser hat Grad δ(G), also verbleiben mindestens n/k − 1 viele Knoten nach Entfernen von x1 ∪ N (x1 ) aus G und G − x1 − N (x1 ) ist ebenfalls k-f¨arbbar. Sodann wird x 2 aus diesen mindestens n/k −1 Knoten als Knoten minimalen Grades gew¨ahlt. Mindestens eine


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

102

Farbklasse in G − x1 − N (x1 ) enth¨alt mindestens (n/k − 1)/k viele Knoten, also verbleiben nach Entfernen von x2 ∪ N (x2 ) mindestens (

n n 1 − 1)/k − 1 = 2 − − 1 k k k

viele Knoten. Allgemein werden so lange Knoten in S 1 aufgenommen, wie 1 1 n − t−1 − . . . − − 1 > 0 t k k k ist. Es gilt nun t−1 X 1 − ( k1 )t 1 1 = 1 < 1 =2 ki 1− k 2 i=0

f¨ur k ≥ 2. Die Menge S1 enth¨alt also mindestens so viele Knoten, dass n k |S1 |

− 2 ≤ 0 ⇒ |S1 | ≥

log n − 1 log k

gilt. Analog sind die weiteren stabilen Mengen S 2 , S3 , . . . konstruiert. Bezeichne ni die Anzahl Knoten in G, die nach dem Entfernen der ersten i − 1 stabilen Mengen verbleiben, d.h. n i := √ |G − S1 − S2 − . . . − Si−1 | und es sei j der Index, der n1 > n2 > . . . > nj ≥ n > nj+1 erf¨ullt. Dann gilt f¨ur i = 1, . . . , j : |Si | ≥

log ni − 1 ≥ log k

1 2

log n − 1 log k

und damit

n≥

j X i=1

|Si | ≥ j ·

1 2

log n − 1 log n >j ·( − 1) log k 2 log k

Also erh¨alt man mit oben gemachter Annahme: j≤

2n log k 4n log k ≤ log n − 2 log k log n

Der Algorithmus Greedy Coloring benutzt somit maximal j + damit eine G¨ute von √ 4n log k n n + = O( ). k log n k log n

√ n viele Farben. Man erh¨alt


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

103

t u

Der beste bekannte Approximationsalgorithmus f¨ur das F¨arbungsproblem hat eine G¨ute von O(n

(log log n)2 ) (log n)3

und stammt von Halld´orsson aus dem Jahre 1993. Im Jahre 1996 konnte von Feige und Kilian, nach einigen Vorarbeiten anderer Autoren gezeigt werden, dass dieses Ergebnis im wesentlichen bestm¨oglich ist. Sie haben die untere Schranke in Lemma 106 auf n 1â&#x2C6;&#x2019; verbessert. Satz 109 (Feige, Kilian 1996) Gilt co â&#x2C6;&#x2019; RP 6= N P und ist A ein polynomieller Approximaâ&#x2C6;&#x17E; â&#x2030;Ľ n1â&#x2C6;&#x2019; . tionsalgorithmus f¨ur Ď&#x2021;, so gilt f¨ur alle  > 0: RA Somit kennt man heute im wesentlichen eine scharfe Schranke f¨ur die bestm¨ogliche Approximationsg¨ute des allgemeinen F¨arbungsproblems. Weiterhin offen ist jedoch die Frage, wie gut sich Graphen mit konstanter chromatischer Zahl f¨arben lassen. Hier wurde prototypisch insbesondere die Frage nach der F¨arbbarkeit 3-chromatischer Graphen untersucht. Der Algorithmus â&#x2C6;&#x161; aus Abbildung 60 erreicht z.B. eine G¨ute von O( n). Wigderson Coloring (G) 1 k := 0 â&#x2C6;&#x161; 2 while â&#x2C6;&#x192;x â&#x2C6;&#x2C6; G mit d(x) â&#x2030;Ľ n do 3 f¨arbe x â&#x2C6;Ş N (x) mit 3 Farben 4 G := G â&#x2C6;&#x2019; x â&#x2C6;&#x2019; N (x) 5 f¨arbe G mit â&#x2C6;&#x2020;(G) + 1 vielen Farben Abbildung 60: Der F¨arbungsalgorithmus von Wigderson f¨ur 3-f¨arbbare Graphen Lemma 110 (Wigderson 1983) Der Algorithmus Wigderson Coloring hat eine Approximatiâ&#x2C6;&#x161; onsg¨ute von O( n) f¨ur 3-f¨arbbare Graphen. â&#x2C6;&#x161; â&#x2C6;&#x161; Beweis. Da man maximal n mal einen Knoten vom Grad â&#x2030;Ľ n und seine Nachbarn entferâ&#x2C6;&#x161; nen kann, wird der erste Teil des Algorithmus maximal n mal durchlaufen. In ihm werden pro â&#x2C6;&#x161; Schritt jeweils maximal 3 Farben vergeben, also insgesamt h¨ochstens 3 n. Im zweiten Teil hat â&#x2C6;&#x161; jeder Knoten einen Grad < n und kann damit nach Brooks mit dem Greedy-Algorithmus mit â&#x2C6;&#x161; â&#x2C6;&#x161; n vielen Farben gef¨arbt werden. Insgesamt werden also maximal 4 n viele Farben ben¨otigt. t u

Der beste bekannte Approximationsalgorithmus f¨ur 3-f¨arbbare Graphen erreicht eine G¨ute von O(n3/14 poly log n) und wurde 1997 von Blum und Karger angegeben. Die beste untere


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

104

Schranke f¨ur die Approximationsg¨ute eines Algorithmus, der 3-f¨arbbare Graphen in polynomieller Zeit f¨arbt gibt das folgende Ergebnis wieder. Obere und untere Schranke liegen hier also noch sehr weit auseinander. Satz 111 (Khanna, Linial, Safra 1994) Falls P 6= N P ist so k o¨ nnen 3-f¨arbbare Graphen in polynomieller Zeit nicht mit 4 Farben gef a¨ rbt werden. Korollar 112 Falls P 6= N P so erreicht ein Approximationsalgorithmus A f u¨ r das F¨arbungsproblem auf 3-f¨arbbaren Graphen maximal eine Gu¨ te von 5/3 â&#x2C6;&#x2019;  f¨ur alle  > 0.

7.7 Der chromatische Index, Satz von Vizing Analog zur chromatischen Zahl eines Graphen definiert man den chromatischen Index: Eine zul¨assige k-Kantenf¨arbung eines Graphen G = (V, E) ist eine Abbildung f : E â&#x2020;&#x2019; {1, . . . , k}, so dass f (x) 6= f (y) = â&#x2C6;&#x2026; f¨ur je zwei inzidente Kanten in E gilt. Ein Graph heiĂ&#x;t kkantenf¨arbbar, wenn er eine zul¨assige k-Kantenf¨arbung besitzt. Der chromatische Index Ď&#x2021; 0 (G) ist das kleinste k, f¨ur das G eine k-Kantenf¨arbung besitzt. Unmittelbar aus der Definition des chromatischen Index ergibt sich, dass f¨ur jeden Graphen Ď&#x2021;0 (G) â&#x2030;Ľ â&#x2C6;&#x2020;(G) gilt. Andererseits liefert der Greedy-Algorithmus stets eine Kantenf¨arbung mit maximal 2â&#x2C6;&#x2020; â&#x2C6;&#x2019; 1 vielen Farben, da jede Kante mit maximal 2â&#x2C6;&#x2020; â&#x2C6;&#x2019; 2 vielen anderen Kanten inzident sind. Es zeigt sich nun, dass f¨ur bipartite Graphen der chromatische Index und der Maximalgrad u¨ bereinstimmen. Satz 113 (K¨onig 1916) Es sei G bipartit. Dann gilt Ď&#x2021; 0 (G) = â&#x2C6;&#x2020;(G). Beweis. Wir f¨uhren eine Induktion u¨ ber |E|. F¨ur |E| = 0 ist die Aussage offensichtlich wahr. Sei nun {x, y} beliebige Kante in G und die Kanten von G \ {{x, y}} mit â&#x2C6;&#x2020;(G) vielen Farben gef¨arbt. Da in G \ {{x, y}} die Knoten x und y jeweils maximal den Grad â&#x2C6;&#x2020;(G) â&#x2C6;&#x2019; 1 haben, gibt es dort mindestens jeweils eine Farbe f x bzw. fy , mit der keine der in x bzw. y inzidenten Kanten gef¨arbt ist. Lassen sich die Farben f x und fy so w¨ahlen, dass fx = fy gilt, so kann die Kante {x, y} mit dieser Farbe gef¨arbt werden. Ansonsten betrachte den von den Kanten mit Farben fx bzw. fy induzierten Graphen. Dieser hat Maximalgrad 2 und besteht somit aus geraden Kreisen und Pfaden. Betrachte nun einen Pfad P der in y mit einer Kante der Farbe f x beginnt. Dieser Pfad kann nicht in x enden, da er dies ansonsten aus Parit¨atsgr¨unden mit einer Kante der Farbe fx tun m¨usste. Dann aber kann man die Farben der Kanten in P vertauschen und erh¨alt eine neue zul¨assige Kantenf¨arbung von G \ {{x, y}}, in der an den Knoten x und y jeweils die Farbe fx nicht benutzt wird. Diese kann sodann der Kante {x, y} als Farbe gegeben


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

werden.

105

t u

Unmittelbar aus dem Beweis dieses Satzes ergibt sich, dass man in bipartiten Graphen eine optimale Kantenf¨arbung in polynomieller Zeit finden kann. Bei Verwendung eines n × n-Feldes, das pro Knoten und Farbe die Kante dieser Farbe angibt, die mit diesem Knoten inzident ist, erh¨alt man sogar Laufzeit O(nm). Korollar 114 In bipartiten Graphen kann eine optimale Kantenf a¨ rbung in O(nm) bestimmt werden. t u

Auch f¨ur allgemeine Graphen l¨asst sich die obere Schranke von 2∆ − 1 f¨ur den chromatischen Index noch wesentlich verbessern. Satz 115 (Vizing 1964) F¨ur jeden Graphen G gilt ∆(G) ≤ χ0 (G) ≤ ∆(G) + 1. Beweis. Es bleibt lediglich die obere Schranke zu zeigen. F¨ur f¨uhren Induktion nach |E|. F¨ur |E| = 0 gilt die Aussage offenbar. Sei {x, y} beliebige Kante in G und die Kanten von G \ {{x, y}} mit ∆(G) + 1 vielen Farben gef¨arbt. Wir sagen, dass eine Farbe an einem Knoten fehlt, falls keine mit diesem Knoten inzidente Kante diese Farbe hat. Da jeder Knoten maximal ∆ inzidente Kanten hat und insgesamt ∆ + 1 viele Farben zur Verf¨ugung stehen, fehlt also an jedem Knoten mindestens eine Farbe. Es sei f0 eine an x fehlende Farbe und f1 eine an y fehlende Farbe. Fehlt die Farbe f 1 an x, so kann die Kante {x, y} mit der Farbe f1 gef¨arbt werden. Ansonsten gibt es einen Knoten y 2 , so dass die Kante {x, y2 } mit f1 gef¨arbt ist. Es sei f2 eine an y2 fehlende Farbe. Falls f2 an x fehlt, so kann die Kante {x, y2 } mit der Farbe f2 und die Kante {x, y} mit f1 gef¨arbt werden, um eine zul¨assige Kantenf¨arbung von G zu erhalten. Iterativ k¨onnen wir auf diese Weise eine maximale Folge y = y 1 , y2 , y3 , . . . von Nachbarn von x definieren, so dass die Kante {x, y i } Farbe fi−1 hat f¨ur i > 1 und Farbe fi an Knoten yi fehlt. Unter einem Farbshift am Knoten yk verstehen wir die folgende Operation: F¨arbe Kante {x, y i } mit Farbe i f¨ur 1 ≤ i ≤ k −1 und entferne die Farbe von Kante {x, y k }. Diese Operation liefert eine zul¨assige Kantenf¨arbung des Graphen G \ {{x, y k }}. Falls die Folge der yi endlich ist, so fehlt am letzten Knoten der Folge, es sei dies y l eine Farbe, die auch an x fehlt. Durch einen Farbshift am Knoten y l erh¨alt man somit eine zul¨assige F¨arbung von G, indem man der Kante {x, y l } die Farbe gibt, die an x und yl fehlt.


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

106

Wir k¨onnen also annehmen, dass die Folge der y i unendlich lang ist. Dann gibt es einen kleinsten Index l, so dass fk = fl f¨ur ein k < l. Es sei P ein Pfad, der in y l startet und nur Kanten der Farben f0 und fk enth¨alt. Da die Farbe f0 an yl nach Annahme nicht fehlt, gibt es einen solchen Pfad. Falls der Pfad in x endet, so tut er dies mit einer Kante der Farbe f k , also mit der Kante {x, yk+1 }. F¨uhrt man einen Farbshift am Knoten y k+1 durch und vertauscht die Farben der Kanten in P , so erh¨alt man somit eine zul¨assige Kantenf¨arbung von G. Endet der Pfad P in dem Knoten yk , so f¨uhre man einen Farbshift an yk durch, vertausche die Farben der Kanten in P und f¨arbe die Kante {x, y k } mit Farbe f0 . In allen anderen F¨allen erh¨alt man eine zul¨assige F¨arbung der Kanten von G, indem man einen Farbshift an yl durchf¨uhrt, die Farben der Kanten des Pfades P vertauscht und Kante {x, y l } die Farbe f0 gibt. t u

Unmittelbar aus dem vorangegangenen Beweis ergibt sich, dass man f¨ur jeden Graphen G eine Kantenf¨arbung mit maximal ∆(G) + 1 vielen Farben in polynomieller Zeit berechnen kann. Bei Verwendung geeigneter Datenstrukturen erh¨alt man sogar: Korollar 116 Eine F¨arbung der Kanten eines Graphen G mit ∆(G) + 1 vielen Farben kann in O(nm) bestimmt werden. t u

Satz 115 ist offensichtlich bestm¨oglich, da z.B. der chromatische Index ungerader Kreise 3 betr¨agt. Somit liefert dieser Satz eine nichttriviale Einteilung der Menge aller Graphen in zwei Klassen, deren eine alle Graphen mit χ 0 (G) = ∆(G) und deren andere alle Graphen mit χ0 (G) = ∆(G) + 1 enth¨alt. Graphen aus ersterer Klasse bezeichnet man als class one Graphen, w¨ahrend die der anderen Klasse als class two Graphen bezeichnet werden. Zu entscheiden ob ein gegebener Graph class one oder class two ist, ist ein NP-schweres Problem. Dies gilt sogar f¨ur die Einschr¨ankung auf kubische Graphen. Satz 117 (Holyer 1981) Zu entscheiden, ob ein gegebener kubischer Graph class one ist, ist ein NP-schweres Problem. t u

Aus einem Ergebnis von Erd˝os und Wilson folgt, dass fast alle Graphen class one sind, d.h. der Quotient der Anzahl class one Graphen auf n Knoten dividiert durch die Anzahl aller Graphen auf n Knoten konvergiert gegen 1 f¨ur n → ∞.


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

107

7.8 Perfekte Graphen, triangulierte Graphen Ein Graph G heißt perfekt, falls ω(H) = χ(H) f¨ur alle induzierten Teilraphen H ⊆ G gilt. Ein einfaches Beispiel perfekter Graphen stellen die bipartiten Graphen dar. Diese sind offensichtlich perfekt, da ω(H) = χ(H) = 2 f¨ur alle induzierten Teilgraphen H eines bipartiten Graphen gilt, es sei denn er enth¨alt keine Kante. Dann gilt ω(H) = χ(H) = 1. Bei bipartiten Graphen wissen wir bereits, dass sich ω, χ und α in polynomieller Zeit berechnen lassen. Genauer lassen sich ω und χ sogar in konstanter Zeit berechnen, da nur getestet werden muss, ob der Graph mindestens eine Kante enth¨alt. Zur Berechnung von α ist ein gr¨oßtes √ Matching in einem bipartiten Graphen zu berechnen, die Laufzeit betr¨agt daher O( nm). Wir wollen nun ein weiteres Beispiel perfekter Graphen kennenlernen, die sogenannten triangulierten Graphen. Ein Graph heißt trianguliert wenn alle induzierten Kreise in dem Graphen Dreiecke sind. Wir wollen nun zun¨achst zeigen, dass triangulierte Graphen perfekt sind. Dazu ben¨otigen wir das folgende Lemma. Satz 118 (Dirac 1961) Ein Graph ist genau dann trianguliert, wenn jede inklusionsminimale trennende Knotenmenge eine Clique induziert. Beweis. Wir zeigen zun¨achst, dass in einem triangulierten Graph G jede inklusionsminimale trennende Knotenmenge eine Clique induziert. Sei S eine inklusionsminimale trennende Knotenmenge in G mit |S| ≥ 2. Dann gibt es mindestens zwei Komponenten H 1 und H2 in G \ S. Wegen der Minimalit¨at von S hat jeder Knoten aus S mindestens einen Nachbarn in jedem H i . Seien u und v zwei beliebige Knoten in S. Da u und v jeweils Nachbarn in jedem H i haben, gibt es k¨urzeste Pfade Pi von u u¨ ber Hi nach v. Da diese Pfade mindestens L¨ange 2 haben ergeben sie zusammen einen Kreis der L¨ange mindestens 4. Daher muss {u, v} eine Kante in G sein, da ansonsten dies ein induzierter Kreis w¨are. Da u und v beliebig gew¨ahlt wurden zeigt dies, dass S eine Clique sein muss. Sei nun umgekehrt G ein Graph, in dem jede inklusionsminimale trennende Knotenmenge eine Clique induziert. Sei C ein Kreis in G der L¨ange mindestens 4. Zu zeigen ist dann, dass C nicht induziert ist. Seien u und v zwei Knoten aus C, die auf C nicht benachbart sind. Ist {u, v} ∈ E(G) so ist C nicht induziert. Ansonsten gibt es eine inklusionsminimale trennende Knotenmenge S, die u und v trennt. Die Menge S enth¨alt mindestens einen Knoten von jedem der beiden Kreispfade von u nach v. Da S eine Clique ist, sind diese beiden Knoten adjazent, und C ist somit nicht induziert. t u

Wir k¨onnen nun zeigen, dass triangulierte Graphen ein weiteres Beispiel f¨ur ein Element aus der Klasse der perfekten Graphen darstellen.


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

108

Satz 119 (Berge 1961) Triangulierte Graphen sind perfekt. Beweis. Wir f¨uhren eine Induktion u¨ ber die Anzahl Knoten in G. Offensichtlich gilt die Aussage f¨ur alle Graphen mit maximal 4 Knoten. Sei G ein triangulierter Graph der keine Clique ist. Dann gibt es nach Lemma 118 eine inklusionsminimale trennende Knotenmenge S, die Clique ist. Es zerfalle G \ S in die Komponenten H 1 , H2 , . . .. Da der von Hi ∪ S induzierte Graph jeweils trianguliert ist, ist er nach Induktionsannahme auch perfekt. Somit ist auch G perfekt, da alle diese Graphen sich lediglich in der Clique S schneiden. t u

Um effiziente Algorithmen f¨ur triangulierte Graphen angeben zu k¨onnen, ben¨otigen wir zun¨achst die folgende Definition. Ein Knoten heißt simplizial , falls seine Nachbarschaft eine Clique ist. Lemma 120 (Dirac 1961) Jeder triangulierte Graph verschieden vom vollst a¨ ndigen Graphen enth¨alt zwei nicht adjazente simpliziale Knoten. Beweis. Wir f¨uhren eine Induktion u¨ ber die Anzahl der Knoten des Graphen. Sei G ein triangulierter Graph, der nicht vollst¨andig ist. Dann enth¨alt G zwei nicht adjazente Knoten u und v. Sei S eine inklusionsminimale trennende Knotenmenge in G, die u und v trennt. Seien H 1 und H2 Komponenten in G \ S. Dann sind die von H i ∪ S induzierten Graphen trianguliert und enthalten daher nicht adjazente simpliziale Knoten oder sind Cliquen. In jedem Fall gibt es einen simplizialen Knoten in Hi , da S nach Satz 118 eine Clique ist. Diese beiden Knoten sind dann nicht adjazente simpliziale Knoten in G. t u

Korollar 121 In einem triangulierten Graphen kann man eine gr o¨ ßte Clique in polynomieller Zeit berechnen. t u

Man kann sie sogar in linearer Zeit berechnen, wenn man sogenannte perfekte Eliminationsschemata benutzt.

7.9 Der Perfekte Graphen Satz Perfekte Graphen sind insbesondere aus algorithmischer Sicht von großem Interesse. So konnten Gr¨otschel, Lov´asz und Schrijver 1981 zeigen, dass f¨ur diese Klasse von Graphen eine Reihe im allgemeinen NP-schwerer Probleme polynomiell l¨osbar sind. Allerdings beruhen ihre Algorithmen auf der Ellipsoidmethode. Direkte kombinatorische Algorithmen sind bis heute nicht bekannt.


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

109

Satz 122 (Gr¨otschel, Lov´asz, Schrijver 1981) F¨ur perfekte Graphen lassen sich χ, ω und α in polynomieller Zeit berechnen. t u

Im Jahre 1960 hat Berge vermutet, dass ein Graph genau dann perfekt ist, wenn er weder einen ungeraden Kreis der L¨ange mindestens 5 noch das Komplement eines solchen Kreises als induzierten Teilgraphen enth¨alt. Diese Vermutung ist als die starke perfekte Graphen Vermutung bekannt geworden. Sie war u¨ ber 40 Jahre offen, bis sie 2004 von Chudnovsky, Robertson, Seymour und Thomas bewiesen werden konnte. Satz 123 (Der Starke Perfekte Graphen Satz) Ein Graph ist genau dann perfekt, wenn er weder einen ungeraden Kreis der La¨ nge mindestens 5 noch das Komplement eines solchen Kreises als induzierten Teilgraphen enth a¨ lt. t u

Lange offen war zudem auch die Frage, ob man in polynomieller Zeit von einem gegebenen Graphen entscheiden kann, ob dieser perfekt ist. 2005 haben Chudnovsky, Cornujols, Liu, Seymour und Vuscovic einen polynomiellen Algorithmus zum Erkennen perfekter Graphen angegeben. Zusammen mit der starken perfekte Graphen Vermutung hat Berge auch eine schw¨achere Vermutung aufgestellt, die im Jahre 1972 von Lov´asz bewiesen wurde und als der Perfekte Graphen Satz bezeichnet wird. Satz 124 (Lov´asz 1972) Ein Graph ist genau dann perfekt, wenn sein Komplement perfekt ist. Zum Beweis dieses Satzes ben¨otigen wir den Begriff des minimal imperfekten Graphen. Dies ist ein Graph, der selber nicht perfekt ist, dessen echte induzierten Teilgraphen aber alle perfekt sind. Ein Beispiel f¨ur solche Graphen stellen die ungeraden Kreise der L¨ange mindestens 5 dar. Diese sind nicht perfekt, da f¨ur sie ω = 2 und χ = 3 gilt. Sobald man jedoch mindestens einen Knoten entfernt, erh¨alt man einen bipartiten Graphen, der perfekt ist. Mit Hilfe des Begriffes des minimal imperfekten Graphen l¨asst sich der starke Perfekte Graphen Satz wie folgt a¨ quivalent formulieren: Die einzigen minimal imperfekten Graphen sind die ungeraden Kreise der L a¨ nge mindestens 5 und deren Komplemente. Zum Beweis von Satz 124 werden wir die folgende, st¨arkere Aussage u¨ ber minimal imperfekte Graphen beweisen.


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

110

Satz 125 (Lov´asz 1972) F¨ur einen minimal imperfekten Graphen G gilt: |G| = α(G)·ω(G)+ 1. Bevor wir diesen Satz beweisen, wollen wir zun¨achst sehen, wie aus diesem Satz 124 folgt. Beweis von Satz 124. Es sei G ein perfekter Graph. Zu zeigen ist, dass auch G perfekt ist. Angenommen dies ist nicht der Fall. Dann enth¨alt G einen minimal imperfekten Graphen H mit |H| = α(H) · ω(H) + 1. F¨ur das Komplement H von H gilt: |H| = ω(H) · α(H) + 1. Der Graph H kann somit nicht mit ω(H) vielen Farben gef¨arbt werden, ist somit nicht perfekt. Da H ein induzierter Teilgraph von G ist, kann G somit auch nicht perfekt sein im Widerspruch zur Annahme. t u

Beweis von Satz 125. Es sei G ein minimal imperfekter Graph. Abk¨urzend nutzen wir die Bezeichnungen α := α(G), ω := ω(G) und n := |G|. Dann gilt: a) F¨ur jede stabile Menge S gilt: ω(G \ S) = ω. Beweis. Annahme dies gilt nicht, d.h. ω(G \ S) < ω. Da G \ S perfekt ist kann G \ S mit weniger als ω Farben gef¨arbt werden. Da S eine stabile Menge ist, kann der Graph G somit mit h¨ochstens ω Farben gef¨arbt werden. Dies ist ein Widerspruch, da G minimal imperfekt ist. b) F¨ur jeden Knoten x ∈ V (G) gilt χ(G − x) = ω = ω(G − x) Beweis. Nach a) gilt ω(G − x) = ω. Da G − x perfekt ist gilt χ(G − x) = ω(G − x). c) Seien X1 , X2 , . . . , Xω die Farbklassen einer ω-F¨arbung von G − v und K eine beliebige ω-Clique in G. Dann gilt entweder 1) v 6∈ K und K ∩ Xi 6= ∅ ∀i oder 2) v ∈ K und K ∩ Xi = ∅ f¨ur genau ein i. Sei S0 eine stabile Menge der Gr¨oße α in G. Seien S 1 , S2 , . . . , Sαω die Farbklassen von ωF¨arbungen von G − s f¨ur alle s ∈ S0 . (D.h. S1 , S2 , . . . , Sω sind die Farbklassen von G − s1 , Sω+1 , Sω+2 , . . . , S2ω sind die Farbklassen von G   − s2 usw.)Seien Q0 , Q1 , . . . , Qαω ω1 1 ... 1 .. ..  und J :=   Cliquen in G − Si , die nach a) existieren. Seien I :=  . . 1 ... 1 1 jeweils Matrizen der Dimension (αω + 1) × (αω + 1). Sei A die (αω + 1) × n Matrix, deren Zeilen die Inzidenzvektoren der Si sind. Sei B die n × (αω + 1) Matrix, deren Spalten die Inzidenzvektoren der Qi sind.


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

111

Sei K eine beliebige ω-Clique in G. Dann ist K zu genau einem S i disjunkt, denn es gilt: K ∩ S0 = ∅ ⇒ K ∩ Si 6= ∅∀i nach c)1) K ∩ S0 6= ∅ ⇒ K ∩ Si = ∅ f¨ur genau ein Si Also gilt AB = J − I, da Qi ∩ Si = ∅ nach Definition von Qi und Qi ∩ Sj 6= ∅ f¨ur i 6= j. Der Graph G − x ist perfekt und kann in ω stabile Mengen partitioniert werden. Also gilt n ≤ αω + 1. Andererseits zeigt die Gleichung AB = J − I, dass A vollen Zeilenrang hat. Die Matrix A ist (αω + 1) × n Matrix, also muss n ≥ αω + 1 gelten. t u


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

112

8 Planarit¨at (Vorlesung 27–29) Motivation: VLSI-Design, O(n)-Algorithmen f¨ur C LIQUE und I SOMORPHIE, χ ≤ 4

8.1 Grundlegende Definitionen Ein Graph G heißt planar (oder pl¨attbar), falls es eine Einbettung von G in die Ebene gibt, PSfrag replacements PSfrag replacements d.h. eine Darstellung von G in der Ebene, in der die Knoten von G durch Punkte und die Mi Linien (Jordankurven) repr¨asentiert Mwerden, Kanten von G durch so dass jede Linie genau ihre i Mi+1 zwei EndpunkteMmit hat und sich zwei verschiedene i+1 der Menge der Knotenpunkte gemeinsam R R i Kanten h¨ochstens ini einem gemeinsamen Knoten schneiden. Ein ebener Graph ist ein in die L L i i Ebene eingebetteter planarer Graph. 1 1 1 1 i 2 2i Fi Li+1 =Li Ri = Ri+1

Fi Li+1 =Li Ri = Ri+1

K4

K2,3

Abbildung 61: Einbettungen der Graphen K 4 und K2,3 Die Kanten eines ebenen Graphen zerlegen die Ebene in zusammenh¨angende Gebiete, von denen genau eines unbeschr¨ankt ist. Dieses wird a¨ ußeres Gebiet genannt. Man kann einen ebenen Graphen stets so in die Ebene einbetten, dass ein vorgegebenes Gebiet zum a¨ ußeren wird. Der Rand eines Gebietes sind alle die Kanten, die im Abschluss des Gebietes liegen.

¨ 8.2 Aquivalenz von Einbettungen, Satz von Whitney Offensichtlich gibt es im Allgemeinen viele verschiedene M¨oglichkeiten, einen planaren Graphen in die Ebene einzubetten. Auf der Menge aller dieser Einbettungen definiert man wie folgt ¨ eine Aquivalenzrelation. Es seien G0 = (V, E, R0 ) und G1 = (V, E, R1 ) zwei Einbettungen eines planaren Graphen G. Dabei bezeichnet Ri die Gebiete des ebenen Graphen Gi . Die Einbettungen G0 und G1 heißen a¨ quivalent, falls es einen Isomorphismus ϕ von G 0 nach G1 gibt, der R¨ander von Gebieten aus R0 auf R¨ander von Gebieten aus R1 abbildet. In Abbildung 62 sind jeweils zwei nicht¨aquivalente Einbettungen zweier Graphen gezeigt. Dass die beiden abgebildeten Einbettungen jeweils nicht a¨ quivalent sind, erkennt man leicht dar-


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

113

PSfrag replacements PSfrag replacements PSfrag replacements PSfrag replacements Mi Mi Mi Mi Mi+1 Mi+1 Mi+1 Mi+1 Ri das durch f¨unf Kanten Ri i linke Einbettung R i an, dassRdie jeweils ein Gebiet besitzt, berandet ist, L L L L i i i w¨ahrend dies bei der rechten Einbettung nicht der Falliist. 1 1 1 1 1 1 1 1 i i i 2 2 2 2i Li+1

Fi =Li Ri = Ri+1 1a)

Li+1

Fi =Li Ri = Ri+1

Li+1

Fi =Li Ri = Ri+1

1b)

2a)

Li+1

Fi =Li Ri = Ri+1 2b)

Abbildung 62: Jeweils nicht¨aquivalente Einbettungen zweier Graphen ¨ Mit den Gebieten R eines ebenen Graphen G = (V, E) ist also bis auf Aquivalenz die Einbettung gegeben. Wir bezeichnen die Einbettung von G daher mit G = (V, E, R). Der nachfolgende Satz von Whitney zeigt nun, dass man f¨ur Graphen mit gen¨ugendem Zusammenhang nur noch eine M¨oglichkeit hat, diese einzubetten (d.h. alle m¨oglichen Einbettungen sind a¨ quivalent). Satz 126 (Whitney 1932) Ein 3-fach zusammenh a¨ ngender planarer Graph kann nur auf eine Weise in die Ebene eingebettet werden (d.h. je zwei Einbettungen sind a¨ quivalent). t u

8.3 Die Eulersche Formel, maximal planare Graphen, Nichtplanarita¨ t von K5 und K3,3 Die Eulersche Formel stellt einen einfachen Zusammenhang zwischen der Anzahl der Knoten, Kanten und Gebiete eines ebenen, zusammenh¨angenden Graphen dar. Aus dieser Formel lassen sich einige einfache notwendige Kriterien f¨ur die Planarit¨at eines Graphen herleiten, mit Hilfe derer man zum Beispiel nachweisen kann, dass der K 5 und der K3,3 nicht planar sind. Satz 127 (Euler 1750) Es sei G = (V, E, R) ein ebener, zusammenh a¨ ngender Graph. Dann gilt: |V | − |E| + |R| = 2 Beweis. (Durch Induktion u¨ ber |E|) Die F¨alle |E| = 0 und |E| = 1 sind offensichtlich trivial. Sei nun die Behauptung wahr f¨ur alle Graphen mit weniger als |E| Kanten und sei G ein Graph mit |E| Kanten. Wir betrachten zun¨achst den Fall, dass G ein Baum ist. Dann besitzt G einen


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

114

Knoten v vom Grad 1. Der zusammenh¨angende Graph G − v besitzt |V | − 1 Knoten, |E| − 1 Kanten und |R| Gebiete, so dass nach der Induktionsannahme (|V | − 1) − (|E| − 1) + |R| = 2 gilt. Daraus ergibt sich aber sofort die Behauptung. Wir betrachten nun den Fall, dass G kein Baum ist. Enfernt man nun eine Kante aus einem Kreis von G, so hat der verbleibende Graph |V | Knoten, |E| − 1 Kanten und |R| − 1 Gebiete, so dass nach der Induktionsvoraussetzung |V | − (|E| − 1) + (|R| − 1) = 2 gilt. Hieraus folgt wiederum sofort die Behauptung. t u

Aus der Eulerschen Formel lassen sich eine Reihe von Korollaren ableiten. Wir wollen zun¨achst zeigen, dass ein planarer Graph nur linear viele Kanten besitzen kann. Korollar 128 Ist G ein planarer Graph mit mindestens drei Knoten, so gilt |E| ≤ 3 · |V | − 6. Beweis. Es sei G ein planarer Graph, der in die Ebene eingebettet ist. Dann wird jedes Gebiet von G von mindestens drei Kanten berandet und jede Kante geh¨ort zu h¨ochstens zwei Gebieten, so dass also gilt: 3 · |R| ≤ 2 · |E|. Aus der Eulerschen Formel folgt sodann: |V | − |E| +

2 · |E| ≥ 2 ⇔ 3 · |V | − 6 ≥ |E|. 3

t u

Ein planarer Graph G heißt maximal planar, falls keine Kante zu G hinzugef¨ugt werden kann, ohne dass die Planarit¨at verloren geht. In einem maximal planaren Graphen ist der Rand eines jeden Gebietes offensichtlich ein Dreieck. Besitzt ein planarer Graph eine Einbettung, in der jedes Gebiet (einschließlich des a¨ ußeren) ein Dreieck ist, so nennt man diesen Graphen Triangulation. Es gilt nun: Proposition 129 F¨ur einen planaren Graphen sind a¨ quivalent: (i) G ist maximal planar (ii) G ist Triangulation (iii) G enth¨alt 3|V | − 6 Kanten. Beweis. i) ⇒ ii) haben wir bereits oben eingesehen. ii) ⇒ iii) folgt unmittelbar aus dem Beweis von Korollar 128, da f¨ur eine Triangulation in den Ungleichungen Gleichheit gilt. iii) ⇒ i) folgt aus Korollar 128. t u


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

115

Korollar 130 Der K5 ist nicht planar. Beweis. Es gilt |E(K5 )| = Korollar 128 nicht planar ist.

5 2

= 10 > 9 = 3 · 5 − 6 = 3 · |V (K5 )| − 6, womit der K5 nach t u

Korollar 131 Es sei G ein planarer Graph mit mindestens vier Knoten. Dann gibt es mindestens vier Knoten in G vom Grad kleiner 6. Beweis. Offensichtlich reicht es den Beweis f¨ur maximal planare Graphen zu f¨uhren. Wir nehmen nun an, dass wir einen maximal planaren Graphen mit mindestens f¨unf Knoten h¨atten, in dem h¨ochstens drei Knoten einen Grad kleiner als 6 haben. Da in einem solchen Graphen jeder Knoten mindestens den Grad drei hat, gilt: |E| =

1 X 1 9 · deg(v) ≥ ((|V | − 3) · 6 + 3 · 3) = 3 · |V | − 2 2 2 v∈V (G)

was einen Widerspruch zu Korollar 128 darstellt.

t u

Abbildung 63a) zeigt, dass Korollar 131 bestm¨oglich ist, da der dort abgebildete Graph nur vier Knoten enth¨alt, die einen Grad kleiner als 6 haben. In Abbildung 63b) und 63c) ist gezeigt, wie man ausgehend von dem Graphen aus Abbildung 63a) eine unendliche Familie solcher Graphen konstruieren kann: Ersetzt man ein Sechseck, das in der Nachbarschaft eines Knotens liegt und in dem genau zwei gegen¨uberliegende Knoten den Grad 3 haben durch den in Abbildung 63c) gezeigten Graph, so erh¨alt man einen neuen Graph, der wiederum ein Sechseck enth¨alt, in dem zwei gegen¨uberliegende Knoten Grad 3 haben und alle anderen Knoten haben Grad 6. Unmittelbar aus Korollar 131 folgt, dass ein planarer Graph h¨ochstens 5-fach zusammenh¨angend sein kann. Das Ikosaeder liefert ein Beispiel f¨ur einen 5-fach zusammenh¨angenden planaren Graphen. F¨ur den Fall eines dreiecksfreien Graphen k¨onnen wir die Aussage von Korollar 128 noch versch¨arfen. Korollar 132 Es sei G ein dreiecksfreier, planarer und zusammenh a¨ ngender Graph. Dann gilt: |E| ≤ 2 · |V | − 4.


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

PSfrag replacements

PSfrag replacements

PSfrag replacements

Mi Mi+1 Ri Li 1 1 2i

Mi Mi+1 Ri Li 1 1 2i

Mi Mi+1 Ri Li 1 1 2i

Li+1

Fi =Li Ri = Ri+1

Li+1

Fi =Li Ri = Ri+1

a)

Li+1

116

Fi =Li Ri = Ri+1

b)

c)

Abbildung 63: Konstruktion planarer Graphen mit nur 4 Knoten vom Grad kleiner 6 Beweis. In einem dreiecksfreien Graphen ist der Rand eines jeden Gebietes mindestens ein Viereck. Somit gilt: 4 · |R| ≤ 2 · |E|. Damit erhalten wir aus der Eulerschen Formel: 1 |V | − |E| + |E| ≥ 2 ⇔ |E| ≤ 2 · |V | − 4. 2

2

Korollar 133 Der K3,3 ist nicht planar. Beweis. Es gilt |E(K3,3 )| = 9 > 8 = 2 · 6 − 4 = 2 · |V (K3,3 )| − 4, womit der K3,3 nach Korollar 132 nicht planar ist. t u

8.4 4-Farbensatz, 5-Farbensatz, Kempeketten Die 4-Farbenvermutung wurde im Jahre 1852 von Guthrie aufgestellt und konnte erst u¨ ber 100 Jahre sp¨ater mittels Computerhilfe bewiesen werden. Robertson, Seymour, Sanders und Thomas haben 1994 einen vereinfachten Beweis angegeben, der allerdings immer noch sehr aufw¨andig ist und nicht ohne Computerhilfe auskommt. Satz 134 (Appel, Haken, Koch 1976) Jeder planare Graph ist 4-f a¨ rbbar.

t u

Wir beweisen hier lediglich die folgende schw¨achere Aussage, die auch als 5-Farbensatz bekannt ist. Satz 135 (Kempe 1879; Heawood 1890) Jeder planare Graph ist 5-f a¨ rbbar.


PSfrag replacements Mi Hougardy: Graphen und Algorithmen 1, WS2005/2006 Mi+1

9. Februar 2006

117

Ri Li 1 1 PSfrag Beweis. replacements Wir f¨uhren eine Induktion u¨ ber n = |V | durch. F¨ 2ui r n = 1 gilt die Aussage offensichtlich. SeiM Gi = (V, E, R) ein ebener Graph mit n Knoten. Fi Nach Korollar 131 gibt es in G einen Knoten 5-F¨a=L rbung von G − v, die nach InduktiMi+1 v vom Grad maximal 5. Sei f eineLi+1 i onsannahme existiert. Falls nicht alle 5 Farben in der F¨arbung in der Nachbarschaft von v Ri Ri = fRi+1 Loinnen wir f zu einer 5-F¨arbung von G erweitern. 3 Wir k¨onnen daher annehmen, auftreten, so k¨ 1 v Grad 5 in G hat und ohne Einschr¨ankung seien die Knoten x . . . x mit dass der Knoten 1 5 3 1 f (xi ) = i im Uhrzeigersinn die Nachbarn von v in der Einbettung von G. Mit G bezeichnen ij 3 2i 1 wir den durch die Knoten mit Farben i oder j induzierten Teilgraphen von G. Betrachte nun Fi C von G , die den Knoten x enth¨alt. Falls 1 die Komponente diese nicht auch den Knoten x 1 13 3 Li+1 =Li enthalt, so vertausche die Farben 3 und 1 in C. Damit erh¨alt 1man eine neue zul¨assige F¨arbung Ri = Ri+1 2 von G − v, in der die Farbe 3 in der Nachbarschaft von v fehlt. 4 3 3 5 1 1 1 1 5 3 v v 2 2 3

4

4 3

3

1 a)

b)

Abbildung 64: Kempekettenargument f¨ur χ = 5 (Abbildung a)) und ein Beispiel, warum es f¨ur χ = 4 nicht mehr anwendbar ist. Falls die Komponente C auch den Knoten x 1 enth¨alt, so betrachte den Graphen G 24 . Dieser kann wegen der Planarit¨at keine Komponente enthalten, die sowohl den Knoten x 2 , als auch den Knoten x4 enth¨alt. Vertauscht man nun die Farben 2 und 4 in der Komponente von G 24 , die den Knoten x4 enth¨alt, so kommt die Farbe 4 in der Nachbarschaft von v nicht mehr vor. t u

W¨ahrend bei beliebigen Graphen das Fehlen von Dreiecken keinerlei R¨uckschl¨usse auf die chromatische Zahl zul¨asst, gibt es f¨ur planare Graphen eine entsprechende Aussage, die wir hier ohne Beweis angeben. Satz 136 (Gr¨otzsch 1958) Jeder dreiecksfreie planare Graph ist 3-f a¨ rbbar.

t u


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

118

PSfrag replacements Der Beweis des 5-Farbensatzes liefert M unmittelbar einen O(n 2 )-Algorithmus zum 5-F¨arben i planarer Graphen. Wir wollen im Folgenden Mi+1 einen weiteren Beweis des 5-Farbensatzes vorstellen der von Thomassen stammt undReinen O(n) Algorithmus f¨ur das 5-F¨arben planarer i Graphen liefert. Wir ben¨otigen hierzu denLiBegriff der listchromatischen Zahl. 1 Die listchromatische Zahl χl eines Graphen 1 G = (V, E) ist die kleinste Zahl k, so dass f¨ur jede  N i f : V → N existiert mit f (i) ∈ L(i). Abbildung L : V → k eine zul¨assige F¨2arbung

Offensichtlich gilt χl (G) ≥ χ(G) f¨ur alleFGraphen G, da die chromatische Zahl den Spezialfall i L =L darstellt, dass die Funktion L konstant ist. i+1 i Abbildung 65 zeigt ein Beispiel eines bipartiten Graphen dessen listchromatische Zahl 3 R ist.i = Ri+1 {1, 2} {1, 2} {1, 3}

{1, 3}

{2, 3}

{2, 3}

Abbildung 65: Beispiel eines Graphen mit χ l = 3 und χ = 2. Analog zu Proposition 100 zeigt man die Beschr¨ankung der listchromatischen Zahl durch den Maximalgrad. Proposition 137 F¨ur jeden Graphen G gilt χl (G) ≤ ∆(G) + 1.

t u

Auch der Satz von Brooks (Satz 102) l¨asst sich auf die listchromatische Zahl u¨ bertragen, allerdings nicht mit gleichem Beweis. Zwar ist jeder planare Graph 4-f¨arbbar, es gibt jedoch planare Graphen deren listchromatische Zahl 5 ist. In Abbildung 66 ist die Konstruktion eines solchen Graphen angegeben. Ausgehend von dem Graphen in Abbildung 66a) setzt man in jedes der 12 Dreiecke den Graphen aus Abbildung 66b) ein. Um zu sehen, dass der so erhaltene Graph χl > 4 hat benutzt man die folgenden Listen: Alle Knoten des Graphen in Abbildung 66a) erhalten die Liste {2, 3, 4, 5}. Die zus¨atzlich eingef¨ugten Knoten erhalten die in der Abbildung 66a) angegebenen Listen. Jede F¨arbung des Graphen, die nur Farben aus den angegebenen Listen benutzt, muss dann in dem Teilgraphen aus Abbildung 66a) ein Dreieck enthalten, dessen Knoten wie in Abbildung 66b) gef¨arbt sind. Dann ist es leicht zu sehen, dass die Knoten des Graphen in Abbildung 66b) nicht zul¨assig gef¨arbt werden k¨onnen. Thomassen hat in Erweiterung von Satz 135 mittels eines eleganten Beweises gezeigt, dass auch die listchromatische Zahl von planaren Graphen maximal 5 ist. Satz 138 (Thomassen 1994) Die listchromatische Zahl eines planaren Graphen ist maximal 5.


Mi+1 Ri Li 1 1 2i 9. Februar 2006 Fi Li+1 =Li Ri = Ri+1 5

Mi+1 Ri Li 1 1 2i Hougardy: Graphen undFAlgorithmen 1, WS2005/2006 i Li+1 =Li Ri = Ri+1

2 3

119

5

1235 1235 1345 1345 1345

1345

1235

1235

1234

1234

1234 1234 2345

2 a)

2345

3

b)

Abbildung 66: Konstruktion eines planaren Graphen mit χ l = 5. Beweis. Wir beweisen diesen Satz durch Nachweis der folgenden, st¨arkeren Aussage, die wir durch Induktion u¨ ber n beweisen: (*) Sei G ein planarer Graph der aus einem Kreis C = v 1 , v2 , . . . , vr , v1 und Knoten und Kanten innerhalb von C besteht, so dass das Innere von C trianguliert ist. Seien v 1 und v2 mit Farben 1 und 2 gef¨arbt und L(v) eine Liste von mindestens 3 Farben falls v ∈ C − {v1 , v2 } und 5 Farben falls v ∈ G − C. Dann l¨asst sich die F¨arbung von v 1 und v2 zu einer Listenf¨arbung von G erweitern. Offensichtlich folgt aus (*) sofort die Behauptung des Satzes, so dass wir nur (*) durch Induktion u¨ ber n beweisen m¨ussen. Gilt r = 3 und G = C so ist (*) offensichtlich wahr. Ansonsten sei v i vj eine Sehne von C mit 2 ≤ i ≤ j−2 ≤ r−1. Wendet man die Induktionsannahme auf den Kreis v 1 , . . . , vi , vj , . . . vr , v1 und sein Inneres und danach auf den Kreis v i , vi+1 , . . . , vj , vi so zeigt dies (*). Wir k¨onnen also annehmen, dass C keine Sehne besitzt. Seien v 1 , u1 , u2 , . . . , us , vr−1 die Nachbarn von vr im Uhrzeigersinn um vr . Da G nach Voraussetzung im Inneren von C trianguliert ist, muss P := v1 u1 , . . . , us vr−1 ein Pfad sein. Da C sehnenlos ist, ist C 0 := P ∪ (C − vr ) ein Kreis. Seien x, y verschiedene Farben in L(v r )\{1}. Setze L0 (ui ) := L(ui )\{x, y}, falls 1 ≤ i ≤ s und L0 (v) := L(v) falls v 6∈ {u1 , . . . , us }. Wende nun die Induktionsannahme auf C 0 an. Knoten vr kann sodann mit Farbe x oder y gef¨arbt werden, da außer dem Knoten v r−1 kein Knoten in der Nachbarschaft von v r die Farbe x oder y erhalten haben kann. t u

Korollar 139 Eine 5-(Listen)-Fa¨ rbung planarer Graphen kann in O(n) gefunden werden.

t u


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

120

8.5 Der Satz von Kuratowski Ein Graph H heißt Unterteilung eines Graphen G, falls H aus G durch sukzessives Einf¨ugen von Knoten auf Kanten entsteht. Unmittelbar aus Korollar 130 und Korollar 133 ergibt sich: Korollar 140 Ein planarer Graph enth a¨ lt keine Unterteilung des K3,3 oder des K5 .

t u

Das Ziel dieses Abschnittes ist der Beweis der Umkehrung dieser Aussage. Dazu ben¨otigen wir vorbereitend zwei Lemmata und den Begriff der Kantenkontraktion. Ist G = (V, E) ein beliebiger Graph und e = {x, y} ∈ E, so bezeichnet G/e denjenigen Graph, den man aus G erh¨alt, indem man einen neuen Knoten z zu G hinzuf¨ugt, der mit allen Nachbarn von x und y adjazent ist und anschließend die Knoten x und y entfernt. Lemma 141 Jeder 3-fach zusammenha¨ ngende Graph G = (V, E) mit |V | ≥ 5 enth a¨ lt eine Kante e ∈ E, so dass G/e 3-fach zusammenh a¨ ngend ist. Beweis. Angenommen die Behauptung ist falsch, d.h. f¨ur jede Kante e = {x, y} von G ist G/e nicht 3-fach zusammenh¨angend. Dann muss es in G einen Knoten z geben, so dass {x, y, z} eine trennende Knotenmenge ist. Da {x, y, z} eine minimal trennende Knotenmenge ist, muss es von jedem der drei Knoten jeweils mindestens eine Kante in jede Komponente von G − {x, y, z} geben. Es seien nun e = {x, y} und z so gew¨ahlt, dass die gr¨oßte Komponente H in G\{x, y, z} gr¨oßtm¨oglich ist. Nun w¨ahle man eine beliebige andere Komponente H 0 in G\{x, y, z}. Es sei e0 = {z, u} eine Kante, die z und einen Knoten u ∈ H 0 verbindet. Nun ist nach unserer Annahme G/e0 nicht 3-fach zusammenh¨angend, so dass G eine trennende Knotenmenge der Gestalt {z, u, v} besitzt. Der Knoten v muss dann in H 0 ∪ {x, y} liegen, da sonst bereits {z, v} eine trennende Knotenmenge in G bildet. Ist nun v in H 0 , so besitzt G\{z, u, v} eine Komponente, die H und {x, y} enth¨alt, was im Widerspruch zur Maximalit¨at von H steht. Ist v = x (oder v = y), so ist H ∪ {y} in einer Komponente von G − {z, u, v} enthalten, was wiederum einen Widerspruch zur Maximalit¨at von H darstellt. Somit war unsere Annahme, dass G/e f¨ur keine Kante e 3-fach zusammenh¨angend ist, falsch. t u

Lemma 142 Wenn G/e eine Unterteilung des K 5 oder des K3,3 enth¨alt, so enth¨alt auch G eine solche Unterteilung.


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

121

Beweis. Es sei e = (x, y) und z der durch Kontraktion der Kante e neu hervorgegangene Knoten in G/e. Wir bezeichnen mit S die Unterteilung des K 5 oder K3,3 in G/e. Jede Kante (z, v) in G/e hat mindestens eine der beiden Kanten (x, v) und (y, v) als Gegenst¨uck in G. Indem wir f¨ur jede Kante (z, v) uns eine der h¨ochstens zwei Kanten (x, v) und (y, v) in G w¨ahlen und ansonsten alle weiteren PSfrag Kanten replacements aus S hinzunehmen, erhalten wir zusammen mit der Kante e einen Teilgraphen in G, den wir mit T bezeichnen. Der Graph T /e ist nach Konstruktion gleich S und Mi enth¨alt somit eine Unterteilung des K 3,3 oder des K5 . Mi+1 Falls x oder y den Grad 1 oder R 2 iin T hat, so enth¨alt T eine Unterteilung von S. Also m¨ussen L x und y mindestens den Grad 3 ini T haben, d.h. S ist eine Unterteilung des K 5 . Dann enth¨alt aber T eine Unterteilung des K3,31 , wie Abbildung 67 zeigt. t u 1 2i Li+1

Fyi =Li Ri = Ri+1 x

Abbildung 67: Eine Unterteilung des K 3,3 Satz 143 (Kuratowski 1930) Ein Graph ist genau dann planar, wenn er keine Unterteilung des K3,3 oder K5 enth¨alt. Beweis. Nach Korollar 140 enth¨alt ein planarer Graph keine Unterteilung des K 3,3 oder des K5 . Es bleibt also nur die andere Richtung zu zeigen. Wir f¨uhren einen Beweis durch Induktion u¨ ber |V |. F¨ur |V | ≤ 5 ist die Behauptung offensichtlich richtig. Es habe also G mindestens 6 Knoten und enthalte weder eine Unterteilung des K 5 noch des K3,3 . Zu zeigen ist, dass G dann planar ist. Fall 1: G ist nicht 3-fach zusammenh a¨ ngend. Der Fall, dass G weniger als zweifach zusammenh¨angend ist, ist trivial, so dass wir annehmen k¨onnen: G ist 2-fach zusammenh¨angend. Dann besitzt G ein trennendes Knotenpaar (x, y). Sei H eine Komponente von G − {x, y}, und G 1 und G2 seien die von H + x + y bzw. G − H induzierten Graphen, wobei die Kante xy hinzugef¨ugt wird, sofern sie nicht schon in G existierte (siehe Abbildung 68). Dann enthalten die beiden so definierten Graphen jeweils weniger Knoten als G. Die Graphen G1 und G2 enthalten nun keine Unterteilung des K 5 oder K3,3 , da auch G keine solche Unterteilung enth¨alt. (Das Hinzuf¨ugen der Kante (x, y) kann keine Unterteilung in G 1 oder G2 erzeugen, da sonst G bereits eine solche enthielte.) Nach Induktionsvoraussetzung sind daher


i

i

Mi+1 Ri Li 1 1 i 9. Februar22006 Li+1

Mi+1 Ri Li 1 1 2i Algorithmen 1, WS2005/2006 Hougardy: Graphen und

Fi =Li Ri = Ri+1

Li+1

122

Fi =Li Ri = Ri+1

x

x

x

y

y

G G1 y

G2

G

G2 G1 Abbildung 68: Aufspaltung eines 2-fach zusammenh¨angenden Graphen PSfrag replacements Mi G1 und G2 planar. W¨ahlen wir nun eine Einbettung von G 1 und G2 , so dass die Kante (x, y) Mi+1 jeweils das a¨ ußere Gebiet berandet, so k¨onnen wir diese beiden Einbettungen zu einer EinbetRi tung von G zusammenf¨ugen, d.h. G ist planar. Li 1 PSfrag replacements 1 Fall 2: G ist 3-fach zusammenha¨ ngend. 2i Mi Nach Lemma 141 besitzt GM eine Kante e = (x, y), so dass G/e 3-fach zusammenh¨angend i+1 Fi ist. Es bezeichne z den durch Kontraktion der Kante e neu hervorgegangenen Knoten in G/e. Ri Li+1 =Li Nach Lemma 142 besitzt G/e keine und ist daher nach IndukLi Unterteilung des K 3,3 oder K R5i = Ri+1 PSfrag replacements tionsannahme planar. 1 x Mi Es sei C der Rand des Gebietes in1 dem 2-fach zusammenh¨angenden Graphen G/e − z, das den y 2i m¨ussen alle Nachbarn von x oder y in G auf dem Kreis C Mi+1 Punkt z im Inneren enth¨alt. Dann x1 Ri liegen. Fi x2 Li Li+1 =Li i C in zyklischer Reihenverschiedenen Nachbarn von x x auf 1Es seien x1 , x2 , . . . , xk die vonRy = Ri+1 xi+1 i 1folge und Pi der Teilpfad xi , . . . , xi+1 auf C, wobei xk+1 = x1 sei. xk x 2i Falls alle von x verschiedenen Nachbarn von y auf C in einem der P i enthalten sind, so l¨asst y x Einbettung von G erweitern (siehe Abbildung 69a)). Fi sich die Einbettung von G/e zuxeiner y 1 Li+1 =Li x2 xr xs v Ri = xi xr xs x2Ri+1 xs xi xi+1 xt xk x ...

...

1

x

x

y

x

y

y u

xk

xi+1

...

a)

xr xt b)

c)

Abbildung 69: Im Beweis des Satzes von Kuratowski auftretende Konfigurationen.


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

123

Wir k¨onnen daher annehmen, dass nicht alle von x verschiedenen Nachbarn von y auf C in einem Pi enthalten sind. Der Knoten y hat dann offensichtlich mindestens zwei Nachbarn auf C. Wir unterscheiden nun zwei F¨alle: α) Je zwei Nachbarn von y liegen in einem P i . Dann muss y genau drei Nachbarn in {x1 , . . . , xk } haben und der von C, x und y induzierte Teilgraph von G enth¨alt eine Unterteilung des K5 , wie Abbildung 69b) zeigt. β) Es gibt zwei Nachbarn u und v von y, die nicht gemeinsam in einem P i liegen. Dann m¨ussen diese beiden Knoten von Nachbarn x r und xs von x getrennt werden. Der Kreis C zusammen mit x und y enth¨alt dann eine Unterteilung des K 3,3 wie in Abbildung 69c) gezeigt. Damit haben wir in beiden F¨allen einen Widerspruch erhalten, d.h. also G ist planar.

t u

Unmittelbar aus der soeben bewiesenen Charakterisierung planarer Graphen durch verbotene Unterteilungen von K3,3 und K5 ergibt sich noch kein polynomieller Algorithmus zum Testen auf Planarit¨at. Folgt man jedoch dem Beweis dieses Satzes, so erh¨alt man daraus eine M¨oglichkeit, in O(n3 ) einen beliebigen Graphen auf Planarit¨at zu testen. Falls G 3-fach zusammenh¨angend ist kann man sogar zeigen, dass G eine konvexe Einbettung besitzt (d.h. alle Gebiete bis auf das Außengebiet sind konvex), in der zudem alle Kanten geradlinig sind. Korollar 144 Ist G 3-fach zusammenh a¨ ngend und planar, so besitzt G eine konvexe, geradlinige Einbettung. Beweis. Der Beweis erfolgt durch Induktion u¨ ber |V |. F¨ur |V | ≤ 5 ist die Aussage offensichtlich richtig. Sei nun |V | > 5. Wir haben beim Beweis des Satzes von Kuratowski gesehen, dass der Knoten y nur mit x und Knoten auf C, die in einem P i liegen, verbunden ist. Wir k¨onnen daher y in das Innere des von den Kanten (x, xi ), (x, xi+1 ) und Pi berandeten Gebietes legen und geradlinig mit allen seinen Nachbarn verbinden. Wir erhalten damit eine geradlinige konvexe Einbettung von G. Wir haben jetzt nur noch den Fall zu betrachten, dass C der Rand des (nicht konvexen) Außengebietes von G/e − z ist. In diesem Fall legen wir G/e − z einfach in einen Kreis, f¨uhren eine Inversion an diesem durch und erhalten so eine neue, wiederum konvexe Einbettung von


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

124

PSfrag replacements G/e − z, in der C nicht mehr derMRand des Außengebietes ist. t u i Mi+1 Ri Li zusammenh¨angend ist, gibt es nicht notwendigerweise Falls ein planarer Graph nicht 3-fach 1 Abbildung 70 demonstriert. eine konvexe Einbettung f¨ur ihn, wie 1 2i Fi Li+1 =Li Ri = Ri+1 Abbildung 70: Ein nicht konvex einbettbarer planarer Graph.

8.6 Graphen h¨oheren Geschlechts Wir wollen uns in diesem Abschnitt mit der Einbettbarkeit eines Graphen in beliebige geschlossene Fl¨achen besch¨aftigen. Insbesondere werden wir uns die Frage stellen, wie eine in einem gewissen Sinne minimale Fl¨ache aussieht, in die wir einen vorgegebenen Graphen gerade noch einbetten k¨onnen. Soreplacements ist es z.B. nicht m¨oglich den K 5 in die Kugeloberfl¨ache einzubetten, es PSfrag ist hingegen jedoch leicht m¨oglich, Mi diesen in die Oberfl¨ache eines Torus einzubetten, wie Abbildung 71 zeigt. Einen K8 hingegen Mi+1 kann man auch nicht mehr in die Oberfl¨ache eines Torus einbetten. Ri Li 1 1 2i Li+1

Fi =Li Ri = Ri+1

Abbildung 71: Eine Einbettung des K 5 auf dem Torus. Wir werden zun¨achst den Begriff einer geschlossenen Fl¨ache pr¨azisieren und sodann eine Klassifikation der geschlossenen Fl¨achen bis auf Hom¨oomorphie angeben. Eine geschlossene Fl¨ache ist eine kompakte 2-dimensionale Mannigfaltigkeit, d.h. ein kompakter, zusammenh¨angender Hausdorff-Raum, in dem jeder Punkt eine Umgebung besitzt, die hom¨oomorph zur offenen Kreisscheibe ist. Die geschlossenen Fl¨achen zerfallen nun in zwei Klassen: die orientierbaren und die nichtorientierbaren Fl¨achen. Dabei heißt eine geschlossene Fl¨ache S orientierbar, falls f¨ur jede geschlossene Jordankurve C auf S eine Rotationsrichtung erhalten bleibt, wenn man einmal um


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

125

C herumgeht. Andernfalls heißt S nicht orientierbar. Beispiele f¨ur orientierbare geschlossene Fl¨achen sind die Kugeloberfl¨ache, die Oberfl¨ache eines Torus und allgemein eine Kugel mit einer Anzahl aufgesetzter Henkel. Man bezeichnet eine Kugel mit h aufgesetzten Henkeln als S h . Die nichtorientierbaren geschlossenen Fl¨achen sind anschaulich weniger leicht vorstellbar. Ein bekanntes Beispiel einer nicht orientierbaren (aber nicht geschlossenen) Fl¨ache ist das M¨obiusband. Man erh¨alt dies durch geeignete Identifizierung zweier Seiten eines Rechtecks. Eine geschlossene nicht orientierbare Fl¨ache erh¨alt man zum Beispiel, indem man in die Kugeloberfl¨ache ein kreisrundes Loch schneidet und je zwei Punkte auf dem Rand des Loches identifiziert, wenn sie sich genau gegen¨uberliegen. Damit erh¨alt man eine Kugel mit einer sogenannten Kreuzhaube. Allgemein bezeichnet man eine Kugel mit k aufgesetzten Kreuzhauben als N k . Der Klassifikationssatz f¨ur geschlossene Fl¨achen besagt, dass die Sh und die Nk bis auf Hom¨oomorphien die einzigen geschlossenen Fl¨achen sind. Satz 145 (Dehn, Heegard 1907) Jede geschlossene Fl a¨ che ist hom¨oomorph zur Sh oder Nk f¨ur ein geeignetes h ≥ 0 oder k > 0. t u

Damit wissen wir, dass es ausreicht, wenn wir uns im Folgenden nur auf S h und Nk beschr¨anken. Die Eulersche Formel (Satz 127) hat uns gezeigt, dass der Wert |V | − |E| + |R| f¨ur jede Einbettung eines planaren Graphen in die Ebene konstant ist. Der folgende Satz zeigt nun, dass dies allgemein f¨ur geschlossene Fl¨achen gilt. Das heißt der Wert |V | − |E| + |R| ist nur von der Fl¨ache, nicht aber von dem Graphen abh¨angig. Satz 146 Es sei G = (V, E) ein zusammenh a¨ ngender Graph, der so in die Sh eingebettet ist, dass das Innere eines jeden Gebiets hom o¨ omorph zur offenen Kreisscheibe ist, und es sei R die Menge der Gebiete dieser Einbettung. Dann gilt: |V | − |E| + |R| = 2 − 2h Beweis. Wir beweisen die Aussage durch Induktion u¨ ber h f¨ur Multigraphen. h = 0: F¨ur einfache Graphen ist dies gerade die Aussage des Satzes 127. Man erh¨alt daraus die Aussage f¨ur Multigraphen, indem man jede Multikante durch einen Pfad der L¨ange 2 ersetzt. Jede solche Ersetzung erh¨oht die Anzahl Kanten und Knoten um 1, die Anzahl Gebiete bleibt jedoch unver¨andert. h → h+1 : Es sei G = (V, E, R) in die Sh+1 wie gefordert eingebettet und es liege ohne Einschr¨ankung


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

126

kein Knoten von G auf einem Henkel. Dann wissen wir, dass u¨ ber jeden Henkel mindestens eine Kante l¨auft, da ansonsten nicht alle Gebiete der Einbettung von G hom¨oomorph zur offenen Kreisscheibe w¨aren. Wir w¨ahlen uns nun einen beliebigen Henkel, u¨ ber den k ≥ 1 Kanten verlaufen. Sodann f¨ugen wir f¨ur jede u¨ ber den Henkel laufende Kante an den beiden Fußpunkten des Henkels, durch die die Kante verl¨auft, einen neuen Knoten eine. Die so eingef¨ugten Knoten verbinden wir jeweils an den beiden Auftreffstellen des Henkels zu einem Kreis. Falls k = 1 f¨ugen wir eine Schlaufe ein. Den Henkel entfernen wir sodann. Wir erhalten damit einen neuen Graphen G0 = (V 0 , E 0 , R0 ) der in die Sh eingebettet ist. Wir haben nun 2k neuen Knoten eingef¨ugt. Somit gilt |V 0 | = |V | + 2k. F¨ur die Anzahl Kanten gilt: |E 0 | = |E| − k + 2k + 2k = |E| + 3k, da wir die k u¨ ber den Henkel laufende Kanten jeweils durch zwei bis zum Henkel laufende Kanten ersetzt haben, und sodann noch zwei Kreise mit jeweils k Kanten hinzugef¨ugt haben. Die neue Anzahl Gebiete berechnet sich zu |R 0 | = |R| + k + 2, da wir jedes der k u¨ ber den Henkel laufende Gebiete durch 2 ersetzt haben, und sodann noch 2 Kreise eingef¨ugt haben. Der Graph G0 ist nun zusammenh¨angend, da sonst nicht alle Gebiete von G hom¨oomorph zur offenen Kreisscheibe w¨aren. Nach Induktionsvoraussetzung gilt somit: |V 0 | − |E 0 | + |R0 | = 2 − 2h Damit erhalten wir: |V | − |E| + |R| = (|V 0 | − 2k) − (|E 0 | − 3k) + (|R0 | − k − 2) = |V 0 | − |E 0 | + |R0 | − 2 = 2 − 2(h − 1)

t u

Analog beweist man eine entsprechende Aussage f¨ur die nicht-orientierbaren Fl¨achen. Satz 147 Es sei G = (V, E) ein zusammenh a¨ ngender Graph, der so in die Nk eingebettet ist, dass das Innere eines jeden Gebietes hom o¨ omorph zur offenen Kreisscheibe ist. Dann gilt: |V | − |E| + |R| = 2 − k t u

Wir definieren nun nachfolgend das Geschlecht eines Graphen. Damit pr¨azisieren wir das eingangs formulierte Problem, eine in einem gewissen Sinne minimale Fl¨ache zu finden, in die wir einen gegebenen Graphen einbetten k¨onnen. Es sei G ein Graph. Das Geschlecht γ(G) ist


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

127

die kleinste Zahl h, so dass G in die S h eingebettet werden kann. Entsprechend ist das nichtorientierbare Geschlecht γ(G) als die kleinste Zahl k definiert, so dass G in die N k eingebettet werden kann. Zum Beispiel gilt γ(K4 ) = γ(K4 ) = 0 und γ(K5 ) = 1. Wir geben nun eine untere Schranke f¨ur das Geschlecht der vollst¨andigen Graphen an. Wir werden nachher sehen, dass diese mit einer Ausnahme auch gleichzeitig obere Schranke ist. Lemma 148 F¨ur n ≥ 3 gilt: i) γ(Kn ) ≥ d (n−3)(n−4) e 12 e ii) γ¯ (Kn ) ≥ d (n−3)(n−4) 6 Beweis. i) Es sei der Kn = (V, E, R) in die Sγ(Kn ) eingebettet. Nach der Eulerschen Formel gilt dann: |V | − |E| + |R| = 2 − 2 · γ(Kn ) In jedem Knoten inzidieren nun genau n − 1 Kanten, womit wir (n − 1) · |V | = 2 · |E| erhalten. Ferner wird jedes Gebiet von mindestens 3 Kanten begrenzt. Dies liefert uns die Ungleichung 3 · |R| ≤ 2 · |E| Damit erhalten wir: 2 · |E| 2 − |E| + |E| n− 3  1 n 2 1 = ·( − ) 2 n−1 3 n 6 − (n − 1)) = ·( ) 2 3 7n − n2 = 6

|V | − |E| + |R| ≤

Somit gilt: 2 − 2 · γ(Kn ) ≤

7n − n2 (n − 3)(n − 4) ⇔ γ(Kn ) ≥ d e 6 12

ii) Der Beweis f¨ur das nicht orientierbare Geschlecht verl¨auft analog.


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

128

t u

Der nachfolgende Satz zeigt nun, dass in Lemma 148 fast immer Gleichheit gilt. Die einzige Ausnahme ist γ¯ (K7 ) = 3. Der Beweis dieses Satzes erstreckte sich u¨ ber die Jahre 1890 bis 1969. Der wesentliche Anteil wurde dabei von G. Ringel geleistet. Satz 149 e i) γ¯ (Kn ) = d (n−3)(n−4) 6

f¨ur n ≥ 3, n 6= 7

ii) γ(Kn ) = d (n−3)(n−4) e 12

f¨ur n ≥ 3 t u

8.7 Die chromatische Zahl von Fl¨achen h¨oheren Geschlechts H EAWOOD ging auch der der 4-Farben-Vermutung analogen Fragestellung f¨ur Fl¨achen h¨oheren Geschlechts nach. Die chromatische Zahl χ(Sγ ) (χ(Nγ )) einer orientierbaren (nicht-orientierbaren) geschlossenen Fl¨ache Sγ (Nγ ) vom Geschlecht γ ist χ(Sγ ) := max {χ(G) : G auf Sγ einbettbar} ,

χ(Nγ ) := max {χ(G) : G auf Nγ einbettbar} . Die 4-Farben-Vermutung besagt also gerade χ(S 0 ) = 4 (und nicht 5). H EAWOOD zeigte die Wohldefiniertheit von χ(S γ ) bzw. χ(Nγ ) auch f¨ur γ > 0: Satz 150 (H EAWOOD Map Coloring Theorem, 1890) Sei γ > 0.   √ 7 + 1 + 48γ =: H(γ) χ(Sγ ) ≤ 2  √  7 + 1 + 24γ χ(Nγ ) ≤ =: H(γ) 2

(2) (3)

Beweis. Wir zeigen nur den orientierbaren Fall, der nicht-orientierbare l¨auft analog. Sei G = (V, E) ein Graph auf Sγ (2-cell-embedding) mit χ(G) = k. Ohne Einschr¨ankung sei G kritisch k-chromatisch, d.h. χ(G − v) = k − 1 ∀v ∈ V


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

129

(sonst entferne Knoten). Dann gilt f¨ur die Knotengrade d(v) ≥ k − 1

∀v ∈ V,

denn sonst w¨are eine (k − 1)-F¨arbung von G − v auf v fortsetzbar. Es folgt 2|E| ≥ |V |(k − 1). Außerdem ist G zusammenh¨angend, und wir d¨urfen |V | =: n ≥ 3 annehmen. Aus der E ULER P OINCAR E´ schen Formel ergibt sich daher |V | − |E| + |F | 3|F | 2 ⇒ |V | − |E| + 3 |E| ⇔ |E|

= ≤ ≥ ≤

2 − 2γ 2|E| 2 − 2γ 3|V | + 6(γ − 1).

Setzt man beide Ungleichungen zusammen, erh¨alt man also ⇒

n(k−1) 2

≤ |E| ≤ 3n + 6(γ − 1) (k − 7) n ≤ 12(γ − 1).

F¨ur γ = 0 ergibt sich daraus die wertlose Ungleichung k ≤ 7 − 12 n oder k ≤ 6 (wir wissen bereits k ≤ 5!). Ist aber k ≥ 7 ⇒ γ > 0, so sind beide Seiten der Ungleichung nichtnegativ, und wir k¨onnen wegen k ≤ n folgern (k − 7) k ≤ 12(γq − 1) 7 ⇒ k ≤ 2 + 49 4 + 12(γ − 1) ⇒

k ≤

√ 7+ 1+48γ 2

2

Bemerkung. • F¨ur γ = 0 erg¨abe sich in (2) der 4-Farben-Satz, nur leider funktioniert der Beweis in diesem Fall nicht. • Wie anhand des Km,n gesehen, gibt es umgekehrt schon 2-f¨arbbare Graphen beliebig hohen Geschlechts. H EAWOOD glaubte sogar, Gleichheit in (2) gezeigt zu haben. F¨ur γ = 1 folgt dies wegen der Einbettbarkeit des K7 auf dem Torus. H EFFTER wies 1891 auf die Unvollst¨andigkeit in H EA WOODs Beweisf¨ uhrung hin und steuerte die Gleichheit in einigen weiteren F¨allen bei. D IRAC zeigte, dass man sich allgemein auf die Untersuchung der vollst¨andigen Graphen beschr¨anken konnte, da jeder Graph G auf Sγ mit maximaler chromatischer Zahl χ(G) = χ(S γ ) schon einen KH(γ) enth¨alt, so dass Gleichheit in (2) genau dann gilt, wenn K H(γ) auf der Fl¨ache Sγ einbettbar ist. Daher l¨oste erst die vollst¨andige Bestimmung des Geschlechts des vollst¨andigen Graphen das Problem. Aus Satz 149 erhalten wir daher als


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

130

Korollar 151 F¨ur γ > 0 gilt Gleichheit in (2): χ(Sγ ) = H(γ) χ(Nγ ) = H(γ) außer im Fall der K LEINschen Flasche N2 , wo χ(N2 ) = 6.

Beweis (wieder nur f¨ur den orientierbaren Fall). Aus Satz 149 folgt f¨ur den gr¨oßten auf S γ einbettbaren Kn : l m l m (n−3)(n−4) (n−2)(n−3) = γ(K ) ≤ γ < γ(K ) = n n+1 12 12 n2 −7n+12 12

n2 −5n+6 12

γ

<

<

n

≤ j7+ 1+48γ 2 k √ = 7+ 1+48γ 2

Durch Aufl¨osen nach n folgt hieraus √ 5+ 1+48γ 2

n

und mithin χ(Sγ ) ≥ χ(Kn ) = n = H(γ). 2 Interessanterweise konnte also das Problem, χ(S γ ) zu bestimmen, f¨ur γ > 0 gel¨ost werden, w¨ahrend das Problem in der Ebene nach wie vor offen war.


Index Ci , 7 GD (R), 50 Kn , 4 Kr,s , 6 N + (x), 34 N − (x), 34 Uk,n , 43 α, 6 χ, 6 χ0 (G), 104 χl , 118 ν(G), 69 ω, 6 τ (G), 75 c, 8 d+ (x), 34 dist, 7 dist(., .), 22 even(F ), 71 g, 7 k-F¨arbung, 6 k-f¨arbbar, 6 k-regul¨ar, 4 odd(F ), 71 q(G), 80 a¨ quivalente Einbettungen, 112 a¨ ußeres Gebiet, 112 u¨ berdeckter Knoten, 69

Kou, Markowsky und Berman, 50 Kruskal, 40 Mehlhorns, 52 Prim, 41 Algorithmus von Hopcroft und Karp, 73 alternierender Baum, 71 alternierender Pfad, 71 alternierender Wald, 71 amortisierte Laufzeit, 24 aufspannender Teilgraph, 5 augmentierender Pfad, 71 Ausgangsgrad, 34 Austauscheigenschaft, 43 Basis, 43 Basisorakel, 47 Baum, 8 alternierender, 71 minimal spannender, 40 spannender, 9 Bellman-Moore Algorithmus, 35 BFS, 19 bin¨arer Heap, 23 bin¨ares Matroid, 43 bipartit, 6 bipartiter Graph vollst¨andiger, 6 Blatt, 9 Breitensuche, 16

abh¨angige Menge, 46 Abstand, 7 adjazent, 3 Adjazenzliste, 15 Adjazenzmatrix, 15 Algorithmus Bellman–Moore, 35 Dijkstra, 22 Greedy, 44

chromatische Zahl, 6 chromatischer Index, 104 Clique, 4 Cliquenzahl, 6 Defekt, 80 DFS, 17 Digraph, 34

131


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

Dijkstra Algorithmus, 22 Distanzgraph, 50 modifizierter, 52 ebener Graph, 112 Einbettung konvexe, 123 Einbettung eines Graphen, 112 Einbettungen a¨ quivalente, 112 eindeutig k-f¨arbbar, 6 Einheitskostenmaß, 15 Endknoten, 3 eines Weges, 7 eulerscher Graph, 83 Eulertour, 83 F¨arbung, 6 Farbklasse, 6 freies Matroid, 43 Gebiet a¨ ußeres, 112 Gebiete einer Einbettung, 112 gerichtete Kante, 34 gerichteter Graph, 34 geschlossener Kantenzug, 7 gewichtetes Matroid, 44 girth, 7 gr¨oßtes Matching, 69 Grad, 3 Graph, 3 k-f¨arbbarer, 6 bipartiter, 6 ebener, 112 eindeutig k-f¨arbbarer, 6 eulerscher, 83 gerichteter, 34 hamiltonscher, 85 kantengewichteter, 22 kubischer, 4

132

leerer, 4 markierter, 4 maximal planarer, 114 minimal imperfekter, 109 perfekter, 107 planarer, 112 regul¨arer, 4 triangulierter, 107 vollst¨andig bipartiter, 6 vollst¨andiger, 4 zusammenh¨angender, 8 graphisches Matroid, 43 Greedy Algorithmus, 44 Hamiltonabschluß, 86 Hamiltonkreis, 85 hamiltonscher Graph, 85 Heap bin¨arer, 23 Hopcroft-Karp-Algorithmus, 73 induzierter Teilgraph, 5 inzident, 3 isomorph, 4, 43 Kante, 3 gerichtete, 34 kantengewichteter Graph, 22 Kantenzug, 7 geschlossener, 7 leerer, 7 Kapazitatsfunktion, 55 Knoten, 3 simplizialer, 108 Knotengewichtung zul¨assige, 77 Knotenuberdeckungszahl, 75 Komplement, 4 konvexe Einbettung, 123 Kou, Markowsky und Berman Algorithmus, 50


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

Kreis, 7, 46 Kreisorakel, 47 Kruskal Algorithmus, 40 kubischer Graph, 4 L¨ange eines geschlossenen Kantenzugs, 7 eines Weges, 7 L¨angenfunktion, 22 Laufzeit amortisierte, 24 leerer Graph, 4 leerer Kantenzug, 7 listchromatische Zahl, 118 markierter Graph, 4 Matching, 69 gr¨oßtes, 69 maximales, 69 perfektes, 69 schwerstes, 77 Matroid, 43 bin¨ares, 43 freies, 43 gewichtetes, 44 graphisches, 43 triviales, 43 uniformes, 43 maximal planarer Graph, 114 maximale unabh¨angige Menge, 43 maximales Matching, 69 Maximalgrad, 4 Mehlhorns Algorithmus, 52 minimal imperfekter Graph, 109 minimal spannender Baum, 40 Minimalgrad, 4 modifizierter Distanzgraph, 52 Mycielski Graph, 98 Nachbar, 3 Nachbarschaft, 3

Netzwerk, 55 perfekter Graph, 107 perfektes Matching, 69 Pfad, 7 alternierender, 71 augmentierender, 71 planarer Graph, 112 Potenzialfunktion, 25 Potenzialmethode, 25 Prim Algorithmus, 41 Quelle, 55 Rand eines Gebietes, 112 Rang, 46 Rangorakel, 47 regul¨ar, 4 Schleife, 34 schwacher Teilgraph, 5 schwerstes Matching, 77 Senke, 55 simplizialer Knoten, 108 spannender Baum, 9 stabile Menge, 4 Stabilit¨atszahl, 6 Steiner minimaler Baum, 48 Steinerbaum, 48 Steinerbaumproblem, 48 Steinerknoten, 48 Subgraph, 5 Taillenweite, 7 Teilgraph, 5 aufspannender, 5 induzierter, 5 schwacher, 5 Terminal, 48 Tiefensuche, 16 Traveling Salesman Problem, 88 Triangulation, 114

133


9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

triangulierter Graph, 107 triviales Matroid, 43 TSP, 88 TSP-Tour, 89 unabh¨angige Menge, 42 maximale, 43 Unabh¨angigkeitsorakel, 47 Unabh¨angigkeitssystem, 42 ungarischer Wald, 72 uniformes Matroid, 43 Untergraph, 5 Unterteilung, 120 vollst¨andig bipartiter Graph, 6 vollst¨andiger Graph, 4 Voronoi-Gebiet, 52 Wald, 8 alternierender, 71 ungarischer, 72 Weg, 7 zulassige Knotengewichtung, 77 zusammenh¨angend, 8 Zusammenhangskomponente, 8 Zykel, 7

134

Graphenskript  

Graphentheorie

Read more
Read more
Similar to
Popular now
Just for you