Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
пособие рязанова.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
1.55 Mб
Скачать

2.4. Перестановки

Перестановкой называется расположенные в определенном порядке элементы множества М.

Теорема 2.2. Количество всех различных перестановок n-элемент-ного множества М (количество способов упорядочивания множества) определяется формулой Рn=n!.

Доказательство. Перестановку можно представить последовательностью из n мест. Для того чтобы получить одну перестановку, нужно выполнить одно за другим n действий: заполнить 1-ое место в последовательности, 2-ое место и так до n-го места. Для выполнения 1-го действия (заполнения 1-го места) можно взять любой элемент из множества М и поставить его на 1-ое место, т.е. его можно выполнить n-способами, и после этого в множестве М останется n-1 элемент. Для выполнения 2-го действия (заполнения 2-го места) можно взять любой элемент из оставшихся в множестве М и поставить его на 2-ое место, т.е. его можно выполнить n-1-способами, и после этого в множестве М останется n-2 элемента и т.д. По правилу произведения все n действий могут быть выполнены n(n-1)(n-2)...21=n! способами, следовательно, количество всех различных перестановок n-элементного множества равно n!.

Получить все перестановки n-элементного множества М можно, используя метод поиска с возвращением, выполняя действия, описанные в доказательстве теоремы 2.2. Формирование i-го элемента перестановки опишем рекурсивным алгоритмом 2.2, блок-схема которого представлена на рис.2.5. В цикле перебираются элементы множества М, которые можно поставить на i-ое место. Если заполнено последнее место, то перестановка сформирована и выводим её, иначе заполняем следующее i+1-ое место по алгоритму 2.2 элементами множества М, за исключением элемента, поставленного на i-ое место.

Алгоритм 2.2 порождения перестановок n-элементного множества.

Вход: М–множество, элементы которого можно поставить на i-ое место;

i–заполняемое место в последовательности Р.

Выход: последовательность всех перестановок n-элементного множества.

Глобальные параметры: Р – формируемая перестановка;

n – мощность множества.

Рi := x

+

Перестановка(М-{x},i+1)

Рис.2.5. Рекурсивный алгоритм порождения перестановок

n-элементного множества

Пусть задано множество {1,2,3} и требуется получить все его перестановки. Схема получения всех перестановок по алгоритму 2.2 представлена на рис.2.6. В этой схеме представлены формируемые перестановки и множества, элементы которых можно поставить на очередное место в перестановке. В исходной ситуации все места перестановки неопределенны и любой элемент множества {1,2,3} можно поставить на первое место. В схеме к стрелкам приписаны номера действий. В результате выполнения действия 1 на первое место перестановки устанавливается элемент 1, а на второе место после этого можно поставить любой элемент множества {2,3}. После выполнения действия 2 на второе место перестановки устанавливается элемент 2, а на третье место после этого можно поставить только элемент множества {3} (действие 3) и первая перестановка (1,2,3) сформирована. Затем выполняются два шага назад и действие 4, ставящее элемент 3 из множества {2,3} на второе место. Далее действие 5 ставит оставшийся элемент 2 на третье место и вторая перестановка (1,3,2) сформирована. Аналогичным образом формируются все остальные перестановки. Действия 1, 6 и 11 заполняют первое место перестановки, действия 2, 4, 7, 9, 12 и 14 – второе место, действия 3, 5, 8, 10, 13 и 15 – третье место.

множество множество

{3} 3 

перестановка перестановка

(1,2,?) (1,2,3)

2

множество

{2,3}

перестановка

(1,?,?)

4

множество множество

{1} 5 

перестановка перестановка

(2,3,?) (2,3,1)

1

множество множество

{3} 8 

перестановка перестановка

(2,1,?) (2,1,3)

7

множество множество

{1,2,3} 6 {1,3}

п ерестановка перестановка

(?,?,?) (2,?,?)

9

множество множество

{1} 10 

перестановка перестановка

(2,3,?) (2,3,1)

11

множество множество

{2} 13 

перестановка перестановка

(3,1,?) (3,1,2)

12

множество

{1,2}

перестановка

(3,?,?)

14

множество множество

{1} 15 

перестановка перестановка

(3,2,?) (3,2,1)

Рис.2.6. Схема получения всех перестановок по алгоритму 2.2