finale Version des Vorlesungsskripts - ZIB

finale Version des Vorlesungsskripts - ZIB finale Version des Vorlesungsskripts - ZIB

23.06.2013 Aufrufe

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

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!