
- •Оглавление
- •1. Множества
- •1.1. Основные понятия
- •1.2. Способы задания множеств
- •1.3. Операции над множествами
- •Приоритеты операций над множествами
- •1.4. Свойства операций над множествами
- •1.5. Методы доказательства теоретико-множественных тождеств
- •1.5.1. Метод двух включений
- •1.5.2. Метод эквивалентных преобразований
- •1.5.3. Метод характеристических функций
- •1.5.4. Метод логических функций
- •1.5.5. Теоретико-множественный метод
- •1.6. Способы представления множества в памяти эвм
- •1.7. Алгоритмы реализации операций над множествами
- •Практическое занятие 1.1 Операции над множествами
- •Задания
- •Варианты заданий
- •Практическое занятие 1.2 Теоретико-множественные тождества
- •Задания
- •Варианты заданий
- •Контрольные вопросы
- •2. Комбинаторные объекты
- •2.1. Введение
- •2.2. Метод поиска с возвращением
- •2.3. Подмножества
- •2.4. Перестановки
- •2.5. Размещения
- •2.6. Размещения с повторениями
- •2.7. Сочетания
- •2.8. Перестановки с повторениями
- •2.9. Сочетания с повторениями
- •2.10. Упорядоченные разбиения множества
- •2.11. Разбиения множества
- •2.12. Использование алгоритмов порождения комбинаторных объектов при проектировании полнопереборных алгоритмов решения задач выбора
- •2.13. О неэффективности полнопереборных алгоритмов. Пример
- •Времена обработки деталей на станках a и b
- •Времена окончания обработки деталей на станках a и b
- •Времена окончания обработки деталей на станках a и b
- •Времена окончания обработки деталей на станках a и b
- •Практическое занятие 2.1 Алгоритмы порождения комбинаторных объектов
- •Задания
- •Практическое занятие 2.2 Разбиения множеств
- •Задания
- •Количество упорядоченных разбиений
- •Практическое занятие 2.3
- •Задачи выбора
- •Цель занятия: приобретение практических навыков в использовании алгоритмов порождения комбинаторных объектов при проектировании алгоритмов решения задач выбора.
- •Задания
- •Варианты заданий
- •Контрольные вопросы
- •Библиографический список
2.10. Упорядоченные разбиения множества
Упорядоченным разбиением множества М называется последовательность из непустых, попарно непересекающихся подмножеств множества М, объединение которых даёт множество М.
1. Рассмотрим упорядоченные разбиения множества M на k подмножеств с мощностями (n1,n2,…,nk) . Одно такое разбиение представляет собой последовательность (М1,М2,…,Мk) подмножеств множества М, таких, что |M1|=n1, |M2|=n2,…, |Mk|=nk . На первом месте в разбиении может располагаться любое подмножество мощности n1, на втором – любое подмножество мощности n2 и т.д.
Теорема 2.8.
Количество всех различных упорядоченных
разбиений n-элементного
множества М на k
подмножеств с мощностями (n1,n2,…,
nk)
определяется формулой
.
Доказательство
1.
При
формировании последовательности
(М1,М2,
…,Мk)
на первое место подмножество М1
мощности n1
можно выбрать из n
элементов множества М
способами,
на
второе место подмно-жество М2
мощности n2
можно выбрать из оставшихся n-n1
элементов множества М
способами
и
т.д., на последнее место подмножество
Мk
мощности nk
можно выбрать из оставшихся n-n1-n2-…-nk-1
элементов
множества М
способами.
По правилу произведения получаем, что
общее количество упорядоченных разбиений
равно
,
что совпадает с числом перестановок с повторениями.
Доказательство 2. Упорядоченное разбиение можно задать n-разряд-ным вектором P, в котором Pi представляет собой номер подмножества, которому принадлежит элемент i множества М. Вектор Р представляет собой перестановку с повторениями мультимножества {n1*1,n2*2,…, nk*k}. Следовательно, количество всех различных упорядоченных разбиений n-элементного множества М на k подмножеств с мощностями n1,n2,…,nk равно количеству перестановок с повторениями мультимножества {n1*1,n2*2,…, nk*k} и определяется формулой
.
Алгоритм порождения упорядоченных разбиений n-элементного множества М на k подмножеств с мощностями (n1,n2,…,nk) представляет собой алгоритм 2.6 порождения перестановок с повторениями мультимножества {n1*1,n2*2,…, nk*k}, в котором перестановки с повторениями интерпретируются как разбиения. В табл. 2.1 представлены упорядоченные разбиения множества М={1,2,3,4,5} на три подмножества: первые два - двухэлементные и третье – одноэлементное.
Таблица 2.1
Упорядоченные разбиения множества М={1,2,3,4,5}
№ п/п |
Перестановка с повторениями |
Упорядоченное разбиение |
1 |
2 |
3 |
1 |
(1,1,2,2,3) |
({1,2},{3,4},{5}) |
2 |
(1,1,2,3,2) |
({1,2},{3,5},{4}) |
3 |
(1,1,3,2,2) |
({1,2},{4,5},{3}) |
4 |
(1,2,1,2,3) |
({1,3},{2,4},{5}) |
5 |
(1,2,1,3,2) |
({1,3},{2,5},{4}) |
6 |
(1,2,2,1,3) |
({1,4},{2,3},{5}) |
7 |
(1,2,2,3,1) |
({1,5},{2,3},{4}) |
8 |
(1,2,3,1,2) |
({1,4},{2,5},{3}) |
9 |
(1,2,3,2,1) |
({1,5},{2,4},{3}) |
10 |
(1,3,1,2,2) |
({1,3},{4,5},{2}) |
11 |
(1,3,2,1,2) |
({1,4},{3,5},{2}) |
12 |
(1,3,2,2,1) |
({1,5},{3,4},{2}) |
13 |
(2,1,1,2,3) |
({2,3},{1,4},{5}) |
14 |
(2,1,1,3,2) |
({2,3},{1,5},{4}) |
15 |
(2,1,2,1,3) |
({2,4},{1,3},{5}) |
16 |
(2,1,2,3,1) |
({2,5},{1,3},{4}) |
Окончание табл.2.1
1 |
2 |
3 |
17 |
(2,1,3,1,2) |
({2,4},{1,5},{3}) |
18 |
(2,1,3,2,1) |
({2,5},{1,4},{3}) |
19 |
(2,2,1,1,3) |
({3,4},{1,2},{5}) |
20 |
(2,2,1,3,1) |
({3,5},{1,2},{4}) |
21 |
(2,2,3,1,1) |
({4,5},{1,2},{3}) |
22 |
(2,3,1,1,2) |
({3,4},{1,5},{2}) |
23 |
(2,3,1,2,1) |
({3,5},{1,4},{5}) |
24 |
(2,3,2,1,1) |
({4,5},{1,3},{2}) |
25 |
(3,1,1,2,2) |
({2,3},{4,5},{1}) |
26 |
(3,1,2,1,2) |
({2,4},{3,5},{1}) |
27 |
(3,1,2,2,1) |
({2,5},{3,4},{1}) |
28 |
(3,2,1,1,2) |
({3,4},{2,5},{1}) |
29 |
(3,2,1,2,1) |
({3,5},{2,4},{1}) |
30 |
(3,2,2,1,1) |
({4,5},{2,3},{1}) |
2. Рассмотрим упорядоченные разбиения множества M на k подмножеств с мощностями {n1,n2,…,nk}, где {n1,n2,…,nk} может быть мультимножеством. Одно такое разбиение представляет собой последовательность (М1,М2,…,Мk) подмножеств множества М, таких, что |M1|=n1, |M2|=n2,…, |Mk|=nk . На первое место в разбиении можно поставить подмножество любой мощности ni{n1,n2,…,nk}, после этого на второе место - подмножество любой мощности nj{n1,n2,…,nk}-{ni} и т.д. Среди подмножеств в разбиении (М1,М2,…,Мk) можно выделить l1 подмножеств мощности 1, l2 подмножеств мощности 2 и т.д., ln подмножеств мощности n. Например, в разбиении ({1,2},{3,4},{5}) l1=1, l2=2, l3= l4= =l5=0. Очевидно, что 1l1+2l2+…+nln=n.
Теорема 2.9. Количество всех различных упорядоченных разбиений n-элементного множества М на k подмножеств с мощностями {n1,n2,…, nk} определяется формулой
Доказательство. Рассмотрим упорядоченное разбиение множества M на k подмножеств с мощностями (n1,n2,…,nk). Если мощности подмножеств попарно различны, то из такого разбиения можно получить k!
упорядоченных разбиений множества M на k подмножеств с мощностями {n1,n2,…,nk}, изменяя всеми способами порядок следования подмножеств. Но так как упорядоченное разбиение множества M на k подмножеств с мощностями (n1,n2,…,nk) может содержать подмножества с одинаковыми мощностями, то из такого разбиения можно получить
упорядоченных
разбиений множества M
на k
подмножеств с мощностями {n1,n2,…,nk}.
Количество всех различных упорядоченных
разбиений n-элементного
множества М на k
подмножеств с мощностями (n1,n2,…,
nk)
определяется формулой
,
следовательно
.
Рассмотрим формулу .
В знаменателе сначала расположим все сомножители со значением 1!, их будет l1 штук, затем - все сомножители со значением 2!, их будет l2 штук, и т.д., и в конце - все сомножители со значением n!, их будет ln штук. Теперь эту формулу можно записать в виде
,
а формулу, определяющую количество всех различных упорядоченных разбиений n-элементного множества М на k подмножеств с мощностями {n1,n2,…, nk} - в виде
.
Для порождения упорядоченных разбиений n-элементного множества М на k подмножеств с мощностями {n1,n2,…,nk} можно порождать перестановки с повторениями мультимножества {n1,n2,…,nk} и каждую перестановку использовать для порождения упорядоченных разбиений n-элементного множества М на k подмножеств с мощностями (n1,n2,…, nk), в результате чего будут получены все упорядоченные разбиения n-
элементного множества М на k подмножеств с мощностями {n1,n2,…, nk}.
3. Рассмотрим все упорядоченные разбиения множества M на k подмножеств. Одно такое разбиение представляет собой последовательность (М1,М2,…,Мk) подмножеств множества М, таких, что |M1|+|M2|+…+|Mk|=|M| .
При подсчёте количества упорядоченных разбиений множества M на k подмножеств будем использовать понятие композиции числа n из k частей. Композицией натурального числа n из k частей с ограничением ni>0 называется k-элементная последовательность (n1,n2,…,nk) натуральных чисел, такая, что n1+n2+…+nk=n.
Теорема 2.10.
Количество композиций числа n
из k
частей с ограничением ni>0
равно
.
Д
оказательство.
Разделим отрезок длины n
на n
отрезков единичной длины с помощью
(n-1)
точки. Тогда композиции n
взаимно однозначно соответствует
пометка некоторых k-1
точек разделения. Элементами композиции
в этом случае будут расстояния между
соседними точками разделения. Например,
композиция
(2,2,1) числа 5
представлена на рис.2.17.
Рис.2.17. Представление композиции (2,2,1) числа 5
Каждая
композиция числа n
из k
частей с ограничением ni>0
соответствует способу выбора
(k-1)-элементного
подмножества точек из n-1
точек. То есть число таких композиций
равно
.
Теорема 2.11.
Количество всех различных упорядоченных
разбиений n-элементного
множества М на k
подмножеств определяется формулой
,
где
,
(n1i,n2i,…,nki)
-
i-ая
композиция числа
n
из k
частей
с
ограничением ni>0.
Доказательство. Элементы композиции (n1,n2,…nk) числа n из k час-тей будем считать мощностями подмножеств в упорядоченном разбие-
нии (М1,М2,…,Мk) множества М на k частей. Количество всех различных упорядоченных разбиений n-элементного множества М на k подмножеств с мощностями (n1,n2,…,nk) определяется формулой
,
а
количество композиций числа
n
из k
частей
определяется формулой
,
следовательно, количество всех различных
упорядоченных разбиений n-элементного
множества М на k
подмножеств определяется формулой
,
где , (n1i,n2i,…,nki) - i-ая композиция числа n из k частей с ограничением ni>0.
Для порождения упорядоченных разбиений n-элементного множества М на k подмножеств можно получить все композиции числа n из k частей с ограничением ni>0 и к каждой композиции (n1,n2,…, nk) применить алгоритм 2.6 порождения перестановок с повторениями мультимножества {n1*1,n2*2,…, nk*k}, в котором перестановки с повторениями интерпретировать как разбиения.
Для порождения композиций числа n из k частей с ограничением ni>0 можно использовать алгоритм 2.5 порождения сочетаний и каждое сочетание преобразовать в соответствующую ему композицию или непосредственно, используя метод поиска с возвращением. Начиная с 1-го места будем последовательно формировать элементы композиции С. Формирование i-го элемента композиции опишем рекурсивным алгоритмом 2.8, блок-схема которого представлена на рис.2.18 В цикле перебираются элементы множества, которые можно поставить на i-ое место. Минимальный элемент, который можно поставить на i-ое место при i<k равен 1, а максимальный – такой, что сумма сформированных i элементов плюс количество оставшихся элементов композиции не превышает числа n, т.е. n-S-k+i, где S – сумма сформированных i-1 элементов. На последнее, k-ое место композиции можно поставить только n-(S+x), где х – элемент, поставленный на k-1-ое место, S+x – сумма k-1 элементов композиции. Если заполнено k-1-ое место, то однозначно заполняем последнее место, как описано выше, и выводим композицию, иначе заполняем следующее i+1-ое место по алгоритму 2.8.
Алгоритм 2.8 порождения композиций числа n из k частей с ограничением ni>0
Вход: i – заполняемое место в композиции;
S – сумма первых i-1 элементов композиции.
Выход: последовательность всех композиций числа n из k частей с ограничением ni>0.
Глобальные параметры: С – формируемая композиция;
n – исходное число;
k
– количество элементов в композиции.
Ci
:=
x
+
Композиция(i+1,
S+x)
Ck
:=n-(S+x)
Рис.2.18. Рекурсивный алгоритм порождения композиций числа n из k частей с ограничением ni>0
4. Рассмотрим все упорядоченные разбиения множества M.
Теорема 2.12. Количество всех различных упорядоченных разбиений n-элементного множества М определяется формулой
,
где , (n1i,n2i,…,nki) - i-ая композиция числа n из k частей с ограничением ni>0.
Доказательство. n-элементное множество можно разбить на 1 подмножество, на 2 подмножества и т.д., на n подмножеств, т.е. количество k непустых подмножеств, на которые можно разбить n-элементное множество, может быть от 1 до n, отсюда количество всех различных упорядоченных разбиений n-элементного множества М определяется формулой
,
где , (n1i,n2i,…,nki) - i-ая композиция числа n из k частей с ограничением ni>0.
Для порождения всех упорядоченных разбиений n-элементного множества М достаточно, перебирая все k в диапазоне от 1 до n, получать все композиции числа n из k частей с ограничением ni>0, используя алгоритм 2.8, и к каждой композиции (n1,n2,…, nk) применить алгоритм 2.6 порождения перестановок с повторениями мультимножества {n1*1,n2*2,…, nk*k}, в котором перестановки с повторениями интерпретировать как разбиения.