Конструирование комбинаторных объектов и их подсчёт — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(Новая страница: «==Последовательности== {{Утверждение |statement= Пусть <tex>A=\{a_{1},a_{2}, \ldots ,a_{n}\}</tex> {{---}} множество ...»)
(нет различий)

Версия 14:42, 24 декабря 2017

Последовательности

Утверждение:
Пусть [math]A=\{a_{1},a_{2}, \ldots ,a_{n}\}[/math] — множество из различных объектов, [math]S=Seq(A)[/math] — множество всех последовательностей из элементов [math]A[/math], [math]W=\{w_{1},w_{2}, \ldots ,w_{m}\}[/math] — количество объектов веса [math]\{1 \ldots m\}[/math]. Тогда количество последовательностей веса [math]n[/math] можно вычислить как [math]S_{n}=\sum_{i=1}^{n} w_{i} S_{n-1}[/math].

Подсчет битовых векторов длины [math]n[/math]

Пусть [math]A=\{0, 1\}[/math], [math]W=\{2, 0 \ldots 0\}[/math], [math]S=Seq(A)[/math] — множество всех битовых векторов. Тогда [math]S_{n}=\sum_{i=1}^{n} w_{i} S_{n-1}=2S_{n-1}=2^{n}[/math].

Подсчет последовательностей из маленьких и больших элементов

Пусть [math]A=\{1, 2\}[/math], [math]W=\{1, 1, 0 \ldots 0\}[/math], [math]S=Seq(A)[/math] — множество всех последовательностей из маленьких и больших элементов [math]S=Seq(A)[/math]. Тогда [math]S_{n}=\sum_{i=1}^{n} w_{i} S_{n-1}=S_{n-1}+S_{n-2}=F_{n}[/math], где [math]F_{n}[/math][math]n[/math]-ое число Фибоначчи [1].

Подсчет подвешенных непомеченных деревьев с порядком на детях

Пусть [math]G_{n}[/math] — количество деревьев с [math]n[/math] вершинами, [math]G_{0} = 1[/math]. [math]S=Seq(A)[/math] — множество всех последовательностей из деревьев. [math]S_{n}[/math] — количество последовательностей с суммарным количество вершин [math]n[/math]. Чтобы получить дерево из [math]n[/math] вершин достаточно взять [math]1[/math] вершину и подвесить к ней последовательность деревьев с суммарным количеством вершин [math]n-1[/math]. Тогда [math]S_{n}=\sum_{i=1}^{n} G_{i} S_{n-1}=C_{n}[/math], где [math]C_{n}[/math][math]n[/math]-ое число Каталана, а [math]G_{n}=S_{n-1}[/math].

Ordered Rooted Trees.png

Множества

Утверждение:
Пусть [math]A=\{a_{1},a_{2}, \ldots ,a_{n}\}[/math] — множество из различных объектов, [math]S=PSet(A)[/math] — множество всех множеств объектов, составленных из элементов [math]A[/math], [math]W=\{w_{1},w_{2}, \ldots ,w_{k}\}[/math] — количество объектов веса [math]\{1 \ldots k\}[/math], составленных из элементов [math]A[/math], [math]w_{0} = 1[/math]. Тогда количество множеств из объектов суммарного веса [math]n[/math] можно вычислить как [math]S_{n}=s_{n, n}[/math], где [math]s_{n, k}=\sum_{i=0}^{\lfloor \frac{n}{k} \rfloor} \binom{n}{w_{k}} s_{n-ik, k-1}[/math] — количество таких множеств, что они содержат объекты суммарного веса [math]\leqslant k[/math].

Количество множеств из элементов [math]0[/math] или [math]1[/math]

Пусть [math]A={0, 1}[/math], [math]S=PSet(A)[/math] — множество всех множеств из [math]A[/math], [math]W=\{2, 0 \ldots 0\}[/math], [math]w_{0} = 1[/math]. Тогда [math]S_{n}=s_{n, n}[/math], где [math]s_{n, k}=\sum_{i=0}^{\lfloor \frac{n}{k} \rfloor} s_{n-ik, k-1}[/math]

[math]S_{0}=s_{0, 0} = 1[/math]
[math]S_{1}=s_{1, 1} = 2s_{1, 0} + 2s_{0, 0} = 2s_{0, 0} = 2[/math]
[math]S_{2}=s_{2, 2} = s_{2, 1} + s_{0, 1} = s_{2, 0} + 2s_{1, 0} + s_{0, 0}= s_{0, 0} = 1[/math]
[math]\{\}[/math]
[math]\{0\}, \{1\}[/math]
[math]\{0, 1\}[/math]


Количество разбиений на слагаемые

Пусть [math]A=\mathbb{N}[/math], [math]S=PSet(A)[/math] — множество всех разбиений на слагаемые, [math]W=\{1 \ldots 1\}[/math], [math]w_{0} = 1[/math]. Тогда [math]S_{n}=s_{n, n}[/math], где [math]s_{n, k}=\sum_{i=0}^{\lfloor \frac{n}{k} \rfloor} s_{n-ik, k-1} = s_{n, k-1} + s_{n - k, k}[/math], что, как не сложно заметить, соответсвует формуле, полученной методом динамического программирования.

Примeчания