
- •Оглавление
- •Предисловие
- •1. Теоретико‑множественные основания дисциплины
- •1.1. Понятия и аксиомы теории множеств
- •1.2. Декартовы произведения, отношения и отношение эквивалентности
- •1.3. Понятия образа, прообраза, функции и отображения на конечном множестве. Аксиома выделения.
- •1.4. Аксиомы степени и бесконечности. Мощности и кардинальные числа множеств
- •1.5. Счетные и континуальные множества
- •1.6. Ординалы и трансфиниты. Аксиома выбора и континуум‑гипотеза
- •2. Основы математической логики
- •2.1. Высказывания и функции на высказываниях
- •2.2. Операции математической логики
- •2.3. Понятие формулы и свойства операций
- •2.4. Разложения булевых функций. Принцип двойственности. Совершенные нормальные формы.
- •2.5. Понятие полноты системы булевых функций
- •2.5. Исчисление предикатов
- •2.6. Введение в методы теории доказательств
- •1 Если X a,
- •0 Если X a.
- •1 Если X a,
- •0 Если X a.
- •3. Комбинаторика
- •3.1. Размещения
- •3.2. Размещения без повторений
- •3.3. Перестановки, подстановки и их свойства
- •3.4. Сочетания, структура соединений
- •3.5. Свойства биномиальных коэффициентов
- •Структура соединений
- •3.6. Понятие производящей функции
- •3.7. Соединения с повторениями
- •3.8. Разбиения множеств
- •3.9. Разбиения чисел
- •3.10. Композиции чисел
- •4. Основы теории графов
- •4.1. Основные понятия и определения
- •4.2. Графы и бинарные отношения
- •4.3. Понятие изоморфизма и изоморфизм плоских графов
- •4.4. Степени вершин графа
- •4.5. Представление графов матрицами
- •4.6. Представление графов списками инцидентности. Оценка пространственной сложности алгоритмов.
- •4.7. Маршруты, цепи, циклы и связность
- •4.7. Эйлеровы циклы и цепи
- •4.9. Гамильтоновы циклы. Оценка временной сложности алгоритмов
- •4.10. Деревья
- •4.11. Раскраска вершин и теорема Шеннона об информационной емкости графа
- •4.12. Раскраска ребер графа и теоремы о хроматическом классе
- •Ответы и решения
- •Список литературы
3.9. Разбиения чисел
Под разбиением числа n понимается его представление в виде
n = x1 + x2 +…+ xk, (xi > 0 — целое).
Суммы считаются эквивалентными, если они отличаются лишь порядком слагаемых.
Поскольку порядок слагаемых несущественен, можно считать, что
x1 x2 …xk.
Число разбиений числа n на k слагаемых будем обозначать P(n, k), а число всех разбиений — через P(n).
Очевидно, что
P(n) = kn = 1 P(n, k), n > 0. (3.36)
Рассмотрим пример. Пусть необходимо получить все разбиения числа n = 7. Это возможно сделать различными способами, показанными на рисунке 3.8.
k Разбиения n P(n,k)
1 7 1
2 6 1 3
5 2
4 3
3 5 1 1 4
4 2 1
3 3 1
3 2 2
4 4 1 1 1 3
3 2 1 1
2 2 2 1
5 3 1 1 1 1 2
2 2 1 1 1
6 2 1 1 1 1 1 1
7 1 1 1 1 1 1 1 1
Рисунок 3.8
Разложение P(n) в сумму P(n, k) делает наглядной структуру разбиений числа n, однако, вычисление значений P(n) непосредственно по формуле (3.36) может вызвать затруднения, поскольку сами значения P(n, k) заранее, как правило, не известны.
Для подсчета P(n) удобно воспользоваться функцией Q(m, n), значением которой является число способов представления целого m в виде суммы, при условии, что каждое слагаемое не превосходит n. Число разбиений целого n равно Q(n, n) = P(n).
Теорема 3.8 Пусть Q(m, n) — функция, значением которой является число способов представления целого m в виде суммы, при условии, что каждое слагаемое не превосходит n. Тогда функция Q(m, n) удовлетворяет следующему рекурсивному определению:
Q(m, n) = [(m = 1) (n = 1) 1,
(m < n) Q(m, m - 1),
(m = n) 1+ Q(m, m - 1),
(m > n) Q(m, n-1) + Q(m - n, n)]. (3.37)
Доказательство. Такое определение функции Q вытекает из следующих рекурсивных рассуждений.
Если n = 1, то Q(m, 1) = 1 поскольку существует только одно разбиение числа m, в котором наибольшее слагаемое есть единица.
Если m = 1, то Q(1, n) = 1 так как существует только одно разбиение целого числа 1, независимо от величины n как наибольшего слагаемого.
Если m < n, то Q(m, n) = Q(m, m) означает, что никакое разбиение m не может содержать слагаемого n, большего m.
Если n = m, то Q(m, m) = 1 + Q(m, m -1) определяет существование только одного разбиения m, со слагаемым равным m; при этом все другие разбиения имеют наибольшее слагаемое n m -1.
Если m > n, то Q(m, n) = Q(m, n -1) + Q(m - n, n) — поскольку любое разбиение m с наибольшим слагаемым меньшим или равным n или не содержит n в качестве слагаемого — в этом случае данное разбиение также входит в число Q(m, n-1) или содержит n — при этом остальные слагаемые образуют разбиение числа m - n.
Доказательство окончено.
При исследовании свойств чисел P(n), могут также оказаться полезными диаграммы Феррерса. Диаграмма Феррерса состоит из k строк, соответствующих слагаемым разбиения, причем i‑тая строка содержит последовательность из xi точек.
Например, разлагая 7 на четыре слагаемых, имеем одну из диаграмм Феррерса (рисунок 3.9).
Каждому разбиению, изображенному диаграммой Феррерса соответствует сопряженное разбиение, которое получается заменой строк столбцами (рисунок 3.10).
k 7 = 3+2+1+1
Рисунок 3.9
Непосредственно из определения диаграммы Феррерса следует, что число разбиений числа n на k слагаемых равно числу разбиений числа n с наибольшим слагаемым равным k.
k
7 = 4 + 2 + 1
Рисунок 3.10
Некоторые другие полезные утверждения, основанные на построении диаграмм Феррерса приведены в [3].
Получим алгоритм генерирования всех разбиений числа n.
Пусть n = a1 + a2 +…+ ak. Обозначим s n такое, что
ai
+1+1+…+1 , если k
> j,
s = k - j
ai в противном случае,
где i = max(m: am > 1), j = ai - 1.
Для построения этого алгоритма достаточно заметить, что разбиение s, непосредственно следующее за s, имеет вид
s = 1 s / j j + (s mod j),
где символами « s/j »обозначено наибольшее целое не превосходящее s / j.
При этом все элементы разбиения n: a1, a2,…, ai-1 являются общими как для s, так и для s.
Инициация алгоритма осуществляется значениями i = 1, ai = n, j = n - 1, k = 1.