Конструирование комбинаторных объектов и их подсчёт — различия между версиями
Mervap (обсуждение | вклад) (+++) |
Mervap (обсуждение | вклад) м |
||
| Строка 173: | Строка 173: | ||
Иногда в анализе необходимо ввести ограничение на количество компонентов. Такой случай обозначается нижним коэффициентом (например, <tex dpi="130">Seq_{k}(A)</tex> {{---}} <tex dpi="130">k</tex> компонентов). | Иногда в анализе необходимо ввести ограничение на количество компонентов. Такой случай обозначается нижним коэффициентом (например, <tex dpi="130">Seq_{k}(A)</tex> {{---}} <tex dpi="130">k</tex> компонентов). | ||
| − | Непосредственной формулой для производящих функций является диагональ <tex dpi="130">\Delta</tex> декартова произведения <tex dpi="130">A \times A</tex>, определяемая как <tex dpi="130">B \equiv \Delta(A \times A) : \{(a, a) \mid a \in A\}</tex>. Тогда имеет место соотношение <tex dpi="130">B(z)=A(z^{2})</tex>. | + | Непосредственной формулой для производящих функций является диагональ <tex dpi="130">\Delta</tex> декартова произведения <ref>[[wikipedia:Cartesian product | Wikipedia {{---}} Декартово произведение]]</ref> <tex dpi="130">A \times A</tex>, определяемая как <tex dpi="130">B \equiv \Delta(A \times A) : \{(a, a) \mid a \in A\}</tex>. Тогда имеет место соотношение <tex dpi="130">B(z)=A(z^{2})</tex>. |
Диагональная конструкция позволяет получить доступ к классу всех неупорядоченных пар из различных элементов из <tex dpi="130">A</tex>, то есть к <tex dpi="130">P = PSet_{2}(A)</tex>. Прямое выражение выполняется следующим способом: неупорядоченная пара <tex dpi="130">\langle \alpha, \beta \rangle </tex> связана с двумя упорядоченными парами <tex dpi="130">(\langle \alpha, \beta \rangle </tex> и <tex dpi="130">\langle \beta, \alpha \rangle )</tex>, кроме тех случаев, когда <tex dpi="130">\alpha = \beta</tex>, то есть когда пара лежит на диагонали декартова произведения. Другими словами, <tex dpi="130">PSet_{2}(A) + PSet_{2}(A) + \Delta(A \times A) \cong A \times A</tex>. | Диагональная конструкция позволяет получить доступ к классу всех неупорядоченных пар из различных элементов из <tex dpi="130">A</tex>, то есть к <tex dpi="130">P = PSet_{2}(A)</tex>. Прямое выражение выполняется следующим способом: неупорядоченная пара <tex dpi="130">\langle \alpha, \beta \rangle </tex> связана с двумя упорядоченными парами <tex dpi="130">(\langle \alpha, \beta \rangle </tex> и <tex dpi="130">\langle \beta, \alpha \rangle )</tex>, кроме тех случаев, когда <tex dpi="130">\alpha = \beta</tex>, то есть когда пара лежит на диагонали декартова произведения. Другими словами, <tex dpi="130">PSet_{2}(A) + PSet_{2}(A) + \Delta(A \times A) \cong A \times A</tex>. | ||
| Строка 192: | Строка 192: | ||
Аналогичные рассуждения можно провести и для больших <tex dpi="130">k</tex>, однако расчеты быстро становятся сложными. Классический способ исправления таких вопросов - [[Лемма Бёрнсайда и Теорема Пойа#Теорема Пойа | теорема Пойа]]. | Аналогичные рассуждения можно провести и для больших <tex dpi="130">k</tex>, однако расчеты быстро становятся сложными. Классический способ исправления таких вопросов - [[Лемма Бёрнсайда и Теорема Пойа#Теорема Пойа | теорема Пойа]]. | ||
| − | Однако в методе символов предлагается более глобальный подход, основанный на многомерных производящих функциях и использующий ряд Бюрмана—Лагранжа <ref>[[wikipedia:Lagrange inversion theorem | Wikipedia {{---}} Lagrange inversion theorem]]</ref>. В общем случае, используя метод символов, | + | Однако в методе символов предлагается более глобальный подход, основанный на многомерных производящих функциях и использующий ряд Бюрмана—Лагранжа <ref>[[wikipedia:Lagrange inversion theorem | Wikipedia {{---}} Lagrange inversion theorem]]</ref>. В общем случае, используя метод символов, производящие функции ограниченных конструкций можно подсчитать следующим способом: |
{| class="wikitable" | {| class="wikitable" | ||
Версия 19:46, 5 января 2018
Содержание
Последовательности (Seq)
| Утверждение: |
Пусть — множество из различных объектов, — множество всех последовательностей из элементов , — количество объектов веса от до . Мы считаем, что нет объектов веса , так как в противном случае существует бесконечное количество последовательностей любого веса. Тогда, количество последовательностей веса можно вычислить как . Причем , так как есть единственный способ составить пустую последовательность. |
|
Докажем по индукции. База .
Переход.
|
Подсчет битовых векторов длины
Пусть , — множество всех битовых векторов.
Тогда, .
Подсчет Seq из маленьких и больших элементов
Пусть , , — множество всех последовательностей из маленьких и больших элементов, .
Тогда, , где — -ое число Фибоначчи [1].
Подсчет подвешенных непомеченных деревьев с порядком на детях
Пусть — количество таких деревьев с вершинами. — множество всех последовательностей из данных деревьев. — количество последовательностей с суммарным количество вершин . Чтобы получить дерево из вершин, достаточно взять вершину, и подвесить к ней последовательность деревьев с суммарным количеством вершин . Тогда:
- .
- , где — -ое число Каталана.
Множества (PSet)
| Утверждение: |
Пусть — множество из различных объектов, — множество всех множеств, составленных из элементов , — количество объектов веса от до . Мы также считаем, что нет объектов веса . Тогда количество множеств суммарного веса можно вычислить как , где — количество таких множеств, которые содержат объекты, вес которых не больше чем . Причем , так как не набирать никакой вес есть один способ, а , , так как нельзя набрать положительный вес из ничего. |
| Изначально у нас есть только пустое множество веса . Рассмотрим очередной этап вычисления . Для данных и у нас уже имеется множество, которое необходимо дополнить. Мы можем сделать это добавляя от до элементов веса (при условии, что столько различных элементов имеется) в данное множество. Выбрать нужное количество элементов можно с помощью сочетаний. Следовательно, у нас образуется новые множества, которые будет необходимо дополнить элементами веса меньше (чтобы избежать повторений) суммарного веса , где — количество элементов веса которое мы добавили в данное множество. Довольно легко заметить, что данные операции полностью соответствуют описанной выше формуле. |
Количество PSet из элементов 0 и 1
Пусть , — множество всех множеств из , . Тогда , где .
- .
- .
- .
- .
- Для , .
Количество разбиений на слагаемые
Пусть , — множество всех разбиений на слагаемые, , . Тогда,
- , где , что, как несложно заметить, соответствует формуле, полученной методом динамического программирования.
Мультимножества (MSet)
| Утверждение: |
Пусть — множество из различных объектов, — множество всех мультимножеств [2] из элементов , — количество объектов веса от до . Тогда количество мультимножеств из объектов суммарного веса можно вычислить как , где — количество таких мультимножеств, которые содержат объекты, вес которых не больше чем . |
| Рассуждения аналогичны рассуждениям , однако теперь мы можем брать один и тот же элемент несколько раз. То есть для подсчета вместо обычных сочетаний нужно использовать сочетания с повторениями. |
Количество MSet из элементов 0 и 1
Пусть , — множество всех множеств из , , .
- Тогда, , где
- .
- .
- .
- .
- .
Подсчет подвешенных непомеченных деревьев без порядка на детях
Пусть — количество таких деревьев с вершинами. — множество всех лесов из данных деревьев, так как лес можно интерпретировать как мультимножество из деревьев. — количество лесов с суммарным количество вершин . — количество таких лесов из вершин, что деревья в них содержат не более чем вершин. Чтобы получить дерево из вершин, достаточно взять вершину и подвесить к ней лес деревьев с суммарным количеством вершин . Тогда:
- .
- .
- .
Количество таких деревьев с вершинами образуют последовательность [3]
Пары (Pair)
| Утверждение: |
Пусть , — множества из различных объектов, — множество всех пар объектов, составленных из элементов и . — количество объектов веса от до , составленных из элементов , а — соответственно для . Тогда количество пар из объектов суммарного веса можно вычислить как . |
| Чтобы составить пару веса нужно взять один элемент веса из и элемент веса из , что полностью соответствует данной формуле. |
Количество подвешенных неполных двоичных деревьев
Пусть — количество таких деревьев с вершинами. — множество всех пар из данных деревьев. Чтобы получить двоичное дерево из вершин, достаточно взять вершину и подвесить к ней левого и правого сына с суммарным количеством вершин . Тогда:
- , где — -ое число Каталана.
Циклы (Cycle)
| Утверждение: |
Пусть — множество из различных объектов, — множество всех циклов [4] из элементов , — количество объектов веса .
Тогда количество циклов веса можно вычислить как , где — количество циклов веса длины . По лемме Бёрнсайда , где — количество стабилизаторов для циклического сдвига на . |
| Очевидно, что длина цикла веса может быть от до . Посмотрим сколько существует циклов каждой длины. Это можно сделать по лемме Бёрнсайда. |
| Лемма: |
Найдем в общем случае. |
| Доказательство: |
|
Пусть — наибольший общий делитель. Заметим, что в -ой перестановке на -ой позиции стоит элемент . Также, заметим, что элемент переходит в элемент , где . Из этого следует, что длина цикла для -ой перестановки равна , где — наименьшее общее кратное. Также заметим, что если вес нельзя равномерно распределить по всей длине цикла, то стабилизатор равен .
Где — число способов упорядочить набор из элементов суммарного веса и , причем . |
Задача об ожерельях
Решим данным способом задачу об ожерельях. Пусть необходимый вес — это количество бусинок, а — количество цветов. Причем каждая бусинка весит . То есть .
так как невозможно набрать вес менее, чем бусинами при весе бусин .
. Поскольку все бусины имеют одинаковый вес , то
В итоге, .
Метод производящих функций
Такие большие группы часто анализируют с помощью производящих функций. Один из популярных методов — метод символов (англ. Symbolic method). Он использует внутреннюю структуру объектов для получения производящих функций. В случае непомеченных объектов, как и в анализе в нашей статье, считается, что нет объектов нулевого веса. Иногда для удобства их добавляют, чтобы показать наличие одного пустого множества. При непомеченных объектах рассмотренные классы имеют следующие производящие функции:
| , где — функция Эйлера. |
|---|
Однако порой некоторые комбинаторные классы удобнее обозначать как помеченные. Например, — помеченные графы. С помеченными объектами используется экспоненциальная производящая функция [5]. В данном случае для некоторых рассмотренных классов используются следующие производящие функции:
| . |
|---|
Ограниченные конструкции
Иногда в анализе необходимо ввести ограничение на количество компонентов. Такой случай обозначается нижним коэффициентом (например, — компонентов).
Непосредственной формулой для производящих функций является диагональ декартова произведения [6] , определяемая как . Тогда имеет место соотношение .
Диагональная конструкция позволяет получить доступ к классу всех неупорядоченных пар из различных элементов из , то есть к . Прямое выражение выполняется следующим способом: неупорядоченная пара связана с двумя упорядоченными парами и , кроме тех случаев, когда , то есть когда пара лежит на диагонали декартова произведения. Другими словами, .
Это, в свою очередь, означает что . Таким образом можно выразить . Аналогично для , и :
Аналогичные рассуждения можно провести и для больших , однако расчеты быстро становятся сложными. Классический способ исправления таких вопросов - теорема Пойа.
Однако в методе символов предлагается более глобальный подход, основанный на многомерных производящих функциях и использующий ряд Бюрмана—Лагранжа [7]. В общем случае, используя метод символов, производящие функции ограниченных конструкций можно подсчитать следующим способом:
| , где — функция Эйлера. |
|---|
См.также
- Лемма Бёрнсайда и Теорема Пойа
- Числа Каталана
- Генерация комбинаторных объектов в лексикографическом порядке