
Дискретка_Экзамен_Ответы / комб / 2 Перестановки с повторениями
.docx2.8. Перестановки с повторениями
Множество, которое может содержать одинаковые элементы, называется мультимножеством. Например М={1,1,2,3,1,2,3} - мультимножество, которое содержит элементы 1, 2 и 3, причём элемент 1 входит в мультимножество 3 раза, а элементы 2 и 3 – по два раза. Мультимножества равны, если они состоят из одних и тех же элементов, поэтому {1,1,2,3,1,2,3}={1,1,1,2,2,3,3}, т.е. порядок расположения элементов не важен. Мультимножество, состоящее из конечного числа элементов, называется конечным. Количество элементов в мультимножестве S называется мощностью мультимножества и обозначается |S|. Мощность мультимножества М={1,1,2,3,1,2,3} равна семи, |M|=7. Количество ni вхождений элемента si в мультимножество S называется кратностью элемента. Конечное мультимножество S будем записывать в следующем виде:
Здесь
все si
различны и ki
– кратность элемента si.
Тогда мощность S
равна
.
Учитывая
введённое обозначение, мультимножество М={1,1,2,3,1,2,3} можно записать так: {3*1,2*2,2*3}.
Перестановкой с повторениями называется расположенные в определенном порядке элементы мультимножества.
Теорема
2.6.
Число перестановок с повторениями для
мультимножества S={n1*s1,n2*s2,...,nk*sk}
выражается формулой
,
где
.
Доказательство. Рассмотрим одну перестановку мультимножества и заменим в ней все одинаковые элементы разными. Тогда, число различных перестановок, которые можно составить из рассматриваемой, равно n1!n2!…nk!. Проделав это для каждой перестановки, получим n! перестановок. Следовательно, Pn(n1,n2,…,nk)n1!n2!…nk!=n!. Отсюда
Алгоритм 2.6 (рис.2.13) порождения всех перестановок с повторениями практически не отличается от алгоритма 2.2 порождения всех перестановок множества, за исключением того, что в алгоритме 2.6 обрабатывается мультимножество.
Определим мультимножество С, являющееся результатом разности мультимножеств А и В (С=А-В). Если элемент универсума не принадлежит мультимножеству, то будем считать, что его кратность равна нулю. Элемент xC, если кратность kА элемента x в мультимножестве А больше кратности kВ элемента x в мультимножестве В и кратность kС элемента x в мультимножестве С определяется по формуле kC=kA-kB.
Алгоритм 2.6 порождения перестановок с повторениями.
Вход: М – мультимножество, элементы которого можно поставить на i-ое место;
i – заполняемое место в последовательности Р.
Выход: последовательность всех перестановок с повторениями.
Глобальные параметры: Р – формируемая перестановка с повторениями;
n – мощность мультимножества.
Перестановка(М,i)
xМ
Рi := x
i=n
+
Конец
Р
Перестановка(М-{x},i+1)
Рис.2.13. Рекурсивный алгоритм порождения перестановок
с повторениями
Пусть задано мультимножество {1,1,2,2}={2*1,2*2} и требуется получить все перестановки с повторениями.
{1,1,2,2}
(?,?,?,?)
1 10
{1,2,2} {1,1,2}
(1,?,?,?) (2,?,?,?)
2
5
11 16
{2,2} {1,2} {1,2} {1,1}
(1,1,?,?) (1,2,?,?) (2,1,?,?) (2,2,?,?)
3 6 7 12 14 17
{2} {2} {1} {2} {1} {1}
(1,1,2,?) (1,2,1,?) (1,2,2,?) (2,1,1,?) (2,1,2,?) (2,2,1,?)
4 7 9 13 15 18
(1,1,2,2) (1,2,1,2) (1,2,2,1) (2,1,1,2) (2,1,2,1) (2,2,1,1)
Рис.2.14. Схема получения всех перестановок с повторениями
по алгоритму 2.6