Изменения

Перейти к: навигация, поиск
м
rollbackEdits.php mass rollback
{{Определение
|definition=
<tex dpi="130">A=\{a_{1},a_{2}, \ldots ,a_{z}\}</tex>, <tex dpi="130">B=\{b_{1},b_{2}, \ldots ,b_{z_{1}}\}</tex> {{---}} множества из различных объектов. <tex dpi="130">W=\{w_{1},w_{2}, \ldots ,w_{l}\}</tex> {{---}} количество объектов веса от <tex dpi="130">1</tex> до <tex dpi="130">l</tex> из <tex dpi="130">A</tex>, а <tex dpi="130">U=\{u_{1},u_{2}, \ldots ,u_{l}\}</tex> {{---}} соответственно для <tex dpi="130">B</tex>.
}}
 
В дальнейшем, будем считать что нет объектов веса <tex dpi="130"">0</tex>, так как в противном случае существует бесконечное количество рассматриваемых комбинаторных объектов любого веса и подсчет теряет смысл, или подсчет сводится к рассматриваемому случаю. Отведем данный вес под пустое множество (то есть <tex dpi="130">w_{0}=1</tex>).
 
 
==Последовательности (Seq)==
 
{{Определение
|definition=<tex dpi="130">S=Seq(A)</tex> {{---}} множество всех последовательностей из элементов <tex dpi="130">A</tex>. <tex dpi="150">S_{n}</tex> {{---}} '''количество последовательностей''' веса <tex dpi="130">n</tex>.
}}
 
{{Утверждение
|statement=
Пусть <tex dpi="130150">A=\S_{a_{1n},a_{2}, =\ldots ,a_{z}sum\}</tex> limits_{{---}} множество из различных объектов, <tex dpii="130">S=Seq(A)</tex> {{---}} множество всех последовательностей из элементов <tex dpi="130">A</tex>, <tex dpi="130">W=\{w_{1},w_^{2n}, \ldots ,w_{li}\}</tex> {S_{n---i}} количество объектов веса от <tex dpi="130">1</tex> до <tex dpi="130">l</tex>. Мы считаем, что нет объектов веса Причем <tex dpi="130"">0</tex>, так как в противном случае существует бесконечное количество последовательностей любого веса. Тогда, '''количество последовательностей''' веса <tex dpi="130150">n</tex> можно вычислить как <tex dpi="150">S_{n0}=\sum_{i=1}^{n} w_{i} S_{n-i}</tex>. Причем |proof=<tex dpi="150130"">S_{0} = 1</tex>, так как есть единственный способ составить пустую последовательность.|proof=Докажем по индукции.
'''База <tex dpi="130"">n = 1</tex>'''.
Пусть <tex dpi="130">A=\{0, 1\}</tex>, <tex dpi="130">W=\{2, 0 \ldots 0\}</tex> <tex dpi="130">S=Seq(A)</tex> {{---}} множество всех [[Комбинаторные объекты#Битовые вектора|битовых векторов]].
Тогда, <tex dpi="150">S_{n}=\sum_sum\limits\limits_{i=1}^{n} w_{i} S_{n-i}=2S_{n-1}=2^{n}</tex>.
===Подсчет Seq из маленьких и больших элементов===
Пусть <tex dpi="130">A=\{1, 2\}</tex>, <tex dpi="130">W=\{1, 1, 0 \ldots 0\}</tex>, <tex dpi="130">S=Seq(A)</tex> {{---}} множество всех последовательностей из маленьких и больших элементов, <tex dpi="130">S_{1}=1</tex>.
Тогда, <tex dpi="150">S_{n}=\sum_sum\limits_{i=1}^{n} w_{i} S_{n-1i}=S_{n-1}+S_{n-2}=F_{n}</tex>, где <tex dpi="150">F_{n}</tex> {{---}} <tex>n</tex>-ое число Фибоначчи <ref>[[wikipedia:Fibonacci number|Wikipedia {{---}} Числа Фибоначчи]]</ref>.
===Подсчет подвешенных непомеченных деревьев с порядком на детях===Пусть <tex dpi="130">T_{n}</tex> {{---}} количество таких деревьев с <tex dpi="130">n</tex> вершинами. <tex dpi="130">S=SeqМножества (APSet)</tex> {{---}} множество всех последовательностей из данных деревьев. <tex dpi="130">S_{n}</tex> {{---}} количество последовательностей с суммарным количество вершин <tex dpi="130">n</tex>. Чтобы получить дерево из <tex dpi="130">n</tex> вершин, достаточно взять <tex dpi="130">1</tex> вершину, и подвесить к ней последовательность деревьев с суммарным количеством вершин <tex dpi="130">n-1</tex>. Тогда::<tex dpi="150">T_{n}=S_{n-1}</tex>.:<tex dpi="150">S_{n}=\sum_{i=1}^{n} T_{i} S_{n-i}=\sum_{i=1}^{n} S_{i-1} S_{n-i}=\sum_{i=0}^{n-1} S_{i} S_{n-i-1}=C_{n}</tex>, где <tex dpi="150">C_{n}</tex> {{---}} <tex dpi="150">n</tex>-ое [[Числа Каталана|число Каталана]].
[[File:Sequence_of_rooted_Trees.png|750px]]{{Определение[[File:Ordered_Rooted_Trees.png|700px]]definition=<tex dpi="130">P=Множества PSet(PSetA)</tex> {{---}} множество всех множеств, составленных из элементов <tex dpi="130">A</tex>. <tex dpi="150">P_{n}</tex> {{---}} '''количество множеств''' суммарного веса <tex dpi="130">n</tex>.}}
{{Утверждение
|statement=
Пусть <tex dpi="130">A=\{a_{1},a_{2}, \ldots ,a_{z}\}</tex> {{---}} множество из различных объектов, <tex dpi="130">P=PSet(A)</tex> {{---}} множество всех множеств, составленных из элементов <tex dpi="130">A</tex>, <tex dpi="130">W=\{w_{1},w_{2}, \ldots ,w_{l}\}</tex> {{---}} количество объектов веса от <tex dpi="130">1</tex> до <tex dpi="130">l</tex>. Мы также считаем, что нет объектов веса <tex dpi="130"">0</tex>. Тогда '''количество множеств''' суммарного веса <tex dpi="130">n</tex> можно вычислить как <tex dpi="150">P_{n}=p_{n, n}</tex>, где <tex dpi="150">p_{n, k}=\sum_sum\limits_{i=0}^{\lfloor \frac{n}{k} \rfloor} \binom{w_{k}}{i} p_{n-ik, k-1}</tex> {{---}} количество таких множеств, которые содержат объекты, вес которых не больше чем <tex dpi="150">k</tex>. Причем <tex dpi="150">p_{0, i} = 1</tex>, а <tex dpi="150">p_{i, 0} = 0</tex>, <tex dpi="150"">i \ne 0</tex>.|proof=<tex dpi="130">p_{0, i} = 1</tex>, так как не набирать никакой вес есть один способ, а <tex dpi="150130">p_{i, 0} = 0</tex>, <tex dpi="150130"">i \ne 0</tex>, так как нельзя набрать положительный вес из ничего.|proof=Изначально у нас есть только пустое множество веса <tex dpi="130">0</tex>. Рассмотрим очередной этап вычисления <tex dpi="130">p_{n,k}</tex>. Для данных <tex dpi="130">n</tex> и <tex dpi="130">k</tex> у нас уже имеется множество, которое необходимо дополнить. Мы можем сделать это добавляя от <tex dpi="130">0</tex> до <tex dpi="130">\lfloor \frac{n}{k} \rfloor</tex> элементов веса <tex dpi="130">k</tex> (при условии, что столько различных элементов имеется) в данное множество. Выбрать нужное количество элементов можно с помощью сочетаний. Следовательно, у нас образуется новые множества, которые будет необходимо дополнить элементами веса меньше <tex dpi="130">k</tex> (чтобы избежать повторений) суммарного веса <tex dpi="130">n-ik</tex>, где <tex dpi="130">i</tex> {{---}} количество элементов веса <tex dpi="130">k</tex> которое мы добавили в данное множество. Довольно легко заметить, что данные операции полностью соответствуют описанной выше формуле.
}}
===Количество PSet из элементов 0 и 1===
Пусть <tex dpi="130">A=\{0, 1\}</tex>, <tex>P=PSet(A)</tex> {{---}} множество всех множеств из <tex dpi="130">A</tex>, <tex dpi="130">W=\{2, 0 \ldots 0\}</tex>. Тогда <tex dpi="150">P_{n}=p_{n, n}</tex>, где <tex tex dpi="150">p_{n, k}=\sum_sum\limits_{i=0}^{\lfloor \frac{n}{k} \rfloor} \binom{w_{k}}{i} p_{n-ik, k-1}</tex>.
:<tex dpi="150">P_{0}=p_{0, 0} = 1</tex>.
:<tex dpi="150">P_{1}=p_{1, 1} = \binom{12}{0}p_{1, 0} + \binom{2}{1}p_{0, 0} = 2p_{0, 0} = 2</tex>.
:<tex dpi="150">P_{2}=p_{2, 2} = \binom{0}{0} p_{2, 1} + \binom{0}{1}p_{0, 1} = \binom{2}{0}p_{2, 0} + \binom{2}{1}p_{1, 0} + \binom{2}{2}p_{0, 0}= p_{0, 0} = 1</tex>.
:<tex dpi="150">{P_{3}=p_{3, 3} = \binom{0}{0}p_{3, 2} + \binom{0}{1} p_{0, 2} = \binom{0}{0}p_{3, 1} + \binom{0}{1} p_{0, 1} = \binom{2}{0}p_{3, 0} + \binom{2}{1}p_{2, 0} + \binom{2}{2} p_{1, 0} + \binom{2}{3} p_{0, 0}= 0}</tex>.
:<tex dpi="150">\{0\}, \{1\}</tex>
:<tex dpi="150">\{0, 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="130">w_{0} = 1</tex>. Тогда, :<tex dpi="150">P_{n}=p_{n, n}</tex>, где <tex tex dpi="150">p_{n, k}=\sum_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)|динамического программирования]].
==Мультимножества (MSet)==
 
{{Определение
|definition=
<tex dpi="130">M=MSet(A)</tex> {{---}} множество всех мультимножеств <ref>[[wikipedia:Multiset|Wikipedia {{---}} Мультимножества]]</ref> из элементов <tex dpi="130">A</tex>. <tex dpi="150">M_{n}</tex> {{---}} '''количество мультимножеств''' из объектов суммарного веса <tex dpi="130">n</tex>.
}}
==Мультимножества (MSet)==
{{Утверждение
|statement=
Пусть <tex dpi="130150">A=\M_{a_{1n},a_=m_{2}n, \ldots ,a_{z}\n}</tex> {{---}} множество из различных объектов, где <tex dpi="130150">Mm_{n, k}=MSet(A)</tex> \sum\limits_{i=0}^{\lfloor \frac{n}{k} \rfloor} \binom{w_{k}+i-1}{i} m_{n-ik, k-1}} множество всех мультимножеств <ref/tex>[[wikipedia:Multiset|Wikipedia {{---}} Мультимножества]]</ref> из элементов количество таких мультимножеств, которые содержат объекты, вес которых не больше чем <tex dpi="130">Ak</tex>, . Причем <tex dpi="130150">W=\m_{w_{1}0,w_{2}, \ldots ,w_{l}\i}= 1</tex> {{---}} количество объектов веса от , а <tex dpi="130150">1m_{i, 0} = 0</tex> до , <tex dpi="130150"">li \ne 0</tex>. Тогда '''количество мультимножеств''' из объектов суммарного веса |proof=<tex dpi="130">n</tex> можно вычислить как <tex dpi="150">M_{n}=m_{n0, ni}= 1</tex>, где так как не набирать никакой вес есть один способ, а <tex dpi="150130">m_{ni, k0}=\sum_{i=0}^{\lfloor \frac{n}{k} \rfloor} \binom{w_{k}+i-1}{i} m_{n-ik, k-1}</tex> {{---}} количество таких мультимножеств, которые содержат объекты, вес которых не больше чем <tex dpi="130"">ki \ne 0</tex>, так как нельзя набрать положительный вес из ничего.|proof=Рассуждения аналогичны рассуждениям <tex dpi="130">PSet</tex>, однако теперь мы можем брать один и тот же элемент несколько раз. То есть для подсчета вместо обычных сочетаний нужно использовать сочетания с повторениями.
}}
===Количество MSet из элементов 0 и 1===
Пусть <tex dpi="130">A=\{0, 1\}</tex>, <tex dpi="130">SM=PSetMSet(A)</tex> {{---}} множество всех множеств мультимножеств из <tex dpi="130">A</tex>, <tex dpi="130">W=\{2, 0 \ldots 0\}</tex>, <tex dpi="130">w_{0} = 1</tex>.:Тогда, <tex dpi="150">M_{n}=m_{n, n}</tex>, где <tex dpi="150">s_m_{n, k}=\sum_sum\limits_{i=0}^{\lfloor \frac{n}{k} \rfloor} s_ \binom{w_{k}+i-1}{i}m_{n-ik, k-1}</tex>
:<tex dpi="150">M_{0}=m_{0, 0} = 1</tex>.
:<tex dpi="150">M_{1}=m_{1, 1} = \binom{1}{0}m_{1, 0} + \binom{2}{1}m_{0, 0} = 2m_{0, 0} = 2</tex>.
:<tex dpi="150">{M_{n}=m_{n, n} = \binom{0}{0}m_{n, n-1} + \binom{0}{1} m_{0, n-1} = \binom{0}{0}m_{n, n-2} + \binom{0}{1} m_{0, n-2} = \ldots = \binom{1}{0}m_{n, 0} + \binom{2}{1}m_{n - 1, 0} + \ldots + \binom{n}{n-1}m_{1, 0} + \binom{n+1}{n} m_{0,0} = (n + 1) m_{0,0} = n+1}</tex>.
==Помеченные унициклические графы=Подсчет подвешенных непомеченных деревьев без порядка на детях{{Определение|definition=<tex dpi=Пусть "130">Унициклическим</tex> называется связный граф, содержащий один простой цикл и не содержащий петель и кратных рёбер. <tex dpi="130150">T_U_{n}</tex> {{---}} '''количество унициклических графов''' из <tex dpi="130">n</tex> вершин, <tex dpi="130">n > 2</tex>.}} {{Утверждение|statement=<tex dpi="150">U_{n}=\sum\limits_{r=3}^{n}\binom{n}{r}\frac{r!}{2}n^{n-r-1}</tex>.|proof=Для всех <tex dpi="130">r \in [3;n]</tex> найдем число способов выбрать вершины для цикла длины <tex dpi="130">r</tex>, их количество таких деревьев с равняется <tex dpi="130">\binom{n}{r}</tex> вершинами. Найдём число способов упорядочить выбранные вершины: заметим что каждый цикл длины <tex dpi="130">Fr</tex> порождается <tex dpi=MSet"130">2r</tex> способами (Tу каждой перестановки существует <tex dpi="130">r - 1</tex> циклический сдвиг и одно зеркальное представление), поэтому существует </texdpi="130"> \frac{r!}{2r} = \frac{(r---1)!}{2} множество </tex> различных циклов. Найдём количество способов достроить полученный цикл до связного унициклического графа. Заметим, что при удалениии всех лесов ребер цикла граф станет лесом из данных <tex dpi="130">r</tex> деревьеви <tex dpi="130">n</tex> вершин. Используя [[Коды Прюфера|кодирование Прюфера]], так как лес можно интерпретировать как мультимножество из получим, что количество таких лесов равно <tex dpi="130">r {n}^{n-r-1}</tex>. Нахождение количества таких лесов аналогично нахождению [[Количество помеченных деревьев|количества помеченных деревьев]]. Значит, количество унициклических графов порядка <tex dpi="130">n</tex> равно <tex dpi="130">U_{n}=\sum\limits_{r=3}^{n}\binom{n}{r}\frac{r!}{2}n^{n-r-1}</tex>. }} ==Связные графы=={{Определение|definition=<tex dpi="130">CONN_{n}</tex> - количество связных графов с <tex dpi="130">F_n</tex> вершинами.}} {{Лемма|statement=<tex dpi="150">G_{n}=f_2^{\binom{n}{2}}</tex>,где <tex dpi="150">G_{n}</tex> {{---}} количество лесов помеченных графов с суммарным количество вершин <tex dpi="130">n</tex>вершинами. }} {{Утверждение|statement=<tex dpi="130150">f_CONN_{n}=G_{n} - \frac{1}{n}\sum\limits_{k=1}^{n-1}k\binom{n, }{k}G_{n-k}CONN_{k}</tex> , {{---}} количество таких лесов из связных графов с <tex dpi="130">n</tex> вершинвершинами.|proof= Рассмотрим соотношение количества связных и несвязных графов. Очевидно, что деревья в них содержат не более чем <tex dpi="130150">CONN_{n}=G_{n}-X_{n}</tex>, где <tex dpi="150">kX_{n}</tex> вершин{{---}} количество несвязных графов. Чтобы получить дерево из Также <tex dpi="130150">X_{n}=\dfrac{Y_{n}}{n}</tex> вершин, достаточно взять где <tex dpi="150">Y_{n}</tex> {{---}} количество корневых<ref>[[wikipedia:Rooted_graph | Wikipedia {{---}} Корневой граф]]</ref> несвязных графов.  Вычислим <tex dpi="130150">1Y_{n}</tex> . Заметим, что, так как граф является несвязным, то в нём найдётся компонента связности, внутри которой лежит корневая вершина, а остальной граф будет представлять собой одну или более компонент связности. Переберем количество вершин в компоненте связности, содержащей корневую вершину и подвесить к ней лес деревьев с суммарным количеством вершин . <tex dpi="130150">(k=1\ldots n-1)</tex>. Для каждого <tex dpi="150">k</tex>посчитаем количество таких графов. Тогда::Количество способов выбрать <tex dpi="150">k</tex> вершин из <tex dpi="150">n</tex> равно <tex dpi="150">T_\binom{n}{k}</tex>. Оставшийся граф является произвольным, таким образом, количество помеченных графов в нем равно <tex dpi=F_"150">G_{n-1k}</tex>. Количество способов выделить корневую вершину в компоненте связности из <tex dpi="150">k</tex> вершин равно <tex dpi="150">k</tex>. Также количество связных графов в компоненте связности с корневой вершиной равно <tex dpi="150">CONN_{k}</tex>.:Итого, для фиксированного <tex dpi="150">k</tex> количество корневых несвязных графов равно <tex dpi="150">F_Y_{n}=f_k\binom{n, }{k}CONN_{k}G_{n-k}</tex>.:Значит, количество несвязных графов с <tex dpi="150">n</tex> вершинами равно <tex dpi="150">fX_{n,k}=\sum_frac{i=01}^{n}\lfloor sum\fraclimits_{k=1}^{n-1}{k} \rfloor} \binom{T_n}{k}+i-1}CONN_{ik} s_G_{n-ik, k-1}</tex>.
Количество таких деревьев Таким образом, количество связных графов с <tex dpi="130">n</tex> вершинами образуют последовательность <tex dpi="130"> 1, 1, 2, 4, 9, 20, 48, 115, 286, 719, 1842, 4766, 12486, 32973, 87811, 235381, 634847 \ldots</tex> <ref>[http://oeis.org/A000081 Number of unlabeled rooted trees with n node]</ref> равно
[[File:Forests.png|670px]]<tex dpi="150">CONN_{n}=G_{n}-\frac{1}{n}\sum\limits_{k=1}^{n-1}k\binom{n}{k}G_{n-k}CONN_{k}</tex>[[File:Rooted_Trees.png|700px]]}}
==Пары (Pair)==
 
{{Определение
|definition=<tex dpi="130">D=Pair(A, B)</tex> {{---}} множество всех пар объектов, составленных из элементов <tex dpi="130">A</tex> и <tex dpi="130">B</tex>. <tex dpi="150">D_{n}</tex> {{---}} '''количество пар''' из объектов суммарного веса <tex dpi="130">n</tex>.
}}
 
{{Утверждение
|statement=
Пусть <tex dpi="130">A=\{a_{1},a_{2}, \ldots ,a_{z_{1}}\}</tex>, <tex dpi="130">B=\{b_{1},b_{2}, \ldots ,b_{z_{2}}\}</tex> {{---}} множества из различных объектов, <tex dpi="130">D=Pair(A, B)</tex> {{---}} множество всех пар объектов, составленных из элементов <tex dpi="130">A</tex> и <tex dpi="130">B</tex>. <tex dpi="130">W=\{w_{1},w_{2}, \ldots ,w_{l}\}</tex> {{---}} количество объектов веса от <tex dpi="130">1</tex> до <tex dpi="130">l</tex>, составленных из элементов <tex dpi="130">A</tex>, а <tex dpi="130">U=\{u_{1},u_{2}, \ldots ,u_{l}\}</tex> {{---}} соответственно для <tex dpi="130">B</tex>. Тогда '''количество пар''' из объектов суммарного веса <tex dpi="130">n</tex> можно вычислить как <tex dpi="150">D_{n}=\sum_sum\limits_{i=0}^{n}w_{i}u_{n-i}</tex>.
|proof=Чтобы составить пару веса <tex dpi="130">n</tex> нужно взять один элемент веса <tex dpi="130">0 \leqslant i \leqslant n</tex> из <tex dpi="130">A</tex> и элемент веса <tex dpi="130">n-i</tex> из <tex dpi="130">B</tex> , что полностью соответствует данной формуле.
}}
===Количество подвешенных неполных двоичных деревьевЦиклы (Cycle)== {{Определение|definition=Пусть <tex dpi="130">T_{n}C=Cycle(A)</tex> {{---}} количество таких деревьев с множество всех циклов <tex dpi="130">n</tex> вершинами. <tex dpi="130">D=Pair(T, T)</texref> [[wikipedia:Cyclic order | Wikipedia {{---}} множество всех пар из данных деревьев. Чтобы получить двоичное дерево из <tex dpi="130">nЦиклы]]</texref> вершин, достаточно взять из элементов <tex dpi="130">1</tex> вершину и подвесить к ней левого и правого сына с суммарным количеством вершин <tex dpi="130">n-1A</tex>. Тогда::<tex dpi="150">T_{n}=D_{n-1}=\sum_{i=0}^{n-1}T_{i}T_{n-i-1}=C_{n}</tex>, где <tex dpi="150">C_{n}</tex> {{---}} '''количество циклов''' веса <tex dpi="150">n</tex>-ое [[Числа Каталана|число Каталана]].}}
==Циклы (Cycle)==
{{Утверждение
|statement=
Пусть <tex dpi="130">A=\{a_{1},a_{2}, \ldots ,a_{z}\}</tex> {{---}} множество из различных объектов, <tex dpi="130">C=Cycle(A)</tex> {{---}} множество всех циклов <ref>[[wikipedia:Cyclic order | Wikipedia {{---}} Циклы]]</ref> из элементов <tex dpi="130">A</tex>, <tex dpi="130">W=\{w_{1},w_{2}, \ldots ,w_{m}\}</tex> {{---}} количество объектов веса <tex dpi="130">\{1 \ldots m\}</tex>.  Тогда '''количество циклов''' веса <tex dpi="150">n</tex> можно вычислить как <tex dpi="150">C_{n}=\sum_sum\limits_{s=1}^{n}c_{n, s}</tex>, где <tex dpi="150">c_{n,s}=\sum\limits_{i=0}^{s-1}\dfrac{|St(\vec{i})|}{s}</tex> , {{---}} количество циклов веса <tex dpi="150">n</tex> длины <tex dpi="150">s</tex>. По [[Лемма Бёрнсайда и Теорема Пойа#Лемма Бёрнсайда|лемме Бёрнсайда]] <tex dpi="150">c_{n,s} =\sum_{i=0}^{s-1}\dfrac{|St(\vec{i})|}{s}</tex>, где а <tex dpi="150">|St(\vec{i})|</tex> {{---}} количество стабилизаторов для циклического сдвига на <tex dpi="150">i</tex> .|proof=Очевидно, что длина цикла веса <tex dpi="130">n</tex> может быть от <tex dpi="130">1</tex> до <tex dpi="130">n</tex>. Посмотрим сколько существует циклов каждой длины. Это можно сделать по [[Лемма Бёрнсайда и Теорема Пойа#Лемма Бёрнсайда|лемме Бёрнсайда]].
}}
Где <tex dpi="150">b_{n,k}</tex> {{---}} число способов упорядочить набор из <tex dpi="150">k</tex> элементов суммарного веса <tex dpi="150">n</tex> и
<tex dpi="150">b_{n,k}=\sum_sum\limits_{i=1}^{n}w_{i}b_{n-i, k-1}</tex>, причем <tex dpi="150">b_{n,1}=w_{n}</tex>.
}}
Решим данным способом [[Задача об ожерельях|задачу об ожерельях]]. Пусть необходимый вес <tex dpi="130">n</tex> {{---}} это количество бусинок, а <tex dpi="130">k</tex> {{---}} количество цветов. Причем каждая бусинка весит <tex dpi="130">1</tex>. То есть <tex dpi="130">W=\{k, 0 \ldots 0\}</tex>.
<tex dpi="130">C_{n}=\sum_sum\limits_{s=1}^{n}c_{n,s}=c_{n,n}</tex> так как невозможно набрать вес <tex dpi="130">n</tex> менее, чем <tex dpi="130">n</tex> бусинами при весе бусин <tex dpi="130">1</tex>.
<tex dpi="130">c_{n,n}=\sum_sum\limits_{i=0}^{n-1}\dfrac{|St(\vec{i})|}{n}=\dfrac{1}{n}\sum_sum\limits_{i=0}^{s-1}|St(\vec{i})|=\dfrac{1}{n}\sum_sum\limits_{i=0}^{s-1}b_{\mathrm{gcd}(n,i),\mathrm{gcd}(n,i)}</tex>. Поскольку все бусины имеют одинаковый вес <tex dpi="130">1</tex>, то <tex dpi="130">b_{n,k} \neq 0</tex>
В итоге, <tex dpi="130">C_{n}=\dfrac{1}{n}\sum_sum\limits_{i=0}^{s-1}k^{\mathrm{gcd}(n,i)}</tex>.
==Метод производящих функций==
Такие большие группы часто анализируют с помощью [[Производящая функция|производящих функций]]. Один из популярных методов {{---}} метод символов <ref>[[wikipedia:Symbolic method (англ. ''combinatorics) | Wikipedia {{---}} Symbolic method'')]]</ref>. Он использует внутреннюю структуру объектов для получения производящих функций. В случае непомеченных объектов, как и в анализе в нашей статье, считается, что нет объектов нулевого веса. Иногда для удобства их добавляют, чтобы показать наличие одного пустого множества.
При непомеченных объектах рассмотренные классы имеют следующие производящие функции:
!<tex dpi="130">Pair(A,B)</tex>||<tex dpi="130">A(z)B(z)</tex>
|-align="center"
!<tex dpi="130">Cycle(A)</tex>||<tex dpi="130">\sum\limits_{n \geqslant 1}\dfrac{\phi(n)}{n}\ln\dfrac{1}{1 - A(z^n)}</tex>, где <tex dpi="130">\phi(n)</tex> {{---}} [[Функция_Эйлера | функция Эйлера]].
|}
===Ограниченные конструкции===
Иногда в анализе необходимо ввести ограничение на количество компонентов. Такой случай обозначается нижним коэффициентом (например, <tex dpi="130">Seq_{k}(A)</tex> {{---}} <tex dpi="130">k</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">2P(z) + A(z^{2}) = A(z)^{2}</tex>. Таким образом можно выразить <tex dpi="130">PSet_{2}(A)</tex>. Аналогично для <tex dpi="130">Seq_{2}(A)</tex>, <tex dpi="130">MSet_{2}(A)</tex> и <tex dpi="130">Cycle_{2}(A)</tex>:  
{| class="wikitable"
|-align="center"
!<tex dpi="130">Class</tex>||<tex dpi="130">A(z)</tex>|-align="center" !<tex dpi="130">Seq_{k2}(BA)</tex>||<tex dpi="130>BA(z)^{k2}</tex>
|-align="center"
!<tex dpi="130">PSet_{2}(BA)</tex>||<tex dpi="130">\dfrac{BA(z)^{2}}{2}-\dfrac{BA(z^{2})}{2}</tex>
|-align="center"
!<tex dpi="130">MSet_{2}(BA)</tex>||<tex dpi="130">\dfrac{BA(z)^{2}}{2}+\dfrac{BA(z^{2})}{2}</tex>
|-align="center"
!<tex dpi="130">Cycle_{2}(BA)</tex>||<tex dpi="130">\dfrac{BA(z)^{2}}{2}+\dfrac{BA(z^{2})}{2}</tex>|-align="center"}  !Аналогичные рассуждения можно провести и для больших <tex dpi="130">PSet_{3}(B)k</tex>||<tex dpi="130">\dfrac, однако расчеты быстро становятся сложными. Классический способ исправления таких вопросов {B(z)^{3---}}{6}[[Лемма Бёрнсайда и Теорема Пойа#Теорема Пойа | теорема Пойа]].  Однако в методе символов предлагается более глобальный подход, основанный на многомерных производящих функциях и использующий ряд Бюрмана-\dfracЛагранжа <ref>[[wikipedia:Lagrange inversion theorem | Wikipedia {B(z)B(z^{2})}{2}+\dfrac{B(z^{3---})}{3}Lagrange inversion theorem]]</texref>. В общем случае, используя метод символов, производящие функции ограниченных конструкций можно подсчитать следующим способом:|-align="center" !<tex dpi="130">MSet_{3}(B)</tex>||<tex dpiclass="130wikitable">\dfrac{B(z)^{3}}{6}+\dfrac{B(z)B(z^{2})}{2}+\dfrac{B(z^{3})}{3}</tex>|-align="center" !<tex dpi="130">Cycle_Seq_{3k}(BA)</tex>||<tex dpi="130">\dfrac{BA(z)^{3}}{3}+\dfrac{2B(z^{3})}{3k}</tex>
|-align="center"
!<tex dpi="130">PSet_{4k}(BA)</tex>||<tex dpi="130">\dfrac{B(z)[u^{4}}{24k}]\exp(-\dfracsum\limits_{B(z)^{2i=1}B(z^{2})}{4k}+\dfrac{B(z-1)B(z^{3})i}u^{3i}+\dfrac{BA(z^{2i})^{2}}{8}-\dfrac{B(z^{4i})}{4}</tex>
|-align="center"
!<tex dpi="130">MSet_{4k}(BA)</tex>||<tex dpi="130">\dfrac{B(z)[u^{4k}}{24}+]\dfrac{Bexp(z)^\sum\limits_{2i=1}B(z^{2})}{4k}+\dfrac{B(z)B(zu^{3})}{3i}+\dfrac{BA(z^{2i})^{2}}{8}+\dfrac{B(z^{4i})}{4}</tex>
|-align="center"
!<tex dpi="130">Cycle_{4k}(BA)</tex>||<tex dpi="130">\dfrac{B(z)[u^{4}k}]\sum\limits_{4i \geqslant 1}+\dfrac{B\phi(z^{2}i)^{2}}{4i}+\ln\dfrac{B1}{1 - u^{i}A(z^{4i)}</tex>, где <tex dpi="130">\phi(n)}{2}</tex>{{---}} [[Функция_Эйлера | функция Эйлера]].
|}
*[[Числа Каталана]]
*[[Генерация комбинаторных объектов в лексикографическом порядке]]
*[[Подсчет деревьев]]
*[[Метод производящих функций]]
==Примeчания==
1632
правки

Навигация