Подсчет деревьев — различия между версиями
Cuciev (обсуждение | вклад) (Marked trees: definition added) |
м (rollbackEdits.php mass rollback) |
||
(не показаны 23 промежуточные версии 3 участников) | |||
Строка 1: | Строка 1: | ||
− | |||
− | |||
Описание всех используемых далее комбинаторных объектов можно найти в статье [[Конструирование комбинаторных объектов и их подсчёт|"конструирование комбинаторных объектов и их подсчёт"]]. | Описание всех используемых далее комбинаторных объектов можно найти в статье [[Конструирование комбинаторных объектов и их подсчёт|"конструирование комбинаторных объектов и их подсчёт"]]. | ||
= Непомеченные [[Дерево, эквивалентные определения|деревья]] = | = Непомеченные [[Дерево, эквивалентные определения|деревья]] = | ||
Строка 6: | Строка 4: | ||
{{Утверждение | {{Утверждение | ||
|id=unmarked_bin | |id=unmarked_bin | ||
− | |statement=Число непомеченных бинарных деревьев | + | |statement=Число непомеченных бинарных деревьев <tex>T_n</tex> равно <tex>C_{n}</tex> (<tex dpi="150">n</tex>-ое [[Числа Каталана|число Каталана]]). |
|proof= | |proof= | ||
Устройство бинарного дерева в терминах комбинаторных классов выражается следующим образом <tex>T = \varepsilon + z\times T\times T</tex>.<br> | Устройство бинарного дерева в терминах комбинаторных классов выражается следующим образом <tex>T = \varepsilon + z\times T\times T</tex>.<br> | ||
Строка 12: | Строка 10: | ||
Решением данного уравнения будет <tex>T(s) = \frac{1 - \sqrt{1 - 4s}}{2s}</tex>. | Решением данного уравнения будет <tex>T(s) = \frac{1 - \sqrt{1 - 4s}}{2s}</tex>. | ||
Тогда: | Тогда: | ||
− | :<tex dpi="150">T_{n}= | + | :<tex dpi="150">T_{n} = Pair(T, \; T_{n-1}) = \sum\limits_{i=0}^{n-1}T_{i}T_{n-i-1}=C_{n}</tex>, где <tex dpi="150">C_{n}</tex> {{---}} <tex dpi="150">n</tex>-ое [[Числа Каталана|число Каталана]]. |
}} | }} | ||
Строка 28: | Строка 26: | ||
:<tex dpi="150">S_{n}=\sum\limits_{i=1}^{n} T_{i} S_{n-i}=\sum\limits_{i=1}^{n} S_{i-1} S_{n-i}=\sum\limits_{i=0}^{n-1} S_{i} S_{n-i-1}=C_{n}</tex>, где <tex dpi="150">C_{n}</tex> {{---}} <tex dpi="150">n</tex>-ое [[Числа Каталана|число Каталана]]. | :<tex dpi="150">S_{n}=\sum\limits_{i=1}^{n} T_{i} S_{n-i}=\sum\limits_{i=1}^{n} S_{i-1} S_{n-i}=\sum\limits_{i=0}^{n-1} S_{i} S_{n-i-1}=C_{n}</tex>, где <tex dpi="150">C_{n}</tex> {{---}} <tex dpi="150">n</tex>-ое [[Числа Каталана|число Каталана]]. | ||
− | + | <gallery mode="packed-hover" widths=400px heights=300px> | |
− | + | Image:Sequence_of_rooted_Trees.png|''Последовательность корневых деревьев'' | |
+ | Image:Ordered_Rooted_Trees.png|''Последовательность помеченных корневых деревьев'' | ||
+ | </gallery> | ||
+ | |||
== Подвешенные непомеченные деревья без порядка на детях == | == Подвешенные непомеченные деревья без порядка на детях == | ||
Пусть <tex dpi="130">T_{n}</tex> {{---}} количество таких деревьев с <tex dpi="130">n</tex> вершинами. <tex dpi="130">F=MSet(T)</tex> {{---}} множество всех лесов из данных деревьев, так как лес можно интерпретировать как мультимножество из деревьев. <tex dpi="130">F_{n}=f_{n,n}</tex> {{---}} количество лесов с суммарным количество вершин <tex dpi="130">n</tex>. <tex dpi="130">f_{n, k}</tex> {{---}} количество таких лесов из <tex dpi="130">n</tex> вершин, что деревья в них содержат не более чем <tex dpi="130">k</tex> вершин. Чтобы получить дерево из <tex dpi="130">n</tex> вершин, достаточно взять <tex dpi="130">1</tex> вершину и подвесить к ней лес деревьев с суммарным количеством вершин <tex dpi="130">n-1</tex>. Тогда: | Пусть <tex dpi="130">T_{n}</tex> {{---}} количество таких деревьев с <tex dpi="130">n</tex> вершинами. <tex dpi="130">F=MSet(T)</tex> {{---}} множество всех лесов из данных деревьев, так как лес можно интерпретировать как мультимножество из деревьев. <tex dpi="130">F_{n}=f_{n,n}</tex> {{---}} количество лесов с суммарным количество вершин <tex dpi="130">n</tex>. <tex dpi="130">f_{n, k}</tex> {{---}} количество таких лесов из <tex dpi="130">n</tex> вершин, что деревья в них содержат не более чем <tex dpi="130">k</tex> вершин. Чтобы получить дерево из <tex dpi="130">n</tex> вершин, достаточно взять <tex dpi="130">1</tex> вершину и подвесить к ней лес деревьев с суммарным количеством вершин <tex dpi="130">n-1</tex>. Тогда: | ||
:<tex dpi="150">T_{n}=F_{n-1}</tex>. | :<tex dpi="150">T_{n}=F_{n-1}</tex>. | ||
:<tex dpi="150">F_{n}=f_{n, n}</tex>. | :<tex dpi="150">F_{n}=f_{n, n}</tex>. | ||
− | :<tex dpi="150"> | + | :<tex dpi="150">f_{n,k}=\sum\limits_{i=0}^{\lfloor \frac{n}{k} \rfloor} \binom{T_{k + i - 1}}{i} s_{n-ik, k-1}</tex>. |
Количество таких деревьев с <tex dpi="130">n</tex> вершинами образуют последовательность A000081<ref>[http://oeis.org/A000081 Number of unlabeled rooted trees with n node]</ref>. | Количество таких деревьев с <tex dpi="130">n</tex> вершинами образуют последовательность A000081<ref>[http://oeis.org/A000081 Number of unlabeled rooted trees with n node]</ref>. | ||
− | + | <gallery mode="packed-hover" widths=400px heights=300px> | |
− | + | Image:Forests.png|''Последовательность леса'' | |
+ | Image:Rooted_Trees.png|''Последовательность корневых деревьев'' | ||
+ | </gallery> | ||
= Помеченные деревья = | = Помеченные деревья = | ||
{{Определение | {{Определение | ||
|definition= | |definition= | ||
− | '''Помеченное дерево''' | + | '''Помеченное дерево''' c <tex>n</tex> вершинами - дерево c <tex>n</tex> вершинами, вершинам которого взаимно однозначно соответствуют числа от 1 до n. |
}} | }} | ||
Строка 56: | Строка 59: | ||
''Первый способ.'' | ''Первый способ.'' | ||
− | Так как между помеченными деревьями | + | : Так как между помеченными деревьями c <tex>n</tex> вершинами и последовательностями длины <tex>n - 2</tex> из чисел от <tex>1</tex> до <tex>n</tex> существует биекция ([[Коды Прюфера|Код Прюфера]]), то количество помеченных деревьев совпадает с количеством последовательностей длины <tex>n - 2</tex> из чисел от <tex>1</tex> до <tex>n = n^{n - 2}</tex>. |
''Второй способ.'' | ''Второй способ.'' | ||
− | С помощью [[Подсчет числа остовных деревьев с помощью матрицы Кирхгофа |матрицы Кирхгофа]] для полного графа на <tex>n</tex> вершинах. Число помеченных деревьев | + | : С помощью [[Подсчет числа остовных деревьев с помощью матрицы Кирхгофа |матрицы Кирхгофа]] для полного графа на <tex>n</tex> вершинах. Число помеченных деревьев c <tex>n</tex> вершинами, очевидно, равно числу остовов в полном графе <tex>K_n</tex>, которое есть <tex>n^{n-2}</tex> по следствию теоремы Кирхгофа. |
}} | }} | ||
{{Утверждение | {{Утверждение | ||
− | |statement=Число помеченных корневых деревьев с <tex>n</tex> вершинами есть <tex>T_n = n^{n - | + | |statement=Число помеченных корневых деревьев с <tex>n</tex> вершинами есть <tex>T_n = n^{n - 1}</tex>. |
|proof= | |proof= | ||
Данное утверждение является следствием [[#th_kelly|теоремы Кэли]].<br> | Данное утверждение является следствием [[#th_kelly|теоремы Кэли]].<br> | ||
Строка 84: | Строка 87: | ||
{{Утверждение | {{Утверждение | ||
|statement=Как и в непомеченном случае, структура объекта остается неизменной: <tex>T = U\times Set(T)</tex>.<br> | |statement=Как и в непомеченном случае, структура объекта остается неизменной: <tex>T = U\times Set(T)</tex>.<br> | ||
− | Производящая функция будет иметь вид: <tex>T(s) = s\cdot e^{T(s)}</tex> | + | Производящая функция будет иметь вид: <tex>T(s) = s\cdot e^{T(s)}</tex><br> |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
}} | }} | ||
+ | В предыдущем пункте порядок на детях однозначно задавал, как будут располагаться поддеревья, теперь же подсчёт оказывается сложнее: | ||
+ | [[File:Marked_trees_no_order_example.jpg|250px|left]] | ||
+ | <br> | ||
+ | <br> | ||
+ | В данном примере в А два представленных дерева {{---}} одинаковые, а в B {{---}} разные.<br> | ||
+ | Для <tex>T(s)</tex> нет однозначно выражаемой формулы. Однако, <tex>T_n</tex> можно получить, раскрыв экспоненту до <tex>n</tex>-ого члена, а именно <tex>e^{T(s)} = \sum\limits_{k = 0}^{n}\dfrac{(T(s))^k}{k!}</tex><br> | ||
+ | Более подробное объяснение происходящего можно посмотреть в лекции<ref>Станкевич А.С. Лекции по дискретной математике // Помеченные объекты и экспоненциальные ПФ, 2020. URL: https://youtu.be/6qQQj6G8-tA?t=4391</ref>. | ||
+ | <br> | ||
+ | <br> | ||
+ | <br> | ||
+ | <br> | ||
+ | <br> | ||
= См.также = | = См.также = | ||
+ | *[[Конструирование комбинаторных объектов и их подсчёт]] | ||
*[[Лемма Бёрнсайда и Теорема Пойа]] | *[[Лемма Бёрнсайда и Теорема Пойа]] | ||
*[[Числа Каталана]] | *[[Числа Каталана]] | ||
Строка 99: | Строка 109: | ||
= Литература = | = Литература = | ||
+ | |||
+ | [[Категория: Дискретная математика]] | ||
+ | [[Категория: Дискретная математика и алгоритмы]] | ||
+ | [[Категория: Комбинаторика]] | ||
+ | [[Категория: Подсчёт числа объектов]] | ||
+ | [[Категория: Комбинаторные объекты]] | ||
+ | [[Категория: Свойства комбинаторных объектов]] |
Текущая версия на 19:40, 4 сентября 2022
Описание всех используемых далее комбинаторных объектов можно найти в статье "конструирование комбинаторных объектов и их подсчёт".
Непомеченные деревья
Бинарные деревья
Утверждение: |
Число непомеченных бинарных деревьев число Каталана). равно ( -ое |
Устройство бинарного дерева в терминах комбинаторных классов выражается следующим образом
|
Утверждение: |
Производящая функция числа непомеченных полных бинарных деревьев: . |
Устройство бинарного дерева в терминах комбинаторных классов выражается следующим образом |
Подвешенные непомеченные деревьея с порядком на детях
Пусть
— количество таких деревьев с вершинами. — множество всех последовательностей из данных деревьев. — количество последовательностей с суммарным количество вершин . Чтобы получить дерево из вершин, достаточно взять вершину, и подвесить к ней последовательность деревьев с суммарным количеством вершин . Тогда:- .
- число Каталана. , где — -ое
Подвешенные непомеченные деревья без порядка на детях
Пусть
— количество таких деревьев с вершинами. — множество всех лесов из данных деревьев, так как лес можно интерпретировать как мультимножество из деревьев. — количество лесов с суммарным количество вершин . — количество таких лесов из вершин, что деревья в них содержат не более чем вершин. Чтобы получить дерево из вершин, достаточно взять вершину и подвесить к ней лес деревьев с суммарным количеством вершин . Тогда:- .
- .
- .
Количество таких деревьев с [1].
вершинами образуют последовательность A000081Помеченные деревья
Определение: |
Помеченное дерево c | вершинами - дерево c вершинами, вершинам которого взаимно однозначно соответствуют числа от 1 до n.
Теорема (Кэли): |
Число помеченных деревьев с вершинами равно . |
Доказательство: |
Можно доказать формулу двумя способами. Первый способ.
Второй способ.
|
Утверждение: |
Число помеченных корневых деревьев с вершинами есть . |
Данное утверждение является следствием теоремы Кэли. |
Подвешенные помеченные деревья с порядком на детях
Утверждение: |
Число помеченных корневых деревьев с вершинами с порядком на детях есть . |
Как и в непомеченном случае, структура объекта остается неизменной: Производящая функция будет иметь вид: |
Подвешенные помеченные деревья без порядка на детях
Утверждение: |
Как и в непомеченном случае, структура объекта остается неизменной: .Производящая функция будет иметь вид: |
В предыдущем пункте порядок на детях однозначно задавал, как будут располагаться поддеревья, теперь же подсчёт оказывается сложнее:
В данном примере в А два представленных дерева — одинаковые, а в B — разные.
Для нет однозначно выражаемой формулы. Однако, можно получить, раскрыв экспоненту до -ого члена, а именно
Более подробное объяснение происходящего можно посмотреть в лекции[2].
См.также
- Конструирование комбинаторных объектов и их подсчёт
- Лемма Бёрнсайда и Теорема Пойа
- Числа Каталана
- Генерация комбинаторных объектов в лексикографическом порядке
Литература
- ↑ Number of unlabeled rooted trees with n node
- ↑ Станкевич А.С. Лекции по дискретной математике // Помеченные объекты и экспоненциальные ПФ, 2020. URL: https://youtu.be/6qQQj6G8-tA?t=4391