96 Algorithmen und Datenstrukturen A Graphen und Bäume A.1 Graphen Ein gerichteter Graph (auch Digraph) G ist ein Paar (V, E), wobei V eine endliche Menge und E eine Relation auf V ist, d.h. E ⊂ V × V . V heißt Menge der Knoten (auch Ecken, engl. vertices) von G, E heißt Menge der Kanten (engl. edges) von G. Gerichteter Graph G1 = (V, E1 ) mit 11 22 33 V = {1, 2, 3, 4, 5, 6} E1 = {(1, 2), (2, 2), (2, 4), (2, 5), (4, 1), (4, 5), (5, 4), (6, 3)} 44 A Graphen und Bäume 55 66 TU Bergakademie Freiberg, WS 2005/06 97 Algorithmen und Datenstrukturen In einem ungerichteten Graphen G = (V, E) besteht die Kantenmenge aus ungeordneten Paaren, d.h. (u, v) und (v, u) werden identifiziert. Ferner erlauben wir in ungerichteten Graphen keine Schleifen, d.h. hier gilt für (u, v) ∈ E auch u 6= v. 11 22 33 Ungerichteter Graph G2 = (V, E2 ) mit V = {1, 2, 3, 4, 5, 6} E2 = {(1, 2), (1, 5), (2, 5), (3, 6)} 44 A.1 Graphen 55 66 Knoten 4 ist isoliert. TU Bergakademie Freiberg, WS 2005/06 98 Algorithmen und Datenstrukturen Ist (u, v) Kante eines gerichteten Graphen, so sagt man (u, v) ist inzident von Knoten u und inzident nach Knoten v. (Im Graphen G1 sind die Kanten (2, 2), (2, 4) und (2, 5) inzident von Knoten 2.) Ist (u, v) eine Kante eines ungerichteten Graphen, so sagt man (u, v) sei inzident mit Knoten u und v. (Im Graphen G2 sind Kanten (1, 2) und (2, 5) inzident mit Knoten 2.) Ist (u, v) Kante eines gerichteten Graphen, so sagt man, Knoten v sei adjazent zu Knoten u, geschrieben u → v. In ungerichteten Graphen ist Adjazenz eine symmetrische Relation. (In G1 und G2 ist 2 adjazent zu 1. Aber 1 ist nicht adjazent zu 2 in G1 .) A.1 Graphen TU Bergakademie Freiberg, WS 2005/06 99 Algorithmen und Datenstrukturen Der Grad eines Knoten in einem ungerichteten Graphen ist die Anzahl der mit diesem Knoten inzidenten Kanten. (Knoten 2 in G2 besitzt den Grad 2.) Ein Knoten mit Grad 0 heißt isoliert. (Knoten 4 in G2 ) In einem gerichteten Graphen bezeichnet der Ausgangsgrad eines Knoten die Anzahl von dort ausgehenden Kanten, der Eingangsgrad die Anzahl der dort hineinlaufenden Kanten. Der Grad eines Knoten in einem gerichteten Graphen ist die Summe von Ein- und Ausgangsgrad. (Knoten 2 in G1 besitzt Eingangsgrad 2, Ausgangsgrad 3, somit Grad 5.) A.1 Graphen TU Bergakademie Freiberg, WS 2005/06 100 Algorithmen und Datenstrukturen Ein Weg der Länge k von Knoten u nach Knoten u0 in einem Graphen G = (E, V ) bezeichnet eine Folge hv0 , v1 , . . . , vk i mit u = v0 , u0 = vk sowie (vj−1 , vj ) ∈ E für alle j = 1, . . . , k. Die Länge des Weges bezeichnet die Anzahl darin enthaltenen Kanten. Der Weg enthält die Knoten v0 , . . . , vk und die Kanten (v0 , v1 ), . . . , (vk−1 , vk ). Es existiert stets ein Weg der Länge Null von u nach u. Existiert ein Weg p von Knoten u nach Knoten u0 , so sagt man, u0 sei von p u aus erreichbar, in Zeichen u → u0 . Ein Weg heißt einfach, wenn alle darin enthaltenen Knoten verschieden sind. (In G1 ist h1, 2, 5, 4i ein einfacher Weg der Länge 3. Der Weg h2, 5, 4, 5i ist nicht einfach.) A.1 Graphen TU Bergakademie Freiberg, WS 2005/06 101 Algorithmen und Datenstrukturen Ein Teilweg eines Weges p = hv0 , v1 , . . . , vk i ist eine zusammenhängende Teilfolge seiner Knoten, d.h. für 0 ≤ i ≤ j ≤ k ist hvi , vi+1 , . . . , vj i ein Teilweg von p. In einem gerichteten Graphen bildet ein Weg p = hv0 , v1 , . . . , vk i der Länge k ≥ 1 einen Zykel, falls v0 = vk . Ein Zykel heißt einfach falls v1 , . . . , vk paarweise verschieden sind. Eine Schleife ist ein Zykel der Länge Eins. Zwei Wege hv0 , v1 , . . . , vk−1 , v0 i und hv00 , v10 , . . . , vk−1 , v00 i stellen denselben Zykel dar, falls es j ∈ Z gibt sodass vi0 = v(i+j) mod k für i = 0, 1, . . . , k − 1. (In G2 bilden die Wege h1, 2, 4, 1i, h2, 4, 1, 2i sowie h4, 1, 2, 4i denselben Zykel.) Ein Graph ohne Zykeln heißt azyklisch. A.1 Graphen TU Bergakademie Freiberg, WS 2005/06 102 Algorithmen und Datenstrukturen Ein ungerichteter Graph ist zusammenhängend, falls je zwei Knoten durch einen Weg verbunden sind. Die Zusammenhangskomponenten eines Graphen sind die Äquivalenzklassen von Knoten bezüglich der Relation ist erreichbar ” von“.(G2 besteht aus den drei Zusammenhangskomponenten {1, 2, 5}, {3, 6}, {4}.) Ein ungerichteter Graph ist genau dann zusammenhängend, wenn er aus genau einer Zusammenhangskomponente besteht, d.h. wenn jeder Knoten von jedem anderen Knoten erreichbar ist. Ein gerichteter Graph heißt stark zusammenhängend, wenn jeder Knoten von jedem anderen aus erreichbar ist. Die starken Zusammenhangskomponenten eines gerichteten Graphen sind die Äquivalenzklassen bezüglich der Relation sind gegenseitig ” erreichbar“. A.1 Graphen TU Bergakademie Freiberg, WS 2005/06 103 Algorithmen und Datenstrukturen A.2 Bäume Einen azyklischen, ungerichteten Graph nennt man einen Wald; ist ein solcher Graph noch zusammenhängend, nennt man ihn einen Baum. Ein Wurzelbaum ist ein Baum mit einem ausgezeichneten Knoten, der Wurzel des Baumes genannt wird. Sei x ein Knoten in einem Wurzelbaum T mit Wurzel r. Jeder Knoten y auf dem Weg von r nach x heißt Vorgänger von x. Ist y Vorgänger von x, so nennt man x einen Nachfolger von y. (Jeder Knoten ist Vorgänger und Nachfolger von sich selbst.) Von x verschiedene Vorgänger/Nachfolger von x heißen echte Vorgänger bzw. echte Nachfolger. Der an x wurzelnde Teilbaum ist der Baum aus Nachfolgern von x mit Wurzel x. A.2 Bäume TU Bergakademie Freiberg, WS 2005/06 104 Algorithmen und Datenstrukturen Wald A.2 Bäume Baum weder noch TU Bergakademie Freiberg, WS 2005/06 105 Algorithmen und Datenstrukturen Ist (y, x) die letzte Kante auf dem Weg von der Wurzel nach x, so nennt man y den Vater von x, und x den Sohn von y. Die Wurzel ist der einzige Knoten in einem Wurzelbaum ohne Vater. Zwei Knoten mit demselben Vater heißen Geschwister. Ein Knoten ohne Sohn heißt Blatt. Die Weglänge von der Wurzel zum Knoten x heißt dessen Tiefe. Die Höhe eines Knotens x in einem Baum ist die Anzahl Kanten im längsten einfachen absteigenden Weg von x zu einem Blatt. Die Höhe eines Baumes ist die seiner Wurzel. Ein Ordnungsbaum ist ein Wurzelbaum, bei dem die Söhne jedes Knotens geordnet sind. A.2 Bäume TU Bergakademie Freiberg, WS 2005/06 106 Algorithmen und Datenstrukturen 7 3 Höhe = 4 8 6 Tiefe = 0 10 12 4 11 5 9 Tiefe = 1 2 Tiefe = 2 Tiefe = 3 Tiefe = 4 Beispiel eines Ordnungsbaumes A.2 Bäume TU Bergakademie Freiberg, WS 2005/06 107 Algorithmen und Datenstrukturen Ein Binärbaum ist eine auf einer endlichen Knotenzahl definierte Struktur, welche • entweder keine Knoten enthält, oder • aus drei disjunkten Knotenmengen besteht: einem Wurzelknoten, einem linker Teilbaum genannten Binärbaum und einem rechter Teilbaum genannter Binärbaum. 3 3 4 1 6 5 7 2 7 2 4 1 5 6 Beispiel zweier (verschiedener) Binärbäume A.2 Bäume TU Bergakademie Freiberg, WS 2005/06