|
|
Строка 174: |
Строка 174: |
| <tex dpi="350">MSet(A)(t)=\prod_{\alpha \in A}Seq(\left \{ \alpha \right \})(t)=\prod_{\alpha \in A}\frac{1}{1-t^{w(\alpha)}}=\prod_{n=1}^{\infty}\left(\frac{1}{1-t^n}\right)^{a_n}</tex> | | <tex dpi="350">MSet(A)(t)=\prod_{\alpha \in A}Seq(\left \{ \alpha \right \})(t)=\prod_{\alpha \in A}\frac{1}{1-t^{w(\alpha)}}=\prod_{n=1}^{\infty}\left(\frac{1}{1-t^n}\right)^{a_n}</tex> |
| | | |
− | ----
| |
| | | |
| + | =Помеченные объекты= |
| | | |
− | Такие большие группы часто анализируют с помощью [[Производящая функция|производящих функций]]. Один из популярных методов {{---}} метод символов <ref>[[wikipedia:Symbolic method (combinatorics) | Wikipedia {{---}} Symbolic method]]</ref>. Он использует внутреннюю структуру объектов для получения производящих функций. В случае непомеченных объектов, как и в анализе в нашей статье, считается, что нет объектов нулевого веса. Иногда для удобства их добавляют, чтобы показать наличие одного пустого множества.
| + | Помеченные комбинаторные объекты отличаются тем, что все атомы имеет разные значки, а именно {{---}} если вес объекта <tex dpi="350">n</tex>, то все атомы пронумерованы различными целыми числами от <tex dpi="350">1</tex> до <tex dpi="350">n</tex>. |
| | | |
− | {{Утверждение
| + | <tex dpi="130">w(\textcircled{1})=1</tex> |
− | |statement=
| |
− | <tex dpi="150">Seq(A)(t)=\frac{1}{1-A(t)}</tex>. | |
− | |proof=
| |
| | | |
| + | <tex dpi="130">w(\circ)=0</tex> |
| | | |
− | <tex dpi="130"">S_{0} = 1</tex>, так как есть единственный способ составить пустую последовательность. | + | {{Определение |
| + | |definition= |
| + | Считающей последовательностью называется последовательность <tex dpi="130">\left \{ a_0, a_1, ..., a_n \right \}</tex>, где <tex dpi="130">a_i</tex> {{---}} количество объектов веса <tex dpi="130">i</tex>. |
| + | }} |
| | | |
− | Докажем по индукции.
| + | Производящую функцию класса <tex dpi="130">A</tex> обозначим <tex dpi="130">A(t)=\sum_{i=0}^{\infty }a_i t^i</tex>. |
| | | |
− | '''База <tex dpi="130"">n = 1</tex>'''.
| + | {{Определение |
− | :<tex dpi="130"">S_{1}=w_{1} S_{0}=w_{1}</tex>, что верно, так как единственный способ составить последовательность веса <tex dpi="130"">1</tex> {{---}} это взять любой элемент веса <tex dpi="130"">1</tex>.
| + | |definition= |
| + | Комбинаторным объектом <tex dpi="130">Z</tex> называется комбинаторный объект, состоящий из одного атома веса <tex dpi="130">1</tex>. |
| | | |
− | '''Переход'''.
| + | <tex dpi="130">Z=\left \{ \bullet \right \}</tex> |
− | :Пусть для <tex dpi="130"">j < n</tex> верно. Докажем для <tex dpi="130"">n</tex>. Возьмем произвольный элемент из <tex dpi="130"">A</tex> веса <tex dpi="130"">i \leqslant n</tex>, и допишем его к последовательности элементов веса <tex dpi="130"">n-i</tex>. Образуется новая последовательность веса <tex dpi="130"">n</tex>. Причем никакая последовательность не будет учтена дважды, так как прежде не было последовательностей веса <tex dpi="130"">n</tex> и ни к какой последовательности меньшего веса мы не добавляем один и тот же элемент дважды.
| |
| }} | | }} |
| | | |
| + | Считающая последовательность: <tex dpi="130">\left \{ 0, 1, 0, ..., 0 \right \}</tex>. |
| | | |
− | При непомеченных объектах рассмотренные классы имеют следующие производящие функции:
| |
| | | |
− | {| class="wikitable"
| + | Производящая функция последовательности: <tex dpi="130">Z(t)=t</tex>. |
− | |-align="center"
| |
− | !<tex dpi="130">Seq(A)</tex>||<tex dpi="130">\dfrac{1}{1-A(z)}</tex>
| |
− | |-align="center"
| |
− | !<tex dpi="130">PSet(A)</tex>||<tex dpi="130">\prod\limits_{n \geqslant 1}(1+z^{n})^{A_{n}}=\exp(-\sum\limits_{k \geqslant 1}\dfrac{(-1)^{k}A(z^{k})}{k})</tex>
| |
− | |-align="center"
| |
− | !<tex dpi="130">MSet(A)</tex>||<tex dpi="130">\prod\limits_{n \geqslant 1}\dfrac{1}{(1-z^{n})^{A_{n}}}=\exp(\sum\limits_{k \geqslant 1}\dfrac{A(z^{k})}{k})</tex>
| |
− | |-align="center"
| |
− | !<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> {{---}} [[Функция_Эйлера | функция Эйлера]].
| |
− | |}
| |
| | | |
− | Однако порой некоторые комбинаторные классы удобнее обозначать как помеченные. Например, {{---}} помеченные графы. С помеченными объектами используется экспоненциальная производящая функция <ref>[[wikipedia:exponential generating function | Wikipedia {{---}} Exponential generating function]]</ref>. В данном случае для некоторых рассмотренных классов используются следующие производящие функции:
| + | {{Определение |
| + | |definition= |
| + | Комбинаторным объектом <tex dpi="130">\varepsilon</tex> называется комбинаторный объект, состоящий из одного атома веса <tex dpi="130">0</tex>. |
| | | |
− | {| class="wikitable"
| + | <tex dpi="130">\varepsilon=\left \{ \circ \right \}</tex>. |
− | |-align="center"
| + | }} |
− | !<tex dpi="130">Seq(A)</tex>||<tex dpi="130">\dfrac{1}{1-A(z)}</tex>
| |
− | |-align="center"
| |
− | !<tex dpi="130">Pset(A)</tex>||<tex dpi="130">\exp(A(z))</tex>
| |
− | |-align="center"
| |
− | !<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">\ln\dfrac{1}{1-A(z)}</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"
| + | Считающая последовательность: <tex dpi="130">\left \{ 1, 0, ..., 0 \right \}</tex>. |
− | |-align="center"
| |
− | !<tex dpi="130">Seq_{2}(A)</tex>||<tex dpi="130>A(z)^{2}</tex>
| |
− | |-align="center"
| |
− | !<tex dpi="130">PSet_{2}(A)</tex>||<tex dpi="130">\dfrac{A(z)^{2}}{2}-\dfrac{A(z^{2})}{2}</tex>
| |
− | |-align="center"
| |
− | !<tex dpi="130">MSet_{2}(A)</tex>||<tex dpi="130">\dfrac{A(z)^{2}}{2}+\dfrac{A(z^{2})}{2}</tex>
| |
− | |-align="center"
| |
− | !<tex dpi="130">Cycle_{2}(A)</tex>||<tex dpi="130">\dfrac{A(z)^{2}}{2}+\dfrac{A(z^{2})}{2}</tex>
| |
− | |}
| |
| | | |
− | Аналогичные рассуждения можно провести и для больших <tex dpi="130">k</tex>, однако расчеты быстро становятся сложными. Классический способ исправления таких вопросов {{---}} [[Лемма Бёрнсайда и Теорема Пойа#Теорема Пойа | теорема Пойа]].
| |
| | | |
− | Однако в методе символов предлагается более глобальный подход, основанный на многомерных производящих функциях и использующий ряд Бюрмана-Лагранжа <ref>[[wikipedia:Lagrange inversion theorem | Wikipedia {{---}} Lagrange inversion theorem]]</ref>. В общем случае, используя метод символов, производящие функции ограниченных конструкций можно подсчитать следующим способом:
| + | Производящая функция последовательности: <tex dpi="130">\varepsilon(t)=1</tex>. |
− |
| |
− | {| class="wikitable"
| |
− | |-align="center"
| |
− | !<tex dpi="130">Seq_{k}(A)</tex>||<tex dpi="130">A(z)^{k}</tex>
| |
− | |-align="center"
| |
− | !<tex dpi="130">PSet_{k}(A)</tex>||<tex dpi="130">[u^{k}]\exp(-\sum\limits_{i=1}^{k}\dfrac{(-1)^{i}u^{i}A(z^{i})}{i})</tex>
| |
− | |-align="center"
| |
− | !<tex dpi="130">MSet_{k}(A)</tex>||<tex dpi="130">[u^{k}]\exp(\sum\limits_{i=1}^{k}\dfrac{u^{i}A(z^{i})}{i})</tex>
| |
− | |-align="center"
| |
− | !<tex dpi="130">Cycle_{k}(A)</tex>||<tex dpi="130">[u^{k}]\sum\limits_{i \geqslant 1}\dfrac{\phi(i)}{i}\ln\dfrac{1}{1 - u^{i}A(z^i)}</tex>, где <tex dpi="130">\phi(n)</tex> {{---}} [[Функция_Эйлера | функция Эйлера]].
| |
− | |}
| |
Непомеченные комбинаторные объекты
Каждый комбинаторный объект состоит из атомов.
У атомов определен вес [math]w[/math].
[math]w(\bullet)=1[/math]
[math]w(\circ)=0[/math]
Определение: |
Считающей последовательностью называется последовательность [math]\left \{ a_0, a_1, ..., a_n \right \}[/math], где [math]a_i[/math] — количество объектов веса [math]i[/math]. |
Производящую функцию класса [math]A[/math] обозначим [math]A(t)=\sum_{i=0}^{\infty }a_i t^i[/math].
Определение: |
Комбинаторным объектом [math]Z[/math] называется комбинаторный объект, состоящий из одного атома веса [math]1[/math].
[math]Z=\left \{ \bullet \right \}[/math] |
Считающая последовательность: [math]\left \{ 0, 1, 0, ..., 0 \right \}[/math].
Производящая функция последовательности: [math]Z(t)=t[/math].
Определение: |
Комбинаторным объектом [math]\varepsilon[/math] называется комбинаторный объект, состоящий из одного атома веса [math]0[/math].
[math]\varepsilon=\left \{ \circ \right \}[/math]. |
Считающая последовательность: [math]\left \{ 1, 0, ..., 0 \right \}[/math].
Производящая функция последовательности: [math]\varepsilon(t)=1[/math].
Определение: |
Комбинаторным классом [math]A[/math] называется множество комбинаторных объектов, обладающих каким-то свойством. |
Объединение комбинаторных классов
Определение: |
Объединением комбинаторных классов [math]A[/math] и [math]B[/math] называется комбинаторный класс [math]C=A \cup B=A+B=\left \{ c \mid c \in A \vee c \in B \right \}[/math]. |
При объединении комбинаторных классов одинаковые объекты разных классов считаются разными. Это делается так, чтобы не рассматривать внутреннюю структуру классов, а работать только со считающими последовательностями и производящими функциями.
[math]c_n=a_n+b_n[/math]
[math]C(t)=A(t)+B(t)[/math]
Пары комбинаторных классов (декартово произведение комбинаторных классов)
Определение: |
Парой комбинаторных классов [math]A[/math] и [math]B[/math] называется комбинаторный класс [math]C=Pair(A, B)=A \times B=\left \{ (\alpha, \beta) \mid \alpha \in A, \beta \in B \right \}[/math]. |
[math]w\left ( \left ( \alpha, \beta \right ) \right )=w(\alpha) + w(\beta)[/math]
[math]c_n=\sum_{k=0}^{n}a_k b_{n-k}[/math]
Утверждение: |
[math]C(t)=A(t) \cdot B(t)[/math] |
[math]\triangleright[/math] |
Верно, потому что коэффициенты производящей функции описываются описываются равенством выше) |
[math]\triangleleft[/math] |
Последовательности комбинаторных классов
Определение: |
Последовательностью [math]k[/math] объектов из [math]A[/math] называется [math]B=Seq_k(A)=\left \{ (\alpha_1, ..., \alpha_k) \mid \alpha_i \in A \right \}[/math].
[math]w(\left \{ (\alpha_1, ..., \alpha_k) \mid \alpha_i \in A \right \})=\sum_{i=0}^{k}\alpha_i[/math] |
Утверждение: |
[math]Seq_k(A)(t)=A(t)^k[/math] |
[math]\triangleright[/math] |
Докажем по индукции:
База [math]k=1[/math].
- Для [math]k=1[/math] верно, потому что [math]Seq_1(A)=A \Rightarrow Seq_1(A)(t)=A(t)=A(t)^1[/math].
Переход.
- Пусть для [math]k=n[/math] верно [math]Seq_n(A)(t)=A(t)^n[/math]. Докажем для
[math]k=n+1[/math]: [math]Seq_{n+1}(A)(t)=A(t)^{n+1}[/math]. Рассмотрим [math]Seq_{n+1}(A)[/math] как [math]Pair(Seq_n(A), A)[/math]. Тогда [math]Seq_{n+1}(A)(t)=A(t)^n \cdot A(t)=A(t)^{n+1}[/math]. |
[math]\triangleleft[/math] |
Определение: |
Последовательностью (всех возможных длин) объектов из [math]A[/math] называется [math]B=Seq(A)=\sum_{i=0}^{\infty}Seq_i(A)[/math]. |
Утверждение: |
[math]Seq(A)(t)=\frac{1}{1 - A(t)}[/math] |
[math]\triangleright[/math] |
[math]Seq(A)(t)=\sum_{i=0}^{\infty}Seq_i(A)(t)=\sum_{i=0}^{\infty}A(t)^i=\frac{1}{1 - A(t)}[/math] (Геометрическая прогрессия) |
[math]\triangleleft[/math] |
Ограничение: [math]a_0=0[/math]. Этому есть как техническое, так и комбинаторное объяснение.
- Технически, если [math]a_0\gt 1[/math], то мы будем делить на отрицательное число; если [math]a_0=1[/math], то на функцию, у которой свободный член [math]0[/math], — что формализм производящих функций сделать не позволяет.
- Комбинаторное объяснение заключается в том, что если объектов веса ноль более 0, то мы можем создать бесконечное количество последовательностей веса 0 (комбинируя такие объекты), а мы хотим работать с конечными количествами последовательностей.
[math]A(0)=0[/math]
Примеры:
- Последовательночти из не менее 3 объектов:
- [math]Seq_{\geq 3}=Pair(Seq_3(A), Seq(A))=Seq(A)-Seq_0(A)-Seq_1(A)-Seq_2(A)[/math]
- [math]Seq_{\geq 3}(t)=Pair(Seq_3(A), Seq(A))(t)=A(t)^3 \cdot \frac{1}{1-A(t)}=\frac{A(t)^3}{1-A(t)}=(Seq(A)-Seq_0(A)-Seq_1(A)-Seq_2(A))(t)=\frac{1}{1-A(t)}-0-A(t)-A(t)^2[/math]
- Последовательности чётной длины:
- [math]Seq_{\vdots 2}(A)=Seq(Pair(A, A))[/math]
- [math]Seq_{\vdots 2}(A)(t)=Seq(Pair(A, A))(t)=\frac{1}{1-A(t)^2}[/math]
Комбинаторный объект "Натуральные числа"
Вес числа равен его значению. Каждое натуральное число встречается 1 раз.
Считающая последовательность: [math]\left \{ 0, 1, ..., 1 \right \}[/math]
[math]w(n)=n[/math]
[math]c_n=\left\{\begin{matrix}
0, n=0\\
1, n\gt 0
\end{matrix}\right.[/math]
[math]I(t) = \frac{t}{1 - t}[/math]
[math]Seq(I)[/math] — упорядоченное разбиение на слагаемые.
[math]Seq(I)(t)=\frac{1}{1-\frac{t}{1-t}}=\frac{1-t}{1-2t}=\frac{1}{1-2t}-\frac{t}{1-2t}[/math]
[math]\left [ t^n \right ] \frac{1-t}{1-2t} = \left\{\begin{matrix}
2 ^ n - 2 ^ {n - 1} = 2 ^ {n - 1}, n \gt 0
\\
1, n = 0
\end{matrix}\right.[/math]
Множества
Множества [math]Set(A)[/math] — последовательности без повторений и порядка элементов.
Пример:
- [math]A = \left \{ \alpha, \beta, \gamma \right \}[/math]
- [math]Set(A) = \left \{ \varnothing, \left \{ \alpha \right \}, \left \{ \beta\right \}, \left \{ \gamma \right \}, \left \{ \alpha, \beta\right \}, \left \{ \alpha, \gamma \right \}, \left \{ \beta, \gamma \right \}, \left \{ \alpha, \beta, \gamma \right \} \right \}[/math]
[math]Set(A)=\prod_{\alpha \in A}\left(\varepsilon+\left \{ \alpha \right \}\right )[/math]
[math]Set(A)(t)=\prod_{\alpha \in A}\left(\varepsilon+\left \{ \alpha \right \}\right )(t)=\prod_{\alpha \in A}(1+t^{w(\alpha)})=\prod_{n=0}^{\infty}(1+t^n)^{a_n}[/math]
Мультимножества
Мультимножества [math]MSet(A)[/math] — последовательности с повторениями, но без порядка элементов.
Как и с [math]Seq(A)[/math] существует ограничение на [math]A[/math]: [math]a_0=A(0)=0[/math].
[math]MSet(A)=\prod_{\alpha \in A}Seq(\left \{ \alpha \right \})[/math]
[math]MSet(A)(t)=\prod_{\alpha \in A}Seq(\left \{ \alpha \right \})(t)=\prod_{\alpha \in A}\frac{1}{1-t^{w(\alpha)}}=\prod_{n=1}^{\infty}\left(\frac{1}{1-t^n}\right)^{a_n}[/math]
Помеченные объекты
Помеченные комбинаторные объекты отличаются тем, что все атомы имеет разные значки, а именно — если вес объекта [math]n[/math], то все атомы пронумерованы различными целыми числами от [math]1[/math] до [math]n[/math].
[math]w(\textcircled{1})=1[/math]
[math]w(\circ)=0[/math]
Определение: |
Считающей последовательностью называется последовательность [math]\left \{ a_0, a_1, ..., a_n \right \}[/math], где [math]a_i[/math] — количество объектов веса [math]i[/math]. |
Производящую функцию класса [math]A[/math] обозначим [math]A(t)=\sum_{i=0}^{\infty }a_i t^i[/math].
Определение: |
Комбинаторным объектом [math]Z[/math] называется комбинаторный объект, состоящий из одного атома веса [math]1[/math].
[math]Z=\left \{ \bullet \right \}[/math] |
Считающая последовательность: [math]\left \{ 0, 1, 0, ..., 0 \right \}[/math].
Производящая функция последовательности: [math]Z(t)=t[/math].
Определение: |
Комбинаторным объектом [math]\varepsilon[/math] называется комбинаторный объект, состоящий из одного атома веса [math]0[/math].
[math]\varepsilon=\left \{ \circ \right \}[/math]. |
Считающая последовательность: [math]\left \{ 1, 0, ..., 0 \right \}[/math].
Производящая функция последовательности: [math]\varepsilon(t)=1[/math].