finale Version des Vorlesungsskripts - ZIB
finale Version des Vorlesungsskripts - ZIB finale Version des Vorlesungsskripts - ZIB
5 Bäume und Wege Dieses Kapitel ist einem Thema gewidmet, das algorithmisch sehr einfach zu lösen ist: Bestimme einen kostenminimalen aufspannenden Baum in einem Graphen. Wir werden Varianten dieser Aufgabe und auch „gerichtete Versionen“ betrachten. Bevor wir jedoch algorithmischen Fragen nachgehen, sollen Wälder aus graphentheoretischer Sicht analysiert werden. Das Ziel des ersten Abschnitts dieses Kapitels ist nicht eine umfassende Behandlung des Themenkreises, sondern das Einüben typischer graphentheoretischer Beweisargumente. Bäume sind sehr einfache Objekte. Die meisten Eigenschaften von Bäumen können mit minimalem Aufwand nachgewiesen werden. Die dabei benutzten Argumente tauchen jedoch in der Graphentheorie – meistens in etwas komplizierterer Form – immer wieder auf. Wir hoffen, diese Beweistechniken hier sichtbar machen zu können. 5.1 Graphentheoretische Charakterisierungen von Bäumen und Arboreszenzen Wir erinnern daran, dass ein Graph, der keinen Kreis enthält, Wald genannt wird, dass ein Graph G zusammenhängend heißt, wenn es in G zwischen je zwei Knoten eine sie verbindende Kette (oder äquivalent dazu, einen sie verbindenden Weg) gibt, und dass ein Baum ein zusammenhängender Wald ist. Ein Untergraph eines Graphen G = (V, E), der ein Baum ist und alle Knoten V enthält, heißt aufspannender Baum (von G). Eine Zusammenhangskomponente (kurz: Komponente) eines Graphen G ist ein maximaler zusammenhängender Untergraph von G. Wir werden nun einige Eigenschaften von Bäumen und Wäldern beweisen. Wir beginnen mit trivialen Beobachtungen. (5.1) Lemma. Ein Baum G = (V, E) mit mindestens zwei Knoten hat mindestens zwei Knoten mit Grad 1. △ Beweis. Da ein Baum zusammenhängend ist, liegt jeder Knoten auf mindestens einer Kante. Wir wählen einen beliebigen Knoten, sagen wir v. Wir starten in v einen (vereinfachten) DFS-Algorithmus. Wir markieren v und gehen zu einem Nachbarn, sagen wir w, von v. Wir markieren w. Hat w den Grad 1, stoppen wir die Suche. Andernfalls gehen wir zu einem von v verschiedenen Nachbarn von w und fahren so fort. Da ein Baum keinen Kreis enthält, kehrt dieses Verfahren niemals zu einem bereits markierten Knoten zurück. Da der Graph endlich ist, muss das Verfahren irgendwann mit einem Knoten mit Grad 1 aufhören. Hat der Anfangsknoten v auch Grad 1, können wir aufhören. Falls nicht, gehen wir zu einem von w verschiedenen Nachbarn von v und wiederholen das obige Verfahren. Auf diese Weise finden wir einen zweiten Knoten mit Grad 1. ✷ 77
5 Bäume und Wege Der Beweis ist etwas länglich geraten. Der Grund dafür ist, einmal zu zeigen, wie durch einfache Analyse eines sehr einfachen Algorithmus Eigenschaften von Graphen nachgewiesen werden können. Was können Sie aus diesem Beweisverfahren „herausholen“, wenn Sie den Algorithmus statt mit einem beliebigen Knoten v mit einem Knoten v mit maximalem Grad beginnen? (5.2) Lemma. Sei G = (V, E) ein Graph. (a) Es gilt: 2|E| = v∈V deg(v). (b) Ist G ein Baum, so gilt: |E| = |V | − 1. (c) Gilt deg(v) ≥ 2 für alle v ∈ V , so enthält G einen Kreis. △ Beweis. (a) Da jede Kante genau zwei (nicht notwendig verschiedene) Knoten enthält, wird bei der Summe der Knotengerade jede Kante genau zweimal gezählt. (b) Beweis durch Induktion! Die Behauptung ist offensichtlich richtig für |V | = 1 und |V | = 2. Wir nehmen an, dass die Behauptung korrekt ist für alle Bäume mit höchstens n ≥ 2 Knoten. Sei G = (V, E) ein Baum mit n + 1 Knoten. Nach Lemma (5.1) enthält G einen Knoten v mit Grad 1. G − v ist dann ein Baum mit n Knoten. Nach Induktionsvoraussetzung hat G − v genau n − 1 Kanten, also enthält G genau n Kanten. (c) Enthält G Schlingen, so ist nichts zu zeigen, da Schlingen Kreise sind. Andernfalls führen wir folgenden Markierungsalgorithmus aus. Wir wählen einen beliebigen Knoten v1 und markieren ihn. Wir wählen einen beliebigen Nachbarn v2 von v1 und markieren sowohl v2 als auch die Kante v1v2. Haben wir die Knoten v1, . . . , vk, k ≥ 2, markiert, so enthält G, da deg(v) ≥ 2, eine von der markierten Kante vk−1vk verschiedene Kante vkvk+1 zu einem vk-Nachbarn vk+1. Ist vk+1 bereits markiert, so ist vk+1 einer der bereits markierten Knoten, sagen wir vi, 1 ≤ i ≤ k. Daher bildet die Knotenfolge (vi, vi+1, . . . , vk) einen Kreis. Ist vk+1 nicht markiert, so markieren wir vk+1 und die Kante vkvk+1 und fahren mit unserem Markierungsalgorithmus fort. Da |V | endlich ist, wird nach endlich vielen Schritten die Situation eintreten, dass jeder Nachbar des gerade markierten Knotens vk bereits markiert ist. Und damit ist ein Kreis gefunden. ✷ (5.3) Lemma. Ein Graph G = (V, E) mit mindestens 2 Knoten und mit weniger als |V | − 1 Kanten ist unzusammenhängend. △ Beweis. Sei m := |E|. Wäre G zusammenhängend, müsste es in G von jedem Knoten zu jedem anderen einen Weg geben. Wir führen einen Markierungsalgorithmus aus. Wir wählen einen beliebigen Knoten v ∈ V und markieren v. Wir markieren alle Nachbarn von v und entfernen die Kanten, die von v zu seinen Nachbarn führen. Wir gehen nun zu einem markierten Knoten, markieren dessen Nachbarn und entfernen die Kanten, die 78
- Seite 30 und 31: 2.2 Lineare Algebra wie in der line
- Seite 32 und 33: 2.3 Polyeder und lineare Programme
- Seite 34 und 35: (2.4) Bemerkung. Die Lösungsmenge
- Seite 36 und 37: 2.3 Polyeder und lineare Programme
- Seite 38 und 39: 2.3 Polyeder und lineare Programme
- Seite 40 und 41: V. Chvátal. Linear Programming. Fr
- Seite 42 und 43: 3 Diskrete Optimierungsprobleme Die
- Seite 44 und 45: 3.2 Klassische Fragestellungen der
- Seite 46 und 47: (a) (b) 3.2 Klassische Fragestellun
- Seite 48 und 49: 3.3 Graphentheoretische Optimierung
- Seite 50 und 51: 3.3 Graphentheoretische Optimierung
- Seite 52 und 53: 3.3 Graphentheoretische Optimierung
- Seite 54 und 55: 3.3 Graphentheoretische Optimierung
- Seite 56 und 57: • Schaltkreisentwurf • Standort
- Seite 58 und 59: 3.3 Graphentheoretische Optimierung
- Seite 60 und 61: 3.3 Graphentheoretische Optimierung
- Seite 62 und 63: Literaturverzeichnis T. L. Gertzen
- Seite 64 und 65: 4 Komplexitätstheorie und Speicher
- Seite 66 und 67: 4.1 Probleme, Komplexitätsmaße, L
- Seite 68 und 69: 4.2 Die Klassen P und N P, N P-Voll
- Seite 70 und 71: 4.2 Die Klassen P und N P, N P-Voll
- Seite 72 und 73: 4.2 Die Klassen P und N P, N P-Voll
- Seite 74 und 75: 4 4.3 Datenstrukturen zur Speicheru
- Seite 76 und 77: 4.3 Datenstrukturen zur Speicherung
- Seite 78 und 79: 4.3 Datenstrukturen zur Speicherung
- Seite 80: R. E. Tarjan. Data structures and n
- Seite 85 und 86: 5 Bäume und Wege (2) =⇒ (3) Ist
- Seite 87 und 88: 5 Bäume und Wege Haben wir einen A
- Seite 89 und 90: 5 Bäume und Wege Falls T \ {ei} zu
- Seite 91 und 92: 5 Bäume und Wege /****************
- Seite 93 und 94: 5 Bäume und Wege THEN w[dope[i]+j]
- Seite 95 und 96: 5 Bäume und Wege Wie Beispiel (5.1
- Seite 97 und 98: 5 Bäume und Wege (a) F. Schiller.
- Seite 99 und 100: 5 Bäume und Wege DISTk(u) die Län
- Seite 101 und 102: 5 Bäume und Wege VOR(3) = 2. Wir s
- Seite 103 und 104: 5 Bäume und Wege 4. DO u = 1 TO v
- Seite 105 und 106: 5 Bäume und Wege Sei nun P ein kü
- Seite 107 und 108: 5 Bäume und Wege (b) D enthält ge
- Seite 109 und 110: 5 Bäume und Wege C2 C1 s 4 C3 C4 2
- Seite 111 und 112: 5 Bäume und Wege ders vorgehen: z.
- Seite 113 und 114: 5 Bäume und Wege ist ein System vo
- Seite 115 und 116: 5 Bäume und Wege heißt (allgemein
- Seite 117 und 118: 5 Bäume und Wege Um lästige Trivi
- Seite 119 und 120: Literaturverzeichnis A. Goldberg. P
- Seite 121 und 122: 6 Maximale Flüsse in Netzwerken Al
- Seite 123 und 124: 6 Maximale Flüsse in Netzwerken de
- Seite 125 und 126: 6 Maximale Flüsse in Netzwerken s
- Seite 127 und 128: 6 Maximale Flüsse in Netzwerken W
- Seite 129 und 130: 6 Maximale Flüsse in Netzwerken Da
5 Bäume und Wege<br />
Der Beweis ist etwas länglich geraten. Der Grund dafür ist, einmal zu zeigen, wie<br />
durch einfache Analyse eines sehr einfachen Algorithmus Eigenschaften von Graphen<br />
nachgewiesen werden können. Was können Sie aus diesem Beweisverfahren „herausholen“,<br />
wenn Sie den Algorithmus statt mit einem beliebigen Knoten v mit einem Knoten v mit<br />
maximalem Grad beginnen?<br />
(5.2) Lemma. Sei G = (V, E) ein Graph.<br />
(a) Es gilt: 2|E| = <br />
v∈V deg(v).<br />
(b) Ist G ein Baum, so gilt: |E| = |V | − 1.<br />
(c) Gilt deg(v) ≥ 2 für alle v ∈ V , so enthält G einen Kreis. △<br />
Beweis. (a) Da jede Kante genau zwei (nicht notwendig verschiedene) Knoten enthält,<br />
wird bei der Summe der Knotengerade jede Kante genau zweimal gezählt.<br />
(b) Beweis durch Induktion! Die Behauptung ist offensichtlich richtig für |V | = 1 und<br />
|V | = 2. Wir nehmen an, dass die Behauptung korrekt ist für alle Bäume mit höchstens<br />
n ≥ 2 Knoten. Sei G = (V, E) ein Baum mit n + 1 Knoten. Nach Lemma (5.1)<br />
enthält G einen Knoten v mit Grad 1. G − v ist dann ein Baum mit n Knoten. Nach<br />
Induktionsvoraussetzung hat G − v genau n − 1 Kanten, also enthält G genau n<br />
Kanten.<br />
(c) Enthält G Schlingen, so ist nichts zu zeigen, da Schlingen Kreise sind. Andernfalls<br />
führen wir folgenden Markierungsalgorithmus aus. Wir wählen einen beliebigen Knoten<br />
v1 und markieren ihn. Wir wählen einen beliebigen Nachbarn v2 von v1 und markieren<br />
sowohl v2 als auch die Kante v1v2. Haben wir die Knoten v1, . . . , vk, k ≥ 2,<br />
markiert, so enthält G, da deg(v) ≥ 2, eine von der markierten Kante vk−1vk verschiedene<br />
Kante vkvk+1 zu einem vk-Nachbarn vk+1. Ist vk+1 bereits markiert, so<br />
ist vk+1 einer der bereits markierten Knoten, sagen wir vi, 1 ≤ i ≤ k. Daher bildet<br />
die Knotenfolge (vi, vi+1, . . . , vk) einen Kreis. Ist vk+1 nicht markiert, so markieren<br />
wir vk+1 und die Kante vkvk+1 und fahren mit unserem Markierungsalgorithmus fort.<br />
Da |V | endlich ist, wird nach endlich vielen Schritten die Situation eintreten, dass<br />
jeder Nachbar <strong>des</strong> gerade markierten Knotens vk bereits markiert ist. Und damit ist<br />
ein Kreis gefunden. ✷<br />
(5.3) Lemma. Ein Graph G = (V, E) mit min<strong>des</strong>tens 2 Knoten und mit weniger als<br />
|V | − 1 Kanten ist unzusammenhängend. △<br />
Beweis. Sei m := |E|. Wäre G zusammenhängend, müsste es in G von jedem Knoten<br />
zu jedem anderen einen Weg geben. Wir führen einen Markierungsalgorithmus aus. Wir<br />
wählen einen beliebigen Knoten v ∈ V und markieren v. Wir markieren alle Nachbarn<br />
von v und entfernen die Kanten, die von v zu seinen Nachbarn führen. Wir gehen nun<br />
zu einem markierten Knoten, markieren <strong>des</strong>sen Nachbarn und entfernen die Kanten, die<br />
78