Для підрахунку багатьох типів комбінаторних об'єктів, таких як дерева в даному випадку, є потужні математичні засоби (символічний метод), які дозволяють механічно отримати такі рахунки з опису, як будуються комбінаторні об'єкти. Це передбачає генерування функцій.
Відмінна довідка - аналітична комбінаторика покійних Філіпа Флайолета та Роберта Седжевіка. Він доступний за посиланням вище.
Книга покійного Герберта Вілфа, що генерує функціоналогію, є ще одним безкоштовним джерелом.
І звичайно, конкретна математика GKP - скарбниця.
Для двійкових дерев це виглядає так: Спочатку потрібно чітке визначення дерева.
Бінарне дерево - це вкорінене дерево, в якому кожен нелистовий вузол має ступінь 2 точно.
Далі ми маємо домовитись про те, що ми хочемо назвати розміром дерева.
Зліва всі вузли рівні. В середині розрізняємо листя і не листя. Праворуч у нас є обрізане двійкове дерево, куди було видалено листя. Зауважте, що у нього є одинарні гілки двох типів (ліві та праві)!
Тепер ми повинні отримати опис того, як будуються ці комбінаторні об’єкти. У випадку бінарних дерев можливе рекурсивне розкладання .
Нехай - сукупність усіх бінарних дерев першого типу, тоді ми символічно маємо:
A
Він звучить так: "Об'єктом класу двійкових дерев є або вузол, або вузол, за яким слідують два двійкові дерева". Це можна записати як рівняння множин:
A={∙}∪({∙}×A×A)
Вводячи формуючу функцію яка перераховує цей клас комбінаторних об'єктів, ми можемо перевести задане рівняння в рівняння, що включає функцію, що генерує.A(z)
A(z)=z+zA2(z)
Наш вибір обробляти всі вузли однаково і приймати кількість вузлів на дереві як поняття його розміру виражається "позначенням" вузлів змінною .z
Тепер ми можемо вирішити квадратичне рівняння для і отримати, як завжди, два рішення, явну закриту форму формуючої функції:zA2(z)−A(z)+z=0A(z)
A(z)=1±1−4z2−−−−−−√2z
Тепер нам просто потрібна (узагальнена) теорія біномів Ньютона:
(1+x)a=∑k=0∞(ak)xk
з і для розширення закритої форми генеруючої функції назад у ряд потужності. Ми робимо це тому, що коефіцієнт при - це якраз кількість комбінаторних об'єктів розміром , як правило, записується як . Але тут наше уявлення про «розмір» дерева змушує шукати коефіцієнт при . Трохи жонглюючи двочленами та фабриками, ми отримуємо:a=1/2x=−4z2znn[zn]A(z)z2n+1
[z2n+1]A(z)=1n+1(2nn).
Якщо ми почнемо з другого поняття розміру, рекурсивне розкладання:
Ми отримуємо інший клас комбінаторних об'єктів . У ньому написано: "Об'єктом класу двійкових дерев є або лист, або внутрішній вузол, за яким слідують два двійкові дерева".B
Ми можемо використовувати той самий підхід і перетворити у . Тільки цього разу змінна позначає лише внутрішні вузли, а не листя, оскільки визначення "розмір" тут різне. Ми також отримуємо різні функції генерації:B={□}∪({∙}×B×B)B=1+zB2(z)z
B(z)=1−1−4z−−−−−√2z
Вилучення коефіцієнта врожайності
[zn]B(z)=1n+1(2nn).
Класи та погоджуються підрахунками, оскільки двійкове дерево з внутрішніми вузлами має листя, таким чином, вузлів.ABnn+12n+1
В останньому випадку ми повинні працювати трохи важче:
що є описом не порожніх обрізаних бінарних спроб. Розширюємо це на
CD={∙}∪({∙}×C)∪({∙}×C)∪({∙}×C×C)={ϵ}∪({∙}×C×C)
і перепишіть його за допомогою генеруючих функцій
C(z)D(z)=z+2zC(z)+zC2(z)=1+zC2(z)
розв’яжіть квадратичні рівняння
C(z)D(z)=1−2z−1−4z−−−−−√2z=1−1−4z−−−−−√2z
і знову
[zn]C(z)=1n+1(2nn)n≥1[zn]D(z)=1n+1(2nn)n≥0
Зауважте, що каталонська функція генерування є
E(z)=1−1−4z−−−−−√2
він перераховує клас загальних дерев . Тобто дерева без обмеження ступеня вузла.
E={∙}×SEQ(E)
Він звучить так: "Об'єктом класу загальних дерев є вузол, за яким слідує можлива порожня послідовність загальних дерев."
E(z)=z1−E(z)
З формулою Лагранжа-Бурманом Inversion ми отримуємо
[zn]E(z)=1n+1(2nn)
Тож ми довели, що існує стільки загальних дерев, скільки є двійкових дерев. Недарма між загальним та бінарним деревами існує біекція. Біекція відома як відповідність обертання (пояснено в кінці пов'язаної статті), що дозволяє нам зберігати кожне загальне дерево як двійкове дерево.
Зауважимо, що якщо ми не розмежимо лівий і правий брат у класі ми отримаємо ще один клас дерев :CT
одинарні бінарні дерева.
Вони також мають функцію генерування
проте їх коефіцієнт різний. Ви отримуєте числа Моцкіна
T={∙}×SEQ≤2(T)
T(z)=1−z−1−2z−3z2−−−−−−−−−−√2z
[zn]T(z)=1n∑k(nk)(n−kk−1).
О, і якщо вам не подобається генерувати функції, є і багато інших доказів. Дивіться тут , є одне, де ви можете використовувати кодування бінарних дерев як слова Dyck і отримувати повтор із їх рекурсивного визначення. Тоді вирішення цього повторення дає і відповідь. Однак символічний метод рятує вас, перш за все, від повторення, оскільки він працює безпосередньо з кресленнями об'єктів комбінаторів.