Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Дискретка_Экзамен_Ответы / комб / 2 Перестановки с повторениями

.docx
Скачиваний:
96
Добавлен:
11.03.2015
Размер:
26.32 Кб
Скачать

2.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 обрабатывается мультимножество.

Определим мультимножество С, являющееся результатом разности мультимножеств А и В (С=А-В). Если элемент универсума не принадлежит мультимножеству, то будем считать, что его кратность равна нулю. Элемент xC, если кратность 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