Числа Стирлинга первого рода — различия между версиями
(→Применение) |
м (rollbackEdits.php mass rollback) |
||
(не показано 11 промежуточных версий 6 участников) | |||
Строка 1: | Строка 1: | ||
− | '''Числа Стирлинга первого рода''' (''Stirling numbers of the first kind'') — количество [[Комбинаторные объекты|перестановок]] порядка <tex dpi="130">n</tex> с <tex dpi="130">k</tex> [[Действие перестановки на набор из элементов, представление в виде циклов|циклами]]. Числа Стирлинга I рода обозначаются как <tex dpi="130">s(n,k)</tex> или <tex dpi=" | + | '''Числа Стирлинга первого рода''' (англ. ''Stirling numbers of the first kind'') — количество [[Комбинаторные объекты|перестановок]] порядка <tex dpi="130">n</tex> с <tex dpi="130">k</tex> [[Действие перестановки на набор из элементов, представление в виде циклов|циклами]]. Числа Стирлинга I рода обозначаются как <tex dpi="130">s(n,k)</tex> или <tex dpi="170">\left[{n\atop k}\right]</tex>. |
==Пример== | ==Пример== | ||
<tex dpi="130">s(4,2)=11</tex> | <tex dpi="130">s(4,2)=11</tex> | ||
− | Существует 11 разбиений перестановки из четырех элементов на два цикла: | + | Существует <tex> 11 </tex> разбиений перестановки из четырех элементов на два цикла: |
− | <tex dpi="130">(1)(2; 4; 3) \qquad (1)(2; 3; 4)</tex | + | <tex dpi="130">(1)(2; 4; 3) \qquad (1)(2; 3; 4)</tex> |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | Заметим, что | + | <tex dpi="130">(2)(1; 4; 3) \qquad (2)(1; 3; 4)</tex> |
+ | |||
+ | <tex dpi="130">(3)(1; 4; 2) \qquad (3)(1; 2; 4)</tex> | ||
+ | |||
+ | <tex dpi="130">(4)(1; 3; 2) \qquad (4)(1; 2; 3)</tex> | ||
+ | |||
+ | <tex dpi="130">(1; 2)(3; 4)</tex> | ||
+ | |||
+ | <tex dpi="130">(1; 4)(2; 3)</tex> | ||
+ | |||
+ | <tex dpi="130">(1; 3)(2; 4)</tex> | ||
+ | |||
+ | Заметим, что разбиения <tex dpi="130">(1)(2; 3; 4)</tex> и <tex dpi="130">(1)(2; 4; 3)</tex> считаются различными, так как цикл <tex dpi="130">(2; 3; 4)</tex> невозможно получить ни из подмножества <tex dpi="130">(1)</tex>, ни из подмножества <tex dpi="130">(2; 4; 3)</tex> с помощью циклического сдвига элементов. | ||
==Вычисление== | ==Вычисление== | ||
=== Рекуррентное соотношение === | === Рекуррентное соотношение === | ||
− | + | Выведем рекуррентную формулу для вычисления чисел Стирлинга первого рода. Каждое представление <tex dpi="130">n</tex> элементов в виде <tex dpi="130">k</tex> циклов либо помещает последний элемент (<tex dpi="130">n-</tex>ый) в отдельный цикл <tex dpi="130">s(n-1, k-1)</tex> способами, либо вставляет этот элемент в одно из <tex dpi="130">s(n-1, k)</tex> циклических представлений первых <tex dpi="130">(n-1)</tex> элементов. В последнем случае существует <tex dpi="130">(n-1)</tex> различных способов подобной вставки. Например, при вставке элемента <tex>4</tex> в цикл <tex>(1;2;3)</tex> можно получить только <tex> 3 </tex> разных цикла: <tex dpi="130">(1;2;3;4), (1;2;4;3), (1;4;2;3)</tex>. Таким образом, рекуррентность имеет вид: | |
− | + | <p> | |
− | + | <tex dpi="130"> | |
− | + | s(n, k) = | |
− | + | \left \{\begin{array}{ll} s(0, 0) = 1, \\ | |
− | Выведем рекуррентную формулу для вычисления чисел Стирлинга первого рода. Каждое представление <tex dpi="130">n</tex> элементов в виде <tex dpi="130">k</tex> циклов либо помещает последний элемент(<tex dpi="130">n-</tex>ый) в отдельный цикл <tex dpi="130">s(n-1, k-1)</tex> способами, либо вставляет этот элемент в одно из <tex dpi="130">s(n-1, k)</tex> циклических представлений первых <tex dpi="130">(n-1)</tex> элементов. В последнем случае существует <tex dpi="130">(n-1)</tex> различных способов подобной вставки. Например, при вставке элемента <tex>4</tex> в цикл <tex>(1;2;3)</tex> можно получить только 3 разных цикла: <tex dpi="130">(1;2;3;4), (1;2;4;3), (1;4;2;3)</tex>. Таким образом, рекуррентность имеет вид: | + | s(n, 0) = 0, & n > 0 \\ |
− | + | s(0, k) = 0, & k > 0 \\ | |
+ | s(n,k) = s(n-1,k-1)+(n-1)s(n-1,k), & n,k > 0 \end{array} \right. | ||
+ | </tex> | ||
+ | </p> | ||
'''Доказательство''' | '''Доказательство''' | ||
Строка 31: | Строка 40: | ||
Рассмотрим <tex dpi="130">s(n+1,k)</tex>: | Рассмотрим <tex dpi="130">s(n+1,k)</tex>: | ||
:По определению, данному выше: | :По определению, данному выше: | ||
− | :<tex dpi="130">(x)^{n+1}=x(x+1)(x+2) | + | :<tex dpi="130">(x)^{n+1}=x(x+1)(x+2) \dots (x+n-1)(x+n) = n(x)^{n}+x(x)^{n}</tex> |
Заметим, что коэффициенты <tex dpi="130">(x)^{n+1}</tex> — это <tex dpi="130">s(n+1,k)</tex> | Заметим, что коэффициенты <tex dpi="130">(x)^{n+1}</tex> — это <tex dpi="130">s(n+1,k)</tex> | ||
Строка 37: | Строка 46: | ||
Аналогично можно сказать, что коэффициенты <tex dpi="130">n(x)^{n}</tex> — это <tex dpi="130">ns(n,k)</tex> | Аналогично можно сказать, что коэффициенты <tex dpi="130">n(x)^{n}</tex> — это <tex dpi="130">ns(n,k)</tex> | ||
− | А коэффициенты <tex dpi="130">x(x)^{n}</tex> — это <tex dpi="130">s(n,k-1)</tex>, так как степени при <tex dpi="130">x</tex> увеличатся на 1, а коэффициенты при этом не изменятся. | + | А коэффициенты <tex dpi="130">x(x)^{n}</tex> — это <tex dpi="130">s(n,k-1)</tex>, так как степени при <tex dpi="130">x</tex> увеличатся на <tex> 1 </tex>, а коэффициенты при этом не изменятся. |
Так как левая и правая части равенства равны как полиномы, то равны и коэффициенты перед <tex dpi="130">x^k</tex>, следовательно справедливо равенство: | Так как левая и правая части равенства равны как полиномы, то равны и коэффициенты перед <tex dpi="130">x^k</tex>, следовательно справедливо равенство: | ||
Строка 182: | Строка 191: | ||
==Применение== | ==Применение== | ||
− | Равносильное определение получается, если числа Стирлинга задать как коэффициенты в разложении: <tex dpi="130">(x)^{n} = \ | + | Равносильное определение получается, если числа Стирлинга задать как коэффициенты в разложении: <tex dpi="130">(x)^{n} = \sum\limits_{k=1}^n s(n,k) x^k,</tex> |
− | Следовательно, числа Стирлинга I рода позволяют перейти от базиса <tex dpi="130">(x)^{1},(x)^{2},(x)^{3} | + | Следовательно, числа Стирлинга I рода позволяют перейти от базиса <tex dpi="130">(x)^{1},(x)^{2},(x)^{3} \dots </tex> к базису <tex dpi="130">1,x,x^2 \dots </tex> (одно из основных применений) |
− | Здесь <tex dpi="130">(x)^{n}</tex> обозначим как возрастающие факториальные степени или [http://ru.wikipedia.org/wiki/Символ_Похгаммера | + | Здесь <tex dpi="130">(x)^{n}</tex> обозначим как возрастающие факториальные степени или символ Похгаммера<ref> [http://ru.wikipedia.org/wiki/Символ_Похгаммера Википедия {{---}} Символ Похгаммера]</ref>: |
− | :<tex dpi="130">(x)^{n}=x(x+1)(x+2) | + | :<tex dpi="130">(x)^{n}=x(x+1)(x+2) \dots (x+n-1).</tex> |
Для ясности рассмотрим пример, при котором <tex>n=3</tex>: | Для ясности рассмотрим пример, при котором <tex>n=3</tex>: | ||
Строка 196: | Строка 205: | ||
:<tex dpi="130">s(3,1)=2</tex> | :<tex dpi="130">s(3,1)=2</tex> | ||
− | == | + | {{Теорема |
+ | |statement= | ||
+ | Числа Стирлинга I рода образуют матрицу переходов в линейном пространстве полиномов базиса возрастающих факториальных степеней к базису обычных степеней <tex dpi="130"> \forall n \in \mathbb{N} : \quad (x)^{n} = \sum\limits_{k=1}^n s(n,k) x^k</tex>. | ||
+ | |proof= | ||
+ | Индукция по <tex>n</tex>: | ||
+ | |||
+ | '''База''': Для <tex>n = 1</tex>, <tex> (x)^{1} = x^{1} </tex> {{---}} очевидно. | ||
+ | |||
+ | '''Переход''': Учитывая, что <tex> (x)^{n} = (x)^{n-1} \cdot (x+n-1) </tex> имеем: | ||
+ | |||
+ | <tex> (x)^{n} = (x)^{n-1} \cdot (x+n-1) = x \cdot (x)^{n-1} + (n-1) \cdot (x)^{n-1} = </tex> <tex> \sum\limits_{k=1}^{n-1} s(n-1,k) x^{k+1} + \sum\limits_{k=1}^{n-1} s(n-1,k) x^k \cdot (n-1) </tex>, | ||
+ | |||
+ | Введём <tex> t = k + 1 </tex> для первой суммы | ||
+ | |||
+ | <tex>\sum\limits_{t=2}^{n} s(n-1,t-1) x^{t} + \sum\limits_{k=1}^{n-1} s(n-1,k) x^k \cdot (n-1) </tex> | ||
+ | |||
+ | При <tex> t = 1 , \quad \sum\limits_{t=2}^{n} s(n-1,t-1) x^{t} = 0 </tex>, | ||
− | + | При <tex> k = n , \quad \sum\limits_{k=1}^{n-1} s(n-1,k) x^k \cdot (n-1) = 0 </tex>. | |
− | : | + | Следовательно, мы можем представить выражение в виде одной суммы: |
− | + | <tex> \sum\limits_{k=1}^{n} (s(n-1,k-1)+(n-1)s(n-1,k)) \cdot x^{k} = \sum\limits_{k=1}^n s(n,k) x^k</tex> | |
− | + | }} | |
− | + | ==Дополнительные тождества== | |
− | : | + | Как уже упоминалось ранее: |
− | + | #<tex dpi = "160">\left[{0\atop 0}\right]=1</tex> | |
+ | #<tex dpi = "160">\left[{n\atop 0}\right]=\left[{0\atop k}\right]=0</tex>, в общем случае <tex dpi = "160">\left[{n\atop k}\right]=0</tex>, если <tex>k > n</tex> | ||
− | : | + | Также: |
− | :<tex dpi="160">\left[{n\atop n-3}\right]={n \choose 2}{n \choose 4}</tex> | + | #<tex dpi="160">\left[{n\atop 1}\right]=(n-1)!</tex> |
+ | #:Зафиксируем один элемент, и переставим оставшиеся всеми возможными способами. Повторений не будет, так как чтобы зафиксированный элемент совпал, нужно сдвинуть всю перестановку на <tex dpi = "160">n</tex>, но тогда мы получим исходную перестановку. | ||
+ | #<tex dpi="160">\left[{n\atop n}\right]=1</tex>, очевидно | ||
+ | #<tex dpi="160">\left[{n\atop n-1}\right]={n \choose 2}</tex> | ||
+ | #:Разбить <tex dpi = "160">n</tex> элементов на <tex dpi = "160">n-1</tex> множество можно только одним образом, а именно на множества состоящие из одного элемента и одно множество состоящее из двух. Так как нас интересуют только циклы, получаем выборку двух элементов из всех элементов(множество состоящее из двух элементов всегда является циклом). | ||
+ | #<tex dpi="160">\left[{n\atop n-2}\right]=\frac{1}{4} (3n-1) {n \choose 3}</tex> | ||
+ | #:По аналогии с предыдущим тождеством получаем, что нас интересуют виды конкатенации множеств <tex dpi = "160">((n-4)*1+2+2), ((n-3)*1+3)</tex>. Тогда искомая формула получается упрощением выражения <tex dpi = "160">2! \times {n \choose 3} + \frac{{n \choose 2} \times {n-2 \choose 2}}{2!}</tex>, которая учитывает фиксацию элемента в трехэлементном множестве и повторения двухэлементных. | ||
+ | #<tex dpi="160">\left[{n\atop n-3}\right]={n \choose 2}{n \choose 4}</tex> | ||
+ | #:Аналогично, учитываем только интересующие нас множества и получаем формулу <tex dpi = "160">2! \times {n \choose 2}{n-2 \choose 3} + \frac{{n \choose 2} \times {n-2 \choose 2} \times {n-4 \choose 2}}{3!} + 3! \times {n \choose 4}={n \choose 2}{n \choose 4}</tex>. | ||
Для целых, положительных <tex>l,m,n:</tex> | Для целых, положительных <tex>l,m,n:</tex> | ||
− | + | #<tex dpi="160">\left[{n+1\atop m+1}\right]=\sum\limits_{k=1}^n \left[{n\atop k}\right] {k \choose m}=n! \sum\limits_{k=0}^n \frac{\left[{k\atop m}\right]}{k!} </tex> | |
− | :<tex dpi="160">\left[{n\atop m}\right]=\sum_{k=1}^n \left[{n+1\atop k+1}\right] {k \choose m} (-1)^{m-k} </tex> | + | #:Второе равенство доказывается путем постепенного спуска вниз: |
− | :<tex dpi="160">\left[{m+n+1\atop m}\right]=\ | + | #:<tex dpi="160">\left[{n+1\atop m+1}\right]=\left[{n\atop m}\right] + n \cdot \left[{n\atop m+1}\right]=\left[{n\atop m}\right] + n \cdot \left(\left[{n-1\atop m}\right] + (n-1) \cdot \left[{n-1\atop m+1}\right]\right)=...=\sum\limits_{k=0}^n \left[{k\atop m}\right]\frac{n!}{k!}=n! \sum\limits_{k=0}^n \frac{\left[{k\atop m}\right]}{k!}</tex> |
+ | #:Чтобы доказать первое, будем использовать биекцию(из прошлого раздела) в факториальные степени, а также формулу <tex dpi="160">(x)_{n+1} = x \cdot (x-1)_n \;</tex>. | ||
+ | #:Разложим наше искомое выражение, используя формулу для факториальных степеней, и применив бином Ньютона для второго множителя. Тогда: <tex dpi="160">(x)_{n+1}=\sum_{i=0}^{n}\sum_{k=0}^{i} \left[{n\atop i}\right]\binom{i}{k} x^{k+1}</tex>. Немного преобразовав, получим: <tex dpi="160">(x)_{n+1}=\sum_{k=0}^{n}\sum_{i=k}^{n} \left[{n\atop i}\right]\binom{i}{k} x^{k+1} \;</tex> | ||
+ | #:C другой стороны: <tex dpi="160">(x)_{n+1}=\sum_{k=0}^{n+1} \left[{n+1\atop k}\right] x^k = \sum_{k=0}^{n} \left[{n+1\atop k+1}\right] x^{k+1}</tex> | ||
+ | #:Приравниваем эти два выражения и получаем искомую формулу. | ||
+ | #<tex dpi="160">\left[{n\atop m}\right]=\sum\limits_{k=1}^n \left[{n+1\atop k+1}\right] {k \choose m} (-1)^{m-k} </tex> | ||
+ | #:Доказательство аналогично предыдущему с учетом знакочередования в убывающих факториальных степенях. | ||
+ | #<tex dpi="160">\left[{m+n+1\atop m}\right]=\sum\limits_{k=0}^m (n+k) \left[{n+k\atop k}\right]</tex> | ||
+ | #:Постепенно раскладываем и получаем искомую формулу: | ||
+ | #:<tex dpi="160">\left[{m+n+1\atop m}\right]=\left[{m+n\atop m-1}\right]+\left[{m+n\atop m}\right]\cdot(m+n)=\left[{m+n-1\atop m-2}\right]+\left[{m+n\atop m}\right]\cdot(m+n)+\left[{m+n-1\atop m-1}\right]\cdot(m+n-1)=...=\sum\limits_{k=0}^m (n+k) \left[{n+k\atop k}\right]</tex> | ||
==Связь между числами Стирлинга== | ==Связь между числами Стирлинга== | ||
− | Если числа Стирлинга I рода позволяют перейти от базиса <tex dpi="130">(x)^{1},(x)^{2},(x)^{3} | + | Если числа Стирлинга I рода позволяют перейти от базиса <tex dpi="130">(x)^{1},(x)^{2},(x)^{3} \dots </tex> к базису <tex dpi="130">1,x,x^2 \dots </tex>, |
− | то числа Стирлинга | + | то [[Числа Стирлинга второго рода|числа Стирлинга II рода]] играют обратную роль и позволяют перейти от базиса <tex dpi="130">1,x,x^2 \dots </tex> к базису <tex dpi="130">(x)^{1},(x)^{2},(x)^{3} \dots </tex> |
Следовательно, числа Стирлинга тесно связаны друг с другом, а их связь выражается формулой: | Следовательно, числа Стирлинга тесно связаны друг с другом, а их связь выражается формулой: | ||
− | :<tex dpi="130">\ | + | : <p> |
+ | |||
+ | <tex dpi="130"> | ||
+ | \sum\limits_{k=1}^n S(n,k) s(k,m) (-1)^{k-m} = | ||
+ | \left \{\begin{array}{ll} 1, & n=m \\ | ||
+ | 0, & \text{otherwise} \end{array} \right. | ||
+ | </tex> | ||
+ | </p> | ||
+ | |||
==См. также== | ==См. также== | ||
* [[Числа Стирлинга второго рода]] | * [[Числа Стирлинга второго рода]] | ||
+ | * [[Числа Эйлера I и II рода]] | ||
− | == | + | == Примечания == |
+ | <references/> | ||
+ | |||
+ | ==Источники информации== | ||
* [http://ru.wikipedia.org/wiki/Числа_Стирлинга_первого_рода Википедия {{---}} Числа Стирлинга первого рода] | * [http://ru.wikipedia.org/wiki/Числа_Стирлинга_первого_рода Википедия {{---}} Числа Стирлинга первого рода] | ||
* [http://en.wikipedia.org/wiki/Stirling_numbers_of_the_first_kind Wikipedia {{---}} Stirling numbers of the first kind] | * [http://en.wikipedia.org/wiki/Stirling_numbers_of_the_first_kind Wikipedia {{---}} Stirling numbers of the first kind] | ||
− | + | * Graham, Knuth, and Patashnik: Concrete Mathematics Second Edition 1994, ISBN 0-201-55802-5 {{---}} 257-267 с. | |
− | * Graham, Knuth, and Patashnik: Concrete Mathematics Second Edition 1994 ISBN 0-201-55802-5 | + | |
− | * В. Липский: Комбинаторика для программистов 1988 ISBN 5-03-000979-5 | + | * В. Липский: Комбинаторика для программистов 1988, ISBN 5-03-000979-5 {{---}} 49-50 с. |
[[Категория: Дискретная математика и алгоритмы]] | [[Категория: Дискретная математика и алгоритмы]] | ||
[[Категория: Комбинаторика]] | [[Категория: Комбинаторика]] |
Текущая версия на 19:23, 4 сентября 2022
Числа Стирлинга первого рода (англ. Stirling numbers of the first kind) — количество перестановок порядка с циклами. Числа Стирлинга I рода обозначаются как или .
Содержание
Пример
Существует
разбиений перестановки из четырех элементов на два цикла:
Заметим, что разбиения
и считаются различными, так как цикл невозможно получить ни из подмножества , ни из подмножества с помощью циклического сдвига элементов.Вычисление
Рекуррентное соотношение
Выведем рекуррентную формулу для вычисления чисел Стирлинга первого рода. Каждое представление
элементов в виде циклов либо помещает последний элемент ( ый) в отдельный цикл способами, либо вставляет этот элемент в одно из циклических представлений первых элементов. В последнем случае существует различных способов подобной вставки. Например, при вставке элемента в цикл можно получить только разных цикла: . Таким образом, рекуррентность имеет вид:
Доказательство
Рассмотрим
:- По определению, данному выше:
Заметим, что коэффициенты
— этоАналогично можно сказать, что коэффициенты
— этоА коэффициенты
— это , так как степени при увеличатся на , а коэффициенты при этом не изменятся.Так как левая и правая части равенства равны как полиномы, то равны и коэффициенты перед
, следовательно справедливо равенство:- или
Таблица значений
Найдём числовые значения
для малых и .n\k | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | |||||||||
1 | 0 | 1 | ||||||||
2 | 0 | 1 | 1 | |||||||
3 | 0 | 2 | 3 | 1 | ||||||
4 | 0 | 6 | 11 | 6 | 1 | |||||
5 | 0 | 24 | 50 | 35 | 10 | 1 | ||||
6 | 0 | 120 | 274 | 225 | 85 | 15 | 1 | |||
7 | 0 | 720 | 1764 | 1624 | 735 | 175 | 21 | 1 | ||
8 | 0 | 5040 | 13068 | 13132 | 6769 | 1960 | 322 | 28 | 1 | |
9 | 0 | 40320 | 109584 | 118124 | 67284 | 22449 | 4536 | 546 | 36 | 1 |
Применение
Равносильное определение получается, если числа Стирлинга задать как коэффициенты в разложении:
Следовательно, числа Стирлинга I рода позволяют перейти от базиса
к базису (одно из основных применений)Здесь [1]:
обозначим как возрастающие факториальные степени или символ ПохгаммераДля ясности рассмотрим пример, при котором
:- , здесь коэффициенты при — это , то есть:
Теорема: |
Числа Стирлинга I рода образуют матрицу переходов в линейном пространстве полиномов базиса возрастающих факториальных степеней к базису обычных степеней . |
Доказательство: |
Индукция по :База: Для , — очевидно.Переход: Учитывая, что имеем:, Введём для первой суммы
При ,При .Следовательно, мы можем представить выражение в виде одной суммы: |
Дополнительные тождества
Как уже упоминалось ранее:
- , в общем случае , если
Также:
- Зафиксируем один элемент, и переставим оставшиеся всеми возможными способами. Повторений не будет, так как чтобы зафиксированный элемент совпал, нужно сдвинуть всю перестановку на , но тогда мы получим исходную перестановку.
- , очевидно
- Разбить элементов на множество можно только одним образом, а именно на множества состоящие из одного элемента и одно множество состоящее из двух. Так как нас интересуют только циклы, получаем выборку двух элементов из всех элементов(множество состоящее из двух элементов всегда является циклом).
- По аналогии с предыдущим тождеством получаем, что нас интересуют виды конкатенации множеств . Тогда искомая формула получается упрощением выражения , которая учитывает фиксацию элемента в трехэлементном множестве и повторения двухэлементных.
- Аналогично, учитываем только интересующие нас множества и получаем формулу .
Для целых, положительных
- Второе равенство доказывается путем постепенного спуска вниз:
- Чтобы доказать первое, будем использовать биекцию(из прошлого раздела) в факториальные степени, а также формулу .
- Разложим наше искомое выражение, используя формулу для факториальных степеней, и применив бином Ньютона для второго множителя. Тогда: . Немного преобразовав, получим:
- C другой стороны:
- Приравниваем эти два выражения и получаем искомую формулу.
- Доказательство аналогично предыдущему с учетом знакочередования в убывающих факториальных степенях.
- Постепенно раскладываем и получаем искомую формулу:
Связь между числами Стирлинга
Если числа Стирлинга I рода позволяют перейти от базиса
к базису ,то числа Стирлинга II рода играют обратную роль и позволяют перейти от базиса к базису
Следовательно, числа Стирлинга тесно связаны друг с другом, а их связь выражается формулой:
См. также
Примечания
Источники информации
- Graham, Knuth, and Patashnik: Concrete Mathematics Second Edition 1994, ISBN 0-201-55802-5 — 257-267 с.
- В. Липский: Комбинаторика для программистов 1988, ISBN 5-03-000979-5 — 49-50 с.