(Ich bin ein Student mit mathematischem Hintergrund und möchte wissen, wie man die Anzahl einer bestimmten Art von Binärbäumen zählt.)
Mit Blick auf Wikipedia - Seite für Binary Trees , habe ich diese Behauptung aufgefallen , dass die Zahl der Wurzeln Binärbäumen der Größe wäre diese katalanische Nummer :
Aber ich verstehe nicht, wie ich selbst zu einem solchen Ergebnis kommen könnte? Gibt es eine Methode, um dieses Ergebnis zu finden?
Was ist nun, wenn die Reihenfolge der Unterbäume (welche ist links, welche ist rechts) nicht berücksichtigt wird? Aus meiner Sicht denke ich beispielsweise, dass diese beiden Bäume gleich sind:
/\ /\
/\ /\
Wäre es möglich, eine ähnliche Methode anzuwenden, um zu zählen, wie viele dieser Objekte genau Knoten haben?
combinatorics
binary-trees
discrete-mathematics
Stéphane Gimenez
quelle
quelle
Antworten:
Zum Zählen vieler Arten von kombinatorischen Objekten, wie in diesem Fall Bäume, gibt es leistungsstarke mathematische Werkzeuge (die symbolische Methode), mit denen Sie solche Zählungen maschinell aus einer Beschreibung ableiten können, wie die kombinatorischen Objekte aufgebaut sind. Dabei werden Funktionen generiert.
Eine ausgezeichnete Referenz ist Analytic Combinatorics von Philipe Flajolet und Robert Sedgewick. Es ist über den obigen Link verfügbar.
Der verstorbene Herbert Wilf Buch generatingfunctionology ist eine andere freie Hand.
Und natürlich ist die Konkrete Mathematik von GKP eine Fundgrube.
Für binäre Bäume gilt: Zuerst müssen Sie den Baum klar definieren.
Ein binärer Baum ist ein verwurzelter Baum, in dem jeder Nicht-Blattknoten genau den Grad 2 hat.
Als nächstes müssen wir uns einigen, was wir die Größe eines Baumes nennen wollen .
Links sind alle Knoten gleich. In der Mitte unterscheiden wir die Blätter und Nichtblätter. Rechts haben wir einen beschnittenen Binärbaum, in dem die Blätter entfernt wurden. Beachten Sie, dass es unäre Zweige von zwei Typen gibt (links und rechts)!
Nun müssen wir eine Beschreibung ableiten, wie diese kombinatorischen Objekte aufgebaut sind. Bei binären Bäumen ist eine rekursive Zerlegung möglich.
Sei die Menge aller binären Bäume des ersten Typs, dann haben wir symbolisch:A
Es lautet wie folgt: „Ein Objekt der Klasse der Binärbäume ist entweder ein Knoten oder ein Knoten, auf den zwei Binärbäume folgen.“ Dies kann als Mengengleichung geschrieben werden:
Durch die Einführung der Erzeugungsfunktion , die diese Klasse von kombinatorischen Objekten auflistet, können wir die Mengengleichung in eine Gleichung mit der Erzeugungsfunktion übersetzen.A(z)
Unsere Wahl, alle Knoten gleich zu behandeln und die Anzahl der Knoten im Baum als Begriff ihrer Größe zu nehmen, drückt sich durch "Markieren" der Knoten mit der Variablen .z
Wir können nun die quadratische Gleichung für lösen und erhalten wie üblich zwei Lösungen, die explizit geschlossene Form der Erzeugungsfunktion:zA2(z)−A(z)+z=0 A(z)
Jetzt brauchen wir einfach Newtons (verallgemeinerten) Binomialsatz:
mit und erweitern Sie die geschlossene Form der Erzeugungsfunktion zurück in eine Potenzreihe. Wir tun dies, weil der Koeffizient bei nur die Anzahl der kombinatorischen Objekte der Größe , die typischerweise als . Aber hier zwingt uns unser Begriff der „Größe“ des Baumes, nach dem Koeffizienten bei zu suchen . Nach einigem Jonglieren mit Binomialzahlen und Fakultätszahlen erhalten wir:a=1/2 x=−4z2 zn n [zn]A(z) z2n+1
Wenn wir mit dem zweiten Begriff der Größe beginnen, ist die rekursive Zerlegung:
Wir erhalten eine andere Klasse von kombinatorischen Objekten . Es lautet: "Ein Objekt der Klasse der Binärbäume ist entweder ein Blatt oder ein Zwischenknoten, gefolgt von zwei Binärbäumen."B
Wir können den gleichen Ansatz anwenden und zu . Nur diesmal markiert die Variable nur die internen Knoten, nicht die Blätter, da hier die Definition „die Größe“ unterschiedlich ist. Wir bekommen auch eine andere Erzeugungsfunktion:B={□}∪({∙}×B×B) B=1+zB2(z) z
Das Extrahieren des Koeffizienten ergibt
Die Klassen und stimmen in der Anzahl überein, da ein Binärbaum mit internen Knoten Blätter hat, also insgesamt Knoten.A B n n+1 2n+1
Im letzten Fall müssen wir etwas härter arbeiten:
Dies ist eine Beschreibung nicht leerer beschnittener Binärversuche. Wir erweitern dies auf
und mit generierenden Funktionen neu schreiben
Löse die quadratischen Gleichungen
und nochmal holen
Beachten Sie, dass die katalanische Erzeugungsfunktion ist
es zählt die Klasse der allgemeinen Bäume auf . Das sind die Bäume ohne Einschränkung des Knotengrades.
Es lautet wie folgt: "Ein Objekt der Klasse der allgemeinen Bäume ist ein Knoten, dem eine mögliche leere Folge von allgemeinen Bäumen folgt."
Mit der Lagrange-Bürmann Inversion Formula erhalten wir
Wir haben also bewiesen, dass es so viele allgemeine Bäume gibt wie es binäre Bäume gibt. Kein Wunder, dass zwischen dem allgemeinen und dem binären Baum ein Unterschied besteht. Die Bijektion ist als Rotationskorrespondenz bekannt (erklärt am Ende des verlinkten Artikels), die es uns ermöglicht, jeden allgemeinen Baum als binären Baum zu speichern.
Beachten Sie, dass wir, wenn wir das linke und das rechte Geschwister in class nicht unterscheiden, eine weitere Klasse von Bäumen :C T
die unären binären Bäume. Sie haben auch eine Erzeugungsfunktion jedoch ist ihr Koeffizient unterschiedlich. Sie erhalten die Motzkin-Zahlen
Oh, und wenn Sie keine Funktionen generieren möchten, gibt es auch viele andere Beweise. Sehen Sie hier , es gibt einen Punkt, an dem Sie die Kodierung von Binärbäumen als Dyck-Wörter verwenden und eine Wiederholung aus ihrer rekursiven Definition ableiten können. Wenn Sie dann diese Wiederholung lösen, erhalten Sie auch die Antwort. Die symbolische Methode erspart Ihnen jedoch in erster Linie die Wiederholung, da sie direkt mit den Blaupausen der kombinatorischen Objekte zusammenarbeitet.
quelle
Das Generieren von Funktionen ist ein sehr mächtiger und sehr nützlicher Zauberstab. Die folgende Lösung zur ersten Frage (warum gibt es Bäume) ist etwas weniger magisch. Daher süß.Cn
Beispiel. Um einen Baum zu produzieren Knoten wir mit einer Sequenz zu starten , in der auftreten - mal, und auftritt mal. Zum Beispiel . Wählen Sie unter den Präfixen mit der kleinsten (und möglicherweise negativen) Summe die längste aus. in diesem Fall . Nehmen Sie dieses Präfix von Anfang an und setzen Sie es am Ende. In diesem Fall erhalten wir . Ändern Sie nun in und in ; in diesem Fall bekommen wir . Entfernen Sie ein vom Anfang und fügen Sie ein5 +1 5+1 −1 5 +−++−+−−++− +−++−+−− ++−+−++−+−− + T − E T E Am Ende; in diesem Fall bekommen wir (5+65) ±1 5+6
TTETETTETEE
TETETTETEEE
. Dies ist eine Beschreibung des BaumesT(E,T(E,T(T(E,T(E,E)),E)))
. Nachfolgend finden Sie eine Erklärung, warum dies eine Bijektion ist. Sobald Sie davon überzeugt sind, ist das Zählen einfach. Es gibt Sequenzen von , dann haben wir durch weil wir eine der möglichen zyklischen Permutationen gewählt haben.Erste Biktion. Eine typische Definition für Bäume in ML istn n n
type tree = T of tree * tree | E
; Das heißt, ein Baum hat entweder zwei (geordnete) Teilbäume oder er ist leer. Hier ist , wie Bäume sind so aufgebaut:T(T(E,E),T(T(E,E),T(E,E)))
. Flusen fallen lassen, wir können einfach schreibenTTEETTEETEE
. Alle diese Beschreibungen werden mit einem EndeE
, so dass es überflüssig ist:TTEETTEETE
. (Beachten Sie, dass der leere Baum jetzt der leeren Zeichenfolge entspricht.) Diese Zeichenfolgen haben die Eigenschaft, dass jedes Präfix mindestens so viele Ts wie Es hat, und insgesamt haben sie Ts und Es, wobei die Anzahl der Knoten von ist der Baum.Zweite Bijektion. Wir ersetzen nun T durch +1 und E durch -1. Wir betrachten also Sequenzen mit Werten +1, mit Werten -1 und mit den Summen aller Präfixe .n n ≥0
Dritte Bijektion. Wir ändern nun die Vorgabe für Präfixe ein wenig: Wir fordern, dass die Summe aller nicht leeren Präfixe . Damit dies möglich ist, lassen wir Werte +1 und Werte -1. (Andernfalls wäre die Summe der gesamten Zeichenfolge 0 und würde die Bedingung für Präfixe nicht erfüllen.) Diese Sequenzen müssen mit +1 beginnen. Sie sind also wirklich die gleichen wie zuvor, außer dass sie am Anfang eine +1 haben.>0 n+1 n
Raney Eigentum. Vergessen Jetzt ist unsere Sequenzen für einen Moment und betrachten eine endliche Folge von ganzen Zahlen , , , deren Summe 1. Wenn alle nicht-leeren Präfixe positive Summen haben, dann keine zyklische Permutation dieser Sequenz hat die gleiche Eigenschaft. Warum? Angenommen, es gibt ein , bei dem auch alle nicht leeren Präfixe positiv sind. Dann (Eigenschaft der Sequenz ab ) und (Eigenschaft der Sequenz ab ); daherx1 … xm k≠1 xk,…,xm,x1,…,xk−1 x1+⋯+xk−1≥1 x1 xk+⋯+xm≥1 xk x1+⋯+xm≥2 Dies widerspricht der Annahme, dass die Summe für die gesamte Sequenz 1 ist.
Darüber hinaus gibt es bei einer Sequenz mit der Summe 1 immer eine zyklische Permutation, die bewirkt, dass alle nicht leeren Präfixe eine positive Summe haben. (Dies gilt auch für reelle Zahlen.)
Fazit. Zählen wir nun die Folgen von +1 und -1, die sich in einer Bijektion mit Bäumen befinden. Aus Zahlen müssen wir auswählen , die gleich +1 sind, die anderen werden -1 sein. Es gibt Möglichkeiten, dies zu tun. Aber nur in - Sequenzen bisher gezählt hat positive Präfixe. Die Anzahl der verwurzelten, geordneten Binärbäume ist also:2n+1 n+1 (2n+1n+1) 1 2n+1
quelle