В комбинаторике, особенно в аналитической комбинаторике, символический метод - это метод подсчета комбинаторных объектов. Он использует внутреннюю структуру объектов для получения формул их производящих функций. Этот метод в основном связан с Филиппом Флайоле и подробно описан в части A его книги с Робертом Седжвиком "Аналитическая комбинаторика"[1].
Базовые определения
Каждый комбинаторный объект состоит из атомов.
У атомов определен вес [math]w[/math]. Вес объектов равен сумме весов составляющих его атомов.
| Определение: |
| Считающей последовательностью называется последовательность [math]\left \{ a_0, a_1, ..., a_n \right \}[/math], где [math]a_i[/math] — количество объектов веса [math]i[/math]. |
| Определение: |
| Комбинаторным классом [math]A[/math] называется множество комбинаторных объектов, обладающих каким-то свойством. |
Непомеченные комбинаторные объекты
Введём атомы [math]\bullet[/math] и [math]\circ[/math] следующим образом:
[math]w(\bullet)=1[/math]
[math]w(\circ)=0[/math]
Производящую функцию класса [math]A[/math] обозначим [math]A(t)=\sum_{i=0}^{\infty }a_i t^i[/math], если [math]\{a_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]B[/math] называется комбинаторный класс [math]C=A \cup B=A+B[/math], состоящий из элементов обоих классов, причем равные объекты разных классов объявляются разными. |
Целью этого уточнения является возможность работать только со считающими последовательностями и производящими функциями.
[math]c_n=a_n+b_n[/math]
[math]C(t)=\left ( \sum_{i=0}^{\infty}a_i \cdot t^i \right ) + \left ( \sum_{i=0}^{\infty}b_i \cdot t^i \right ) = \sum_{i=0}^{\infty}(a_i + b_i)\cdot t^i =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][2] |
Последовательности комбинаторных классов
Ограниченная конструкция
| Определение: |
| Последовательностью [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=0[/math]). Этому есть как техническое, так и комбинаторное объяснение.
- Технически, если [math]a_0\gt 1[/math], то мы будем делить на отрицательное число; если [math]a_0=1[/math], то на функцию, у которой свободный член [math]0[/math], — что формализм производящих функций сделать не позволяет.
- Комбинаторное объяснение заключается в том, что если объектов веса ноль более 0, то мы можем создать бесконечное количество последовательностей веса 0 (комбинируя такие объекты), а мы хотим работать с конечными количествами последовательностей.
Примеры
- Последовательности из не менее, чем 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\left (t^2\right )}[/math]
Комбинаторный класс "Натуральные числа"
Вес числа равен его значению. Каждое натуральное число встречается 1 раз.
Считающая последовательность: [math]\left \{ 0, 1, ..., 1 \right \}[/math]
[math]w(n)=n[/math]
Класс "Натуральные числа" принято обозначать [math]I[/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]\triangleright[/math] |
|
Производящей функцией последовательности из [math]1[/math] явлется [math]Seq(\{1\})=\frac{1}{1-t}[/math].
Чтобы получить производящую функцию класса натуральных чисел, произведем сдвиг вправо по правилам работы со степенными рядами:
[math]t \cdot I(t) = t \cdot \frac{1}{1 - t} = \frac{t}{1-t}[/math] |
| [math]\triangleleft[/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]\frac{1}{1-2t}[/math] соответсвует ряду степеней [math]2[/math], а [math]\frac{1}{1-2t}[/math] — ряду [math]2^{x-1}[/math].
Множества
| Определение: |
| Множества [math]Set(A)[/math] — последовательности без повторений и порядка элементов. |
| Утверждение: |
[math]Set(A)=\prod_{\alpha \in A}\left(\varepsilon+\left \{ \alpha \right \}\right )[/math] |
| [math]\triangleright[/math] |
|
Докажем по индукции по потенциальным элементам множеств [math]A[/math].
База
[math]A=\varnothing[/math]
[math]Set(\varnothing)=\varepsilon=\prod_{\alpha\in A}\varepsilon[/math]
Переход
Пусть верно для множества [math]A_1[/math], докажем, что будет верно и для множества и [math]A_1+\{\alpha\}[/math], где [math]\alpha\in A\setminus A_1[/math]
В множестве каждый элемент может либо присутствовать, либо отсутствовать, поэтому [math]Set(A_1+\{\alpha\})=Set(A_1)+Set(A_1)\times\{\alpha\}=Set(A_1)(\varepsilon + \alpha)[/math]. |
| [math]\triangleleft[/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)(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]\triangleright[/math] |
|
Докажем по индукции по потенциальным элементам множеств [math]A[/math].
База
[math]A=\varnothing[/math]
[math]MSet(\varnothing)=\varepsilon=\prod_{\alpha\in A}\varepsilon[/math]
Переход
Отличие от множеств в том, что здесь каждый элемент может присутствовать в любом неотрицательном количестве экземпляров, поэтому для каждого элемента [math]\alpha[/math] берется [math]Seq(\{\alpha\})[/math]
Пусть верно для мультимножества [math]A_1[/math], докажем, что будет верно и для мультимножества и [math]A_1+Seq_{\geq1}(\{\alpha\})[/math], где [math]\alpha\in A\setminus A_1[/math]
[math]MSet(A_1+\{\alpha\})=MSet(A_1)+MSet(A_1)\times\{\alpha\}\times Seq_{\geq 1}(\{\alpha \})=MSet(A_1)\cdot Seq(\{\alpha\})[/math]. |
| [math]\triangleleft[/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]Set[/math] и [math]MSet[/math] не существует замкнутых формул, поэтому их объекты удобнее обозначать как помеченные. С помеченными объектами используется экспоненциальная производящая функция.
Напомним, что если [math]\left \{ a_i \right \}[/math] — считающая последовательность, то производящие функции выражаются следующим образом:
| Обычная |
[math]ogf(t) = \sum_{i=0}^{\infty}a_it^i[/math]
|
| Экспоненциальная |
[math]egf(t) = \sum_{i=0}^{\infty}\frac{a_it^i}{n!}[/math]
|
Далее под производящей функцией будет подразумеваться и использоваться экспоненциальная производящая функция, потому что формулы с ней более просты в работе.
Свойства экспоненциальной производящей функции
| Утверждение: |
Пусть [math]A(t)[/math] — экспоненциальная производящая функция последовательности [math]\{ a_0, a_1, ..., a_n, ... \}[/math], тогда [math]A'(t)[/math] — экспоненциальная производящая функция последовательности [math]B=\{ a_1, a_2, ..., a_n, ... \}[/math] |
| [math]\triangleright[/math] |
|
[math]B(t)=\sum_{n=0}^{\infty}\frac{a_{i+1}t^n}{n!}=\sum_{n=0}^{\infty}\frac{a_{i+1}t^n(n+1)}{(n+1)!}=A'(t)[/math] |
| [math]\triangleleft[/math] |
| Утверждение: |
[math]\left (\int A(t) \right )'=A(t)[/math][3] |
| Утверждение: |
Пусть [math]A(t)[/math] — экспоненциальная производящая функция последовательности [math]\{ a_0, a_1, ..., a_n, ... \}[/math], тогда [math]\int A(t)[/math] — экспоненциальная производящая функция последовательности [math]B=\{ 0, a_0, a_1, a_2, ..., a_n, ... \}[/math][4] |
| Утверждение: |
С точки зрения комбинаторики композиция производящих функций [math]A[/math] и [math]B[/math] означает подстановку вместо каждого возможного атома в [math]A[/math] всех объектов из класса [math]B[/math].
[math]A \left ( B \left ( t \right ) \right )=\sum_{n=0}^{\infty}\frac{B(t)^n\cdot a_n}{n!}[/math]
[math]c_n=\sum_{k=0}^na_k\sum_{t_1+t_2+...+t_k=n}\binom{n}{t_1, t_2, ..., t_n}\cdot b_{t_1} b_{t_2}\cdot...\cdot b_{t_n}[/math] |
Помеченные объекты
Помеченные комбинаторные объекты отличаются тем, что все атомы имеет разные значки; Если вес объекта равен [math]n[/math], то все атомы пронумерованы различными целыми числами от [math]1[/math] до [math]n[/math].
[math]w(①)=1[/math]
[math]w(\circ)=0[/math]
| Определение: |
| Комбинаторным объектом [math]Z[/math] называется комбинаторный объект, состоящий из одного атома веса [math]1[/math].
[math]Z=\left \{ ① \right \}[/math]
[math]Z(t)=t[/math] |
| Определение: |
| Комбинаторным объектом [math]\varepsilon[/math] называется комбинаторный объект, состоящий из одного атома веса [math]0[/math].
[math]\varepsilon=\left \{ \circ \right \}[/math]
[math]\varepsilon(t)=1[/math] |
Объединение комбинаторных классов
Одинаковых объектов также нет, мы ставим разные метки на одинаковые объекты из разных классов, чтобы сделать их различными.
[math]c_n=a_n+b_n[/math]
[math]C(t)=\left ( \sum_{i=0}^{\infty}\frac{a_i \cdot t^i}{i!} \right ) + \left ( \sum_{i=0}^{\infty}\frac{b_i \cdot t^i}{i!} \right ) = \sum_{i=0}^{\infty}\frac{(a_i + b_i)\cdot t^i}{i!}=A(t)+B(t)[/math]
Пары комбинаторных классов (декартово произведение комбинаторных классов)
Декартово произведение, определенное для непомеченных объектов, нам не даст корректный комбинаторный объект.
Пусть [math]A= \{[/math]
[math]\}[/math],
[math]B= \{[/math]
[math]\}[/math].
Тогда пара [math]([/math]
[math],[/math]
[math])[/math] будет иметь вес 5, но атомы не будут иметь различные пометки от 1 до 5.
Поэтому введем оператор [math]A \star B[/math], который
- Перебирает все пары из [math]A[/math] и [math]B[/math].
- В каждой паре перебирает все возможные способы перенумеровать атомы. Нумерация идёт в том же порядке, что и изначальная. То есть для каждого цикла при фиксированном наборе номеров есть ровно 1 способ занумеровать. Таким образом, в классе [math]A \star B[/math] будет лежать [math]([/math]
[math],[/math]
[math])[/math], но не будет лежать [math]([/math]
[math],[/math]
[math])[/math].
[math]c_n=\sum_{k=0}^na_kb_{n-k}\binom{n}{k}[/math](Сочетания)[math]=\sum_{k=0}^na_kb_{n-k}\frac{n!}{k!(n-k)!}=n! \cdot \sum_{k=0}^n\frac{a_k}{k!}\frac{b_{n-k}}{(n-k)!}[/math]
[math]C(t)=A(t) \cdot B(t)[/math]
Последовательности комбинаторных классов
Ограниченная конструкция
Последовательности длины [math]k[/math], как и в непомеченных комбинаторных объектах, формируются следующим образом:
- Cоставляются все возможные последовательности из [math]k[/math] объектов из [math]A[/math]
- Перенумеруются всеми возможными способами.
Их принято обозначать [math]Seq_k(A)[/math].
[math]n[/math]-тый член выражается следующим образом: [math]b_n=\sum_{t_1+t_2+...+t_k=n}\binom{n}{t_1}\cdot\binom{n-t_1}{t_2}\cdot...\cdot\binom{t_k}{t_k}\cdot\prod_{i=1}^{k}a_{t_i}=\sum_{t_1+t_2+...+t_k=n}\binom{n}{t_1, t_2,...,t_k}\cdot\prod_{i=1}^{k}a_{t_i}=\sum_{t_1+t_2+...+t_k=n}\frac{n!}{t_1! \cdot t_2! \cdot ... \cdot t_k!}\cdot\prod_{i=1}^{k}a_{t_i}=n!\sum_{t_1+t_2+...+t_k=n}\prod_{i=1}^{k}\frac{a_{t_i}}{t_i!}[/math]
Поэтому производящая функция — [math]B(t)=\left ( A\left (t\right ) \right )^k[/math]
Неограниченная конструкция
Определение [math]Seq(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]b_0=B(0)=0[/math], как и на [math]Seq(A)[/math] и [math]MSet(A)[/math] в формализме непомеченных объектов.
Пример
Перестановки
- [math]P=Seq(Z)[/math]
- Экспоненциальной производящей функцией является [math]P(t)=\frac{1}{1-t}[/math].
- Обычной производящей функции [math]\frac{1}{1-t}[/math] соответствует считающая последовательность [math]\left \{ 1, 1, ..., 1\right \}[/math], поэтому [math][t_n]\frac{1}{1-t}=1[/math].
- [math]p_n=n!\cdot[t_n]p(t)=n![/math]
Урны
Кобинаторный класс "Урна" — множество, характеризующееся только количеством атомов в объекте, то есть элементов каждого веса — [math]1[/math], поэтому [math]a_n=1[/math].
Производящая функция этого класса — [math]edf(t)=\sum_{n=0}^{\infty}\frac{1\cdot t^n}{n!}=\sum_{n=0}^{\infty}\frac{t^n}{n!}=e^t[/math].
Множества
В формализме помеченных объектов [math]MSet=Set[/math], потому что не бывает одинаковых элементов в множествах.
Ограниченная конструкция
| Определение: |
| Ограниченным множеством [math]A=Set_k(B)[/math] назовём множество из [math]k[/math] объектов (порядок не важен). |
Рассмотрим [math]\left \{ a_1, a_2, ..., a_k \right \} \in Set_k(B)[/math] и разобьем последовательности в [math]Seq_k(B)[/math] на классы эквивалентности по признаку равенства множеств элементов в них.
Каждому [math]Set_k(B)[/math] биективно соответствует [math]k![/math] последовательностей в [math]Seq_k(B)[/math], потому что все объекты различны.
[math]Set_k(B)\cdot k!=Seq_k(B)[/math]
[math]Set_k(B)(t)=A(t)=\frac{\left ( B \left ( t \right ) \right )^k}{k!}[/math]
Неограниченная конструкция
[math]A=Set(B)=\sum_{k=0}^{\infty}Set_k(b)[/math] — множества объектов (порядок не важен).
Ограничение [math]b_0=B(0)=0[/math] также действует.
[math]Set(A)(t)=\sum_{k=0}^{\infty}\frac{A(t)^k}{k!}=e^{A(t)}[/math]
Можно рассматривать [math]Set(A)[/math] как композицию урны и [math]A[/math], другими словами, можно вместо атомов в урне взять объекты класса [math]A[/math].
Ограниченная конструкция
| Определение: |
| Цикл [math]A=Cycle_k(B)[/math] — ориентированная циклическая последовательность из [math]k[/math] объектов класса [math]B[/math]. |
| Утверждение: |
Циклов нулевой длины [math]0[/math]. То есть, [math]c_0=0[/math]. |
| Утверждение: |
Каждому циклу [math](b_1, b_2, ..., b_k)[/math] длины [math]k[/math] биективно соответствует [math]k[/math] упорядоченных последовательностей ( циклические перестановки элементов цикла). |
Поэтому [math]Seq_k(A) = k\cdot Cycle_k(A)[/math]
Значит, экспоненциальная производящая функция циклов — [math]Cycle_k(A)(t)=\frac{Seq_k(A)(t)}{k}=\frac{A(t)^k}{k}[/math].
Неограниченная конструкция
| Определение: |
| Циклы [math]A=Cycle(B)=\sum_{k=0}^{\infty}Cycle_k(B)[/math]. |
[math]Cycle(A)(t)=\sum_{k=0}^{\infty}Cycle_k(A)(t)=0+\sum_{k=1}^{\infty}\frac{A(t)^k}{k}=-ln \left (1-A(t) \right )=ln\left (\frac{1}{1-A(t)}\right )[/math][5]
См.также
Примeчания
Источники информации