(Jestem studentem z pewnym doświadczeniem matematycznym i chciałbym wiedzieć, jak policzyć liczbę określonego rodzaju drzew binarnych).
Patrząc na stronę Wikipedii dotyczącą drzew binarnych , zauważyłem to twierdzenie, że liczba zakorzenionych drzew binarnych o rozmiarze będzie katalońską : C_n = \ dfrac {1} {n + 1} {2n \ wybierz n}
Ale nie rozumiem, jak sam mogłem wymyślić taki wynik? Czy istnieje metoda znalezienia tego wyniku?
A co, jeśli kolejność pod-drzew (która jest pozostawiona, która jest właściwa) nie jest brana pod uwagę? Na przykład z mojego punktu widzenia uważam, że te dwa drzewa są takie same:
/\ /\
/\ /\
Czy można zastosować podobną metodę, aby policzyć, ile z tych obiektów ma dokładnie węzłów?
combinatorics
binary-trees
discrete-mathematics
Stéphane Gimenez
źródło
źródło
Odpowiedzi:
Do zliczania wielu rodzajów obiektów kombinatorycznych, takich jak drzewa w tym przypadku, istnieją potężne narzędzia matematyczne (metoda symboliczna), które pozwalają mechanicznie wyprowadzać takie liczby z opisu budowy obiektów kombinatorycznych. Obejmuje to generowanie funkcji.
Doskonałym odniesieniem jest Analytic Combinatorics autorstwa zmarłego Philipe Flajoleta i Roberta Sedgewicka. Jest dostępny z linku powyżej.
Funkcjonalność generowania książek zmarłego Herberta Wilfa jest kolejnym darmowym źródłem.
I oczywiście Matematyka konkretna GKP jest skarbnicą.
W przypadku drzew binarnych wygląda to tak: Najpierw potrzebujesz jasnej definicji drzewa.
Drzewo binarne jest drzewem zrootowanym, w którym każdy węzeł inny niż liść ma dokładnie stopień 2.
Następnie musimy uzgodnić, co chcemy nazwać rozmiarem drzewa.
Po lewej wszystkie węzły są równe. W środku rozróżniamy liście i liście niebędące liśćmi. Po prawej stronie mamy przycięte drzewo binarne, z którego usunięto liście. Zauważ, że ma jednoargumentowe gałęzie dwóch typów (lewy i prawy)!
Teraz musimy uzyskać opis budowy tych obiektów kombinatorycznych. W przypadku drzew binarnych możliwy jest rekurencyjny rozkład .
Niech będzie zbiorem wszystkich drzew binarnych pierwszego typu, a następnie symbolicznie mamy:A
Brzmi on następująco: „Obiektem klasy drzew binarnych jest albo węzeł, albo węzeł, po którym następują dwa drzewa binarne.” Można to zapisać jako równanie zbiorów:
Wprowadzając funkcję generującą która wylicza tę klasę obiektów kombinatorycznych, możemy przełożyć zestaw równań na równanie obejmujące funkcję generującą.A(z)
Nasz wybór równego traktowania wszystkich węzłów i przyjmowania liczby węzłów drzewa jako pojęcia jego wielkości wyraża się przez „oznaczenie” węzłów zmienną .z
Możemy teraz rozwiązać równanie kwadratowe dla i otrzymać, jak zwykle, dwa rozwiązania, jawnie zamkniętą postać funkcji generującej:zA2(z)−A(z)+z=0 A(z)
Teraz potrzebujemy po prostu (uogólnionego) twierdzenia dwumianowego Newtona:
przy i aby rozwinąć zamkniętą postać funkcji generującej z powrotem do szeregu mocy. Robimy to, ponieważ współczynnik przy jest tylko liczbą obiektów kombinatorycznych o rozmiarze , zwykle zapisywanych jako . Ale tutaj nasze pojęcie „wielkości” drzewa zmusza nas do szukania współczynnika z . Po odrobinie żonglowania dwumianami i silniami otrzymujemy:a=1/2 x=−4z2 zn n [zn]A(z) z2n+1
Jeśli zaczniemy od drugiego pojęcia wielkości, rekurencyjny rozkład jest następujący:
Otrzymujemy inną klasę obiektów kombinatorycznych . Brzmi on następująco: „Obiektem klasy drzew binarnych jest liść lub węzeł interal, po którym następują dwa drzewa binarne.”B
Możemy zastosować to samo podejście i zmienić w . Tylko tym razem zmienna oznacza tylko wewnętrzne węzły, a nie liście, ponieważ tutaj definicja „rozmiar” jest inna. Otrzymujemy również inną funkcję generowania:B={□}∪({∙}×B×B) B=1+zB2(z) z
Wyodrębnienie współczynników daje
Klasy i zgadzają się co do liczby, ponieważ drzewo binarne z węzłami wewnętrznymi ma liści, a więc łącznie węzłów.A B n n+1 2n+1
W ostatnim przypadku musimy trochę ciężej pracować:
który jest opisem niepustych przycinanych prób binarnych. Rozszerzamy to do
i przepisz go za pomocą funkcji generujących
rozwiązać równania kwadratowe
i jeszcze raz
Zauważ, że funkcja generowania katalońskiego to
wylicza klasę drzew ogólnych . To są drzewa bez ograniczeń stopnia węzła.
Brzmi on następująco: „Obiektem klasy ogólnych drzew jest węzeł, po którym następuje możliwa pusta sekwencja ogólnych drzew”.
Dzięki formule inwersyjnej Lagrange-Bürmann otrzymujemy
Udowodniliśmy więc, że jest tyle drzew ogólnych, ile drzew podwójnych. Nic dziwnego, że istnieje drzewo biologiczne między drzewami ogólnymi i binarnymi. Bijection jest znany jako korespondencja rotacyjna (wyjaśniona na końcu połączonego artykułu), która pozwala nam przechowywać dwa ogólne drzewa jako drzewa binarnego.
Zauważ, że jeśli nie rozróżnimy lewego i prawego rodzeństwa w klasie , otrzymamy kolejną klasę drzew :C T
jednorzędowe drzewa binarne. Mają też funkcję generującą jednak ich współczynnik jest inny. Otrzymasz liczby Motzkina
Aha, a jeśli nie lubisz generować funkcji, jest też wiele innych dowodów. Zobacz tutaj , jest taki, w którym można użyć kodowania drzew binarnych jako słów Dyck i uzyskać wznowienie z ich rekurencyjnej definicji. Następnie rozwiązanie tego problemu daje odpowiedź. Jednak metoda symboliczna ratuje Cię przed wymyśleniem nawrotu, ponieważ działa ona bezpośrednio z planami obiektów kombinatorycznych.
źródło
Funkcje generujące są bardzo potężną i bardzo przydatną magiczną różdżką. Poniższe rozwiązanie pierwszego pytania (dlaczego są drzewa ) jest nieco mniej magiczne. Stąd słodki.Cn
Przykład. Aby utworzyć drzewo węzłów, zaczynamy od sekwencji, w której występuje razy, a występuje razy. Na przykład . Spośród tych prefiksów o najmniejszej (i prawdopodobnie ujemnej) sumie wybierz najdłuższą; w tym przypadku . Weź ten prefiks od początku i umieść go na końcu; w tym przypadku otrzymujemy . Teraz zmień na i na ; w tym przypadku otrzymujemy . Usuń literę od początku, dodaj literę5 +1 5+1 −1 5 +−++−+−−++− +−++−+−− ++−+−++−+−− + T − E T E na końcu; w tym przypadku otrzymujemy (5+65) ±1 5+6
TTETETTETEE
TETETTETEEE
. To jest opis drzewaT(E,T(E,T(T(E,T(E,E)),E)))
. Poniżej znajduje się wyjaśnienie, dlaczego jest to bijection. Kiedy już będziesz o tym przekonany, liczenie jest łatwe. Istnieją z , następnie podzieliliśmy przez ponieważ wybraliśmy jedną z możliwych cyklicznych permutacji.Pierwsze wstrzyknięcie. Typowa definicja drzew w ML ton n n
type tree = T of tree * tree | E
; to znaczy, drzewo ma dwa (uporządkowane) poddrzewa lub jest puste. Oto w jaki sposób zbudowane są drzewa:T(T(E,E),T(T(E,E),T(E,E)))
. Upuszczając puch, możemy po prostu pisaćTTEETTEETEE
. Wszystkie te opisy zakończy ze związkiemE
, więc jest zbędny:TTEETTEETE
. (Zauważ, że puste drzewo odpowiada teraz pustemu ciągowi.) Ciągi te mają właściwość polegającą na tym, że każdy prefiks ma co najmniej tyle Ts co Es, aw sumie mają Ts i Es, gdzie jest liczbą węzłów drzewo.Drugi zastrzyk. Teraz zamieniamy T na +1, a E na -1. więc na sekwencje o wartości +1, o wartości -1 i sumach wszystkich prefiksów .n n ≥0
Trzeci zastrzyk. Teraz nieznacznie zmieniamy wymóg dotyczący prefiksów: Prosimy, aby suma każdego niepustego prefiksu wynosiła . Aby było to możliwe, pozwalamy wartości +1 i wartości -1. (W przeciwnym razie suma całego łańcucha wynosiłaby 0 i nie spełniałaby warunku dla prefiksów.) Sekwencje te muszą zaczynać się od +1. Tak więc naprawdę są takie same jak poprzednio, z tym wyjątkiem, że na początku utknęły +1.>0 n+1 n
Właściwość Raney. Teraz nasze sekwencje zapomnieć na chwilę i zastanowić się jakiś skończony ciąg liczb całkowitych , , którego suma wynosi 1. Jeżeli wszystkie niepuste prefiksy mieć pozytywne sumy, wtedy nie cykliczny permutacji tej sekwencji ma te same właściwości. Czemu? Załóżmy, że istnieje taki, że mają również wszystkie niepuste prefiksy dodatnie. Następnie (właściwość sekwencji zaczynając od ) i (właściwość sekwencji zaczynając od ); stądx1 … xm k≠1 xk,…,xm,x1,…,xk−1 x1+⋯+xk−1≥1 x1 xk+⋯+xm≥1 xk x1+⋯+xm≥2 , co jest sprzeczne z założeniem, że suma dla całej sekwencji wynosi 1.
Ponadto, biorąc pod uwagę pewną sekwencję z sumą 1, zawsze występuje permutacja cykliczna, która powoduje, że wszystkie niepuste prefiksy mają sumę dodatnią. (Dotyczy to nawet liczb rzeczywistych.)
Wniosek. Teraz policzmy sekwencje +1 i -1, które są bijection z drzewami. Z liczb musimy wybrać które są równe +1, pozostałe będą wynosić -1. Istnieją na to . Ale tylko w sekwencje zaliczane do tej pory ma pozytywny prefiksów. Tak więc liczba zakorzenionych, uporządkowanych drzew binarnych wynosi:2n+1 n+1 (2n+1n+1) 1 2n+1
źródło