Bäume und Wälder
Bäume und Wälder
Bäume und Wälder
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Bäume <strong>und</strong> Wälder<br />
Definition <strong>und</strong> Eigenschaften<br />
Definition: Ein (ungerichteter) Graph ist ein Baum, wenn er zusammenhängend ist <strong>und</strong><br />
keinen Kreis enthält. Ein (ungerichteter) Graph, dessen Zusammenhangskomponenten Bäume<br />
sind, wird ein Wald genannt, d.h. jeder kreisfreie Graph ist ein Wald.<br />
Beispiel 1: Die folgende Abbildung zeigt einen aus vier Bäumen bestehenden Wald.<br />
Beispiel 2: Die folgende Abbildung zeigt die Liste aller Bäume mit 6 Knoten.<br />
Übung: Man mache sich klar, warum diese Bäume paarweise nichtisomorph sind!<br />
Definition: Sei G = (V, E) ungerichtet <strong>und</strong> zusammenhängend mit |V | = n. Ein Untergraph<br />
T auf allen n Knoten, der ein Baum ist, heißt aufspannender Baum von G.<br />
Analog definiert man einen aufspannenden Wald als Vereinigung von aufspannenden Bäumen<br />
von allen Zusammenhangskomponenten eines nichtzusammenhängenden Graphen.<br />
Beobachtung: Jeder zusammenhängende Graph G hat einen aufspannenden Baum, dieser<br />
ist aber nur eindeutig, wenn der Graph selbst ein Baum ist, denn dann ist T der Graph selbst.<br />
Ist G kein Baum, dann gibt es einen Kreis in G <strong>und</strong> wenn man eine Kante dieses Kreises aus<br />
E entfernt, bleibt der Graph zusammenhängend. Somit kann man einen aufspannden Baum<br />
von G erzeugen, indem man schrittweise Kanten von Kreisen entfernt bis keine Kreise mehr<br />
existieren.<br />
Lemma:<br />
Grad 1.<br />
Jeder Baum mit zumindest zwei Knoten besitzt mindestens zwei Knoten vom<br />
1
Beweis: Angenommen G = (V, E) ist ein Baum <strong>und</strong> hat keinen Knoten vom Grad 1, dann<br />
haben alle Knoten einen Grad ≥ 2. Wir beginnen mit einer beliebigen Kante {v 1 , v 2 } ∈ E.<br />
Wegen deg(v 2 ) ≥ 2 gibt es einen von v 1 verschiedenen Nachbarn v 3 von v 2 , wegen deg(v 3 ) ≥ 2<br />
gibt es einen von v 2 verschiedenen Nachbarn v 4 von v 3 usw. Man beachte, dass jeder Knoten<br />
v k aus dieser Konstruktion nicht in der Menge {v 1 , v 2 , . . . , v k−1 } liegen kann, denn dann hätte<br />
G einen Kreis. Damit müsste V unendlich viele Knoten enthalten - ein Widerspruch.<br />
Alternativer Beweis: Weniger intuitiv, aber dafür kürzer <strong>und</strong> eleganter ist das folgende Argument.<br />
Seien u 1 , u 2 , . . . , u i die Knoten eines längsten Weges in G. Dann liegen alle Nachbarn<br />
von u 1 auf diesem Weg, denn sonst wäre er nicht ein längster Weg. Aber nur u 2 kann ein<br />
Nachbar von u 1 sein, sonst gäbe es einen Kreis. Folglich ist deg(u 1 ) = 1.<br />
Definition: Ist G ein Baum, dann nennt man alle Knoten vom Grad 1 Blätter des Baums,<br />
alle anderen Knoten nennt man innere Knoten von G.<br />
Charakterisierung von Bäumen<br />
Satz: Folgende Aussagen sind äquivalent für G = (V, E).<br />
(1) G = (V, E) ist ein Baum.<br />
(2) Je zwei Knoten sind durch genau einen Weg verb<strong>und</strong>en.<br />
(3) G ist zusammenhängend <strong>und</strong> es gilt: |E| = |V | − 1.<br />
Beweis: (1) ⇒ (2) <strong>und</strong> (2) ⇒ (1) sind einfache indirekte Schlüsse. Die erste Implikation<br />
sieht man z.B. wie folgt. Angenommen es gibt zwei Knoten u, v, zwischen denen nicht genau<br />
ein Weg verläuft. Dann gibt es entweder gar keinen Weg von u nach v oder mindestens zwei<br />
verschiedene Wege. Im ersten Fall wäre der Graph nicht zusammenhängend, im zweiten Fall<br />
würde er einen Kreis enthalten. In jedem Fall ist aber G kein Baum.<br />
Die Gegenrichtung kann mit ähnlichen Argumenten begründet werden: Angenommen G ist<br />
kein Baum, dann ist G nicht zusammenhängend oder G enthält einen Kreis. Im ersten Fall<br />
wählt man u <strong>und</strong> v aus verschiedenen Zusammenhangskomponenten von G <strong>und</strong> es gibt keinen<br />
Weg von u nach v, im zweiten Fall wählt man aus einem Kreis zwei Knoten u <strong>und</strong> v für<br />
die es dann zwei verschiedene Verbindungswege gibt. In beiden Fällen komen wir auf einen<br />
Widerspruch zu (2).<br />
Wir zeigen (1) ⇒ (3):<br />
Für Bäume der Ordnung a ist das offensichtlich. Sonst hat jeder Baum Knoten vom Grad 1,<br />
sei u 1 einer von ihnen <strong>und</strong> u 2 der einzige Nachbar von u 1 in G. Wir entfernen u 1 <strong>und</strong> die<br />
Kante {u 1 , u 2 } aus G <strong>und</strong> erhalten einen zusammenhängenden Restgraphen G ′ . Dieser hat<br />
genau einen Knoten <strong>und</strong> eine Kante weniger als G. Wenn wir dies iterieren, bleibt zum Schluss<br />
genau ein Knoten ohne Kanten übrig. Also |E| = |V |−1. Auf das Iterieren kann man natürlich<br />
verzichten, wenn man den Beweis mit vollständiger Induktion führt.<br />
Wir zeigen (3) ⇒ (1):<br />
Sei T = (V, E ′ ) aufspannender Baum von G, damit |V | − |E ′ | = 1. Aber nach Vorraussetzung<br />
gilt auch |V | − |E| = 1. Allerdings ist E ′ ⊆ E <strong>und</strong> die einzige Möglichkeit hierfür ist E = E ′ .<br />
2
Folgerung 1: Ist G ein Graph der Ordnung n mit genau k Zusammenhangskomponenten,<br />
dann hat jeder aufspannende Wald von G die Größe n − k.<br />
Folgerung 2: Ist G = (V, E) ein Graph, T = (V, E ′ ) ein aufspannender Wald von G <strong>und</strong><br />
e ∈ E \ E ′ eine Kante aus G, die nicht in T liegt, dann enthält der Graph H = (v, E ′ ∪ {e})<br />
genau einen Kreis.<br />
Gr<strong>und</strong>idee von Breiten- <strong>und</strong> Tiefensuche<br />
Zur Konstruktion von aufspannenden Bäumen mit speziellen Eigenschaften gibt zwei Standardverfahren,<br />
die Breitensuche (BFS - Breadth-first search) <strong>und</strong> die Tiefensuche (DFS -Depth-first<br />
search).<br />
Beide Algorithmen starten von einem vorher (beliebig) festgelegten Knoten r ∈ V , der sogenannten<br />
Wurzel, <strong>und</strong> besuchen in jedem Schritt von einem bereits erreichten Knoten aus einen<br />
benachbarten, aber noch nicht besuchten Knoten. Die Kanten, über die diese Besuche erfolgen,<br />
bilden den aufspannenden Baum.<br />
Die beiden Verfahren unterscheiden sich dadurch, von welchem der jeweils erreichten Knoten<br />
die Suche fortgesetzt wird. Dazu betrachten wir die aktuelle Reihenfolge in der die Knoten<br />
besucht wurden. Bei der Breitenssuche wählt man als aktuellen Ausgangspunkt den ersten<br />
Knoten in dieser Folge, der einen unbesuchten Nachbarn besitzt, bei der Tiefensuche den<br />
letzten. Falls dieser Ausgangspunkt mehrere unbesuchte Nachbarn besitzt, kann man einen<br />
beliebigen auswählen oder sich bei nummerierten Knoten auf den kleinsten festlegen.<br />
Es ist klar, dass beide Verfahren in einem (möglicherweise unzusammenhängenden) Graphen<br />
G einen aufspannenden Baum für die Zusammenhangskomponente der Wurzel liefern. Durch<br />
Wiederholung auf allen Zusammenhangskomponenten (jeweils mit einer neuen Wurzel) erhält<br />
man einen aufspannenden Wald.<br />
3