Конструирование комбинаторных объектов и их подсчёт — различия между версиями
(moved trees to new article) |
(Добавлен раздел про количество связных графов. Гранкин Максим 1 курс M3137) |
||
Строка 71: | Строка 71: | ||
Пусть <tex dpi="130">A=\mathbb{N}</tex>, <tex dpi="130">P=PSet(A)</tex> {{---}} множество всех [[Нахождение количества разбиений числа на слагаемые|разбиений на слагаемые]], <tex dpi="130">W=\{1 \ldots 1\}</tex>. Тогда, | Пусть <tex dpi="130">A=\mathbb{N}</tex>, <tex dpi="130">P=PSet(A)</tex> {{---}} множество всех [[Нахождение количества разбиений числа на слагаемые|разбиений на слагаемые]], <tex dpi="130">W=\{1 \ldots 1\}</tex>. Тогда, | ||
:<tex dpi="150">P_{n}=p_{n, n}</tex>, где <tex tex dpi="150">p_{n, k}=\sum\limits_{i=0}^{\lfloor \frac{n}{k} \rfloor} p_{n-ik, k-1} = p_{n, k-1} + p_{n - k, k}</tex>, что, как несложно заметить, соответствует формуле, полученной методом [[Нахождение количества разбиений числа на слагаемые#Алгоритм за O(N^2)|динамического программирования]]. | :<tex dpi="150">P_{n}=p_{n, n}</tex>, где <tex tex dpi="150">p_{n, k}=\sum\limits_{i=0}^{\lfloor \frac{n}{k} \rfloor} p_{n-ik, k-1} = p_{n, k-1} + p_{n - k, k}</tex>, что, как несложно заметить, соответствует формуле, полученной методом [[Нахождение количества разбиений числа на слагаемые#Алгоритм за O(N^2)|динамического программирования]]. | ||
+ | |||
+ | ==Количество связных графов== | ||
+ | {{Определение | ||
+ | |definition= | ||
+ | <tex dpi="130">CONN_{n}</tex> - количество связных графов порядка <tex dpi="130">n</tex>. | ||
+ | }} | ||
+ | |||
+ | {{Лемма | ||
+ | |statement= | ||
+ | <tex dpi="130">G_{n}=2^{\binom{n}{2}}</tex>, {{---}} количество помеченных графов. | ||
+ | }} | ||
+ | |||
+ | {{Утверждение | ||
+ | |statement= | ||
+ | <tex dpi="150">CONN_{n}=G_{n} - \frac{1}{n}\sum\limits_{k=1}^{n-1}k\binom{n}{k}2^{\binom{n-k}{2}}CONN_{k}</tex>, {{---}} количество связных графов порядка n. | ||
+ | |proof= | ||
+ | Пусть <tex dpi="150">X</tex> {{---}} количество '''несвязных графов'''. Тогда количество '''связных графов''' равно <tex dpi="150">G_{n}-X</tex>. | ||
+ | Пусть <tex dpi="150">Y</tex> {{---}} количество '''количество корневых несвязных графов'''. Тогда количество '''несвязных графов''' равно <tex dpi="150">\dfrac{Y}{n}</tex>. | ||
+ | |||
+ | Заметим, что, так как граф является '''несвязным''', то в нём найдётся компонента связности, внутри которой лежит корневая вершина <ref>[[wikipedia:Rooted_graph | Wikipedia {{---}} Корневой граф]]</ref>, а остальной граф будет представлять собой одну или более компонент связности. | ||
+ | |||
+ | Переберем количество вершин в компоненте связности, содержащей корневую вершину. <tex dpi="150">(k=1\ldots n-1)</tex>. Для каждого <tex dpi="150">k</tex> посчитаем количество таких графов. | ||
+ | |||
+ | Во-первых, мы должны выбрать <tex dpi="150">k</tex> вершин из <tex dpi="150">n</tex>, то есть ответ умножается на <tex dpi="150">\binom{n}{k}</tex>. | ||
+ | |||
+ | Во-вторых, компонента с корневой вершиной дает множитель <tex dpi="150">CONN_{k}</tex>. | ||
+ | |||
+ | В-третьих, оставшийся граф из <tex dpi="150">n-k</tex> вершин является произвольным графом, поэтому он даёт множитель <tex dpi="150">G_{n-k}</tex>. | ||
+ | |||
+ | В-четвертых, количество способов выделить корневую вершину в компоненте связности из <tex dpi="150">k</tex> вершин равно <tex dpi="150">k</tex>. | ||
+ | |||
+ | Итого, при фиксированном <tex dpi="150">k</tex> количество корневых несвязных графов равно: | ||
+ | |||
+ | <tex dpi="150">k\binom{n}{k}CONN_{k}G_{n-k}</tex>. | ||
+ | |||
+ | Значит, количество несвязных графов с <tex dpi="150">n</tex> вершинами равно: | ||
+ | |||
+ | <tex dpi="150">\frac{1}{n}\sum\limits_{k=1}^{n-1}k\binom{n}{k}CONN_{k}G_{n-k}</tex> | ||
+ | |||
+ | Наконец, искомое количество связных графов равно: | ||
+ | |||
+ | <tex dpi="150">CONN_{n}=G_{n}-\frac{1}{n}\sum\limits_{k=1}^{n-1}k\binom{n}{k}CONN_{k}G_{n-k}</tex> | ||
+ | }} | ||
Версия 20:56, 18 июня 2020
Определение: |
, — множества из различных объектов. — количество объектов веса от до из , а — соответственно для . |
В дальнейшем, будем считать что нет объектов веса , так как в противном случае существует бесконечное количество рассматриваемых комбинаторных объектов любого веса и подсчет теряет смысл, или подсчет сводится к рассматриваемому случаю. Отведем данный вес под пустое множество(то есть ).
Содержание
Последовательности (Seq)
Определение: |
— множество всех последовательностей из элементов . — количество последовательностей веса . |
Утверждение: |
. Причем . |
, так как есть единственный способ составить пустую последовательность. Докажем по индукции. База .
Переход.
|
Подсчет битовых векторов длины
Пусть битовых векторов.
, — множество всехТогда,
.Подсчет Seq из маленьких и больших элементов
Пусть
, , — множество всех последовательностей из маленьких и больших элементов, .Тогда, [1].
, где — -ое число ФибоначчиМножества (PSet)
Определение: |
— множество всех множеств, составленных из элементов . — количество множеств суммарного веса . |
Утверждение: |
, где — количество таких множеств, которые содержат объекты, вес которых не больше чем . Причем , а , . |
Изначально у нас есть только пустое множество веса , так как не набирать никакой вес есть один способ, а , , так как нельзя набрать положительный вес из ничего. . Рассмотрим очередной этап вычисления . Для данных и у нас уже имеется множество, которое необходимо дополнить. Мы можем сделать это добавляя от до элементов веса (при условии, что столько различных элементов имеется) в данное множество. Выбрать нужное количество элементов можно с помощью сочетаний. Следовательно, у нас образуется новые множества, которые будет необходимо дополнить элементами веса меньше (чтобы избежать повторений) суммарного веса , где — количество элементов веса которое мы добавили в данное множество. Довольно легко заметить, что данные операции полностью соответствуют описанной выше формуле. |
Количество PSet из элементов 0 и 1
Пусть
, — множество всех множеств из , . Тогда , где .- .
- .
- .
- .
- Для , .
Количество разбиений на слагаемые
Пусть разбиений на слагаемые, . Тогда,
, — множество всех- динамического программирования. , где , что, как несложно заметить, соответствует формуле, полученной методом
Количество связных графов
Определение: |
- количество связных графов порядка . |
Лемма: |
, — количество помеченных графов. |
Утверждение: |
, — количество связных графов порядка n. |
Пусть — количество несвязных графов. Тогда количество связных графов равно . Пусть — количество количество корневых несвязных графов. Тогда количество несвязных графов равно .Заметим, что, так как граф является несвязным, то в нём найдётся компонента связности, внутри которой лежит корневая вершина [2], а остальной граф будет представлять собой одну или более компонент связности. Переберем количество вершин в компоненте связности, содержащей корневую вершину. . Для каждого посчитаем количество таких графов.Во-первых, мы должны выбрать вершин из , то есть ответ умножается на .Во-вторых, компонента с корневой вершиной дает множитель .В-третьих, оставшийся граф из вершин является произвольным графом, поэтому он даёт множитель .В-четвертых, количество способов выделить корневую вершину в компоненте связности из вершин равно .Итого, при фиксированном количество корневых несвязных графов равно:. Значит, количество несвязных графов с вершинами равно:
Наконец, искомое количество связных графов равно: |
Мультимножества (MSet)
Определение: |
[3] из элементов . — количество мультимножеств из объектов суммарного веса . | — множество всех мультимножеств
Утверждение: |
, где — количество таких мультимножеств, которые содержат объекты, вес которых не больше чем . Причем , а , . |
Рассуждения аналогичны рассуждениям , так как не набирать никакой вес есть один способ, а , , так как нельзя набрать положительный вес из ничего. , однако теперь мы можем брать один и тот же элемент несколько раз. То есть для подсчета вместо обычных сочетаний нужно использовать сочетания с повторениями. |
Количество MSet из элементов 0 и 1
Пусть
, — множество всех мультимножеств из , .- Тогда, , где
- .
- .
- .
- .
- .
Помеченные унициклические графы
Определение: |
называется связный граф, содержащий один простой цикл и не содержащий петель и кратных рёбер. — количество унициклических графов из вершин, . |
Утверждение: |
. |
Для всех кодирование Прюфера, получим, что количество таких лесов равно . Нахождение количества таких лесов аналогично нахождению количества помеченных деревьев. Значит, количество унициклических графов порядка равно . | найдем число способов выбрать вершины для цикла длины , их количество равняется . Найдём число способов упорядочить выбранные вершины: заметим что каждый цикл длины порождается способами (у каждой перестановки существует циклический сдвиг и одно зеркальное представление), поэтому существует различных циклов. Найдём количество способов достроить полученный цикл до связного унициклического графа. Заметим, что при удалениии всех ребер цикла граф станет лесом из деревьев и вершин. Используя
Пары (Pair)
Определение: |
— множество всех пар объектов, составленных из элементов и . — количество пар из объектов суммарного веса . |
Утверждение: |
. |
Чтобы составить пару веса | нужно взять один элемент веса из и элемент веса из , что полностью соответствует данной формуле.
Количество подвешенных неполных двоичных деревьев
Пусть
— количество таких деревьев с вершинами. — множество всех пар из данных деревьев. Чтобы получить двоичное дерево из вершин, достаточно взять вершину и подвесить к ней левого и правого сына с суммарным количеством вершин . Тогда:- число Каталана. , где — -ое
Циклы (Cycle)
Определение: |
[4] из элементов . — количество циклов веса . | — множество всех циклов
Утверждение: |
, где , — количество циклов веса длины , а — количество стабилизаторов для циклического сдвига на . |
Очевидно, что длина цикла веса лемме Бёрнсайда. | может быть от до . Посмотрим сколько существует циклов каждой длины. Это можно сделать по
Лемма: |
Найдем в общем случае. |
Доказательство: |
Пусть наибольший общий делитель. Заметим, что в -ой перестановке на -ой позиции стоит элемент . Также, заметим, что элемент переходит в элемент , где . Из этого следует, что длина цикла для -ой перестановки равна , где — наименьшее общее кратное. —Также заметим, что если вес нельзя равномерно распределить по всей длине цикла, то стабилизатор равен .
Где — число способов упорядочить набор из элементов суммарного веса и , причем . |
Задача об ожерельях
Решим данным способом задачу об ожерельях. Пусть необходимый вес — это количество бусинок, а — количество цветов. Причем каждая бусинка весит . То есть .
так как невозможно набрать вес менее, чем бусинами при весе бусин .
. Поскольку все бусины имеют одинаковый вес , то
В итоге,
.Метод производящих функций
Такие большие группы часто анализируют с помощью производящих функций. Один из популярных методов — метод символов [5]. Он использует внутреннюю структуру объектов для получения производящих функций. В случае непомеченных объектов, как и в анализе в нашей статье, считается, что нет объектов нулевого веса. Иногда для удобства их добавляют, чтобы показать наличие одного пустого множества. При непомеченных объектах рассмотренные классы имеют следующие производящие функции:
функция Эйлера. | , где —
---|
Однако порой некоторые комбинаторные классы удобнее обозначать как помеченные. Например, — помеченные графы. С помеченными объектами используется экспоненциальная производящая функция [6]. В данном случае для некоторых рассмотренных классов используются следующие производящие функции:
. |
---|
Ограниченные конструкции
Иногда в анализе необходимо ввести ограничение на количество компонентов. Такой случай обозначается нижним коэффициентом (например,
— компонентов).Непосредственной формулой для производящих функций является диагональ [7] , определяемая как . Тогда имеет место соотношение .
декартова произведенияДиагональная конструкция позволяет получить доступ к классу всех неупорядоченных пар из различных элементов из
, то есть к . Прямое выражение выполняется следующим способом: неупорядоченная пара связана с двумя упорядоченными парами и , кроме тех случаев, когда , то есть когда пара лежит на диагонали декартова произведения. Другими словами, .Это, в свою очередь, означает что
. Таким образом можно выразить . Аналогично для , и :Аналогичные рассуждения можно провести и для больших теорема Пойа.
, однако расчеты быстро становятся сложными. Классический способ исправления таких вопросов —Однако в методе символов предлагается более глобальный подход, основанный на многомерных производящих функциях и использующий ряд Бюрмана-Лагранжа [8]. В общем случае, используя метод символов, производящие функции ограниченных конструкций можно подсчитать следующим способом:
функция Эйлера. | , где —
---|
См.также
- Лемма Бёрнсайда и Теорема Пойа
- Числа Каталана
- Генерация комбинаторных объектов в лексикографическом порядке
- Подсчет деревьев