Algorithmen und Datenstrukturen 96 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. 1 2 3 4 5 6 Gerichteter Graph G 1 = (V, E 1 ) mit V = {1, 2, 3, 4, 5, 6} E 1 = {(1, 2), (2, 2), (2, 4), (2, 5), (4, 1), (4, 5), (5, 4), (6, 3)} A Graphen und Bäume TU Bergakademie Freiberg, WS 2005/06
Algorithmen und Datenstrukturen 97 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 v. 1 2 3 Ungerichteter Graph G 2 = (V, E 2 ) mit V = {1, 2, 3, 4, 5, 6} E 2 = {(1, 2), (1, 5), (2, 5), (3, 6)} 4 5 6 Knoten 4 ist isoliert. A.1 Graphen TU Bergakademie Freiberg, WS 2005/06
Algorithmen und Datenstrukturen 98 Ist (u, v) Kante eines gerichteten Graphen, so sagt man (u, v) ist inzident von Knoten u und inzident nach Knoten v. (Im Graphen G 1 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 G 2 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 G 1 und G 2 ist 2 adjazent zu 1. Aber 1 ist nicht adjazent zu 2 in G 1.) A.1 Graphen TU Bergakademie Freiberg, WS 2005/06
Algorithmen und Datenstrukturen 99 Der Grad eines Knoten in einem ungerichteten Graphen ist die Anzahl der mit diesem Knoten inzidenten Kanten. (Knoten 2 in G 2 besitzt den Grad 2.) Ein Knoten mit Grad 0 heißt isoliert. (Knoten 4 in G 2 ) 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 G 1 besitzt Eingangsgrad 2, Ausgangsgrad 3, somit Grad 5.) A.1 Graphen TU Bergakademie Freiberg, WS 2005/06
Algorithmen und Datenstrukturen 100 Ein Weg der Länge k von Knoten u nach Knoten u in einem Graphen G = (E, V ) bezeichnet eine Folge v 0, v 1,..., v k mit u = v 0, u = v k sowie (v j 1, v j ) E für alle j = 1,..., k. Die Länge des Weges bezeichnet die Anzahl darin enthaltenen Kanten. Der Weg enthält die Knoten v 0,..., v k und die Kanten (v 0, v 1 ),..., (v k 1, v k ). Es existiert stets ein Weg der Länge Null von u nach u. Existiert ein Weg p von Knoten u nach Knoten u, so sagt man, u sei von u aus erreichbar, in Zeichen u p u. Ein Weg heißt einfach, wenn alle darin enthaltenen Knoten verschieden sind. (In G 1 ist 1, 2, 5, 4 ein einfacher Weg der Länge 3. Der Weg 2, 5, 4, 5 ist nicht einfach.) A.1 Graphen TU Bergakademie Freiberg, WS 2005/06
Algorithmen und Datenstrukturen 101 Ein Teilweg eines Weges p = v 0, v 1,..., v k ist eine zusammenhängende Teilfolge seiner Knoten, d.h. für 0 i j k ist v i, v i+1,..., v j ein Teilweg von p. In einem gerichteten Graphen bildet ein Weg p = v 0, v 1,..., v k der Länge k 1 einen Zykel, falls v 0 = v k. Ein Zykel heißt einfach falls v 1,..., v k paarweise verschieden sind. Eine Schleife ist ein Zykel der Länge Eins. Zwei Wege v 0, v 1,..., v k 1, v 0 und v 0, v 1,..., v k 1, v 0 stellen denselben Zykel dar, falls es j Z gibt sodass v i = v (i+j) mod k für i = 0, 1,..., k 1. (In G 2 bilden die Wege 1, 2, 4, 1, 2, 4, 1, 2 sowie 4, 1, 2, 4 denselben Zykel.) Ein Graph ohne Zykeln heißt azyklisch. A.1 Graphen TU Bergakademie Freiberg, WS 2005/06
Algorithmen und Datenstrukturen 102 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.(g 2 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
Algorithmen und Datenstrukturen 103 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
Algorithmen und Datenstrukturen 104 Wald Baum weder noch A.2 Bäume TU Bergakademie Freiberg, WS 2005/06
Algorithmen und Datenstrukturen 105 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
Algorithmen und Datenstrukturen 106 7 Tiefe = 0 3 10 4 Tiefe = 1 Höhe = 4 8 12 11 2 Tiefe = 2 6 5 Tiefe = 3 9 Tiefe = 4 Beispiel eines Ordnungsbaumes A.2 Bäume TU Bergakademie Freiberg, WS 2005/06
Algorithmen und Datenstrukturen 107 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 2 7 2 7 4 1 5 4 1 5 6 6 Beispiel zweier (verschiedener) Binärbäume A.2 Bäume TU Bergakademie Freiberg, WS 2005/06