Graphentheoretische Zählungen
Zur Illustration der Mächtigkeitsberechnung betrachten wir zwei exemplarische Fragen der Graphentheorie.
1. Zählen von Kantenzügen
Wir fragen:
Wie viele Kantenzüge der Länge m gibt es zwischen zwei Ecken eines Graphen?
Diese auf den ersten Blick schwierige Frage lässt sich überraschend einfach beantworten. Wir betrachten hierzu einen Graphen G = (E, K) mit E = { 1, …, n }. Für alle m ≥ 0 definieren wir eine (n × n)-Matrix Cm durch
Cm(i, j) = |{ Z | Z ist ein Kantenzug der Länge m von i nach j in G }|.
Es gilt
C0 = En mit der Einheitsmatrix En,
C1 = A mit der Adjazenz-Matrix A von G.
Sei nun m ≥ 1, und seien i, j ∈ E. Zur Berechnung von Cm + 1(i, j) zerlegen wir die Menge aller Kantenzüge von i nach j der Länge m + 1 in disjunkte Mengen gemäß der vorletzten besuchten Ecke. Es gilt:
(a) | Jeder Kantenzug von i nach j der Länge m + 1 hat eine vorletzte besuchte Ecke k. |
(b) | Jeder Kantenzug der Länge m von i nach k kann genau dann zu einem Kantenzug von i nach j der Länge m + 1 fortgesetzt werden, wenn kj eine Kante des Graphen ist, d. h. wenn A(k, j) = 1. |
Damit erhalten wir die rekursive Beziehung
Cm + 1(i, j) = Cm(i, 1) A(1, j) + … + Cm(i, n) A(n, j) für alle i, j und alle m ≥ 0.
Nach der Definition „Zeile mal Spalte“ der Matrizen-Multiplikation gilt also
Cm + 1 = Cm A,
woraus sich induktiv ergibt, dass Cm = Am für alle m ≥ 0. Die Potenzen der Adjazenz-Matrix zählen also Kantenzüge. Genauer zeigen unsere Überlegungen:
Satz (Zahl der Kantenzüge, Abstandsberechnung)
Sei G = (E, K) ein Graph mit der Eckenmenge E = { 1, …, n }, und sei A die Adjazenz-Matrix von G. Weiter seien i, j ∈ E und m ≥ 0. Dann ist Am(i, j) die Anzahl der Kantenzüge in G von i nach j der Länge m. Speziell ist j erreichbar von i in G, wenn Am(i, j) ≠ 0 für ein m. In diesem Fall ist
d(i, j) = „das kleinste m mit Am(i, j) ≠ 0“.
2. Zählen von Bäumen
Wir fragen:
Wie viele graphentheoretische Bäume mit n Ecken gibt es?
Für n ≥ 1 sei Tn die Menge der Bäume mit der Eckenmenge { 1, …, n }. Zunächst hat T1 genau ein Element. Eine konkrete Aufzählung aller Bäume ergibt
|T2| = 1 = 20, |T3| = 3 = 31, |T4| = 16 = 42.
Die 16 Bäume mit den Ecken 1, 2, 3, 4
Wir vermuten:
(+) |Tn| = nn − 2 für alle n ≥ 2.
Gefunden und bewiesen wurde die Formel (+) zuerst von Arthur Cayley (1854). Ein induktiver Beweis ist möglich, aber nicht trivial. Eine bestechende Alternative ist ein auf Heinz Prüfer (1918) zurückgehender Beweis, der für alle n ≥ 2 eine konkrete Bijektion Pr zwischen Tn und der Menge
Cn = { 1, …, n }n − 2
aller Tupel in { 1, …, n } der Länge n − 2 konstruiert. Wir können das einem Baum G zugeordnete Tupel Pr(G) = (a1, …, an − 2) ∈ Cn als Kode des Baumes ansehen, aus dem sich der Baum rekonstruieren lässt. Diese Kodes sind als Prüfer-Kodes bekannt.
Erstellung des Prüfer-Kodes eines Baumes
Sei n ≥ 2, und sei G ∈ Tn. Wir definieren rekursiv Teilbäume G1, …, Gn − 2 von G (durch schrittweises Entfernen von Ecken) und den Prüfer-Kode Pr(G) = (a1, …, an − 2) von G wie folgt.
Zunächst sei G1 = G.
Ist Gi konstruiert, so sei a die kleinste Ecke von Gi mit Grad 1, d. h. a ist das erste Blatt von Gi. Weiter sei b der eindeutige Nachbar von a in Gi. Dann setzen wir
ai = b, Gi + 1 = Gi − { a } (Streichen der Ecke a).
Rekonstruktion des Baumes aus seinem Prüfer-Kode
Sei Pr(G) = (a1, …, an − 2) der Prüfer-Kode des Baumes G = (E, K). Wir definieren eine Folge (b1, …, bn − 2) rekursiv wie folgt:
bi = „das kleinste i ∈ { 1, …, n } mit i ≠ b1, …, bi − 1, ai, … an“.
Das Ergebnis der Berechnung ist die Kantenmenge
{ ai bi | 1 ≤ i ≤ n − 2 } ∪ { i*j* },
wobei i*, j* die beiden in b fehlenden Ecken von G sind.
Beispiel
Wir betrachten den folgenden Baum G = (E, K) mit den Ecken { 1, …, 8 }:
Das 6 mal wiederholte Streichen der kleinsten Blätter ergibt die Blattfolge (2, 3, 4, 7, 1, 6) und den Prüfer-Kode
Pr(G) = (1, 1, 5, 1, 6, 5).
Die Rekonstruktion (für die nur Pr(G) verwendet wird) ergibt die b-Folge
(2, 3, 4, 7, 1, 6)
und reproduziert damit die Blattfolge. Es ergeben sich die Kanten
{ ai bi | i = 1, …, 6 } ∪ { i*j* } = { 12, 13, 54, 17, 61, 56 } ∪ { 58 } = K.
Insgesamt ergibt sich (Übung):
Satz (Satz von Cayley-Prüfer)
Sei n ≥ 2. Dann ist |Tn| = nn − 2. Genauer ist die Abbildung Pr : Tn → Cn, die jedem Baum G ∈ Tn seinen Prüfer-Kode Pr(G) zuordnet, bijektiv. Ist G ∈ Tn, so ist die Rekonstruktionsfolge (b1, …, bn − 2) die Folge der Blätter, die bei der rekursiven Erstellung des Kodes Pr(G) gestrichen wurden.