
- •Оглавление
- •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.6. Размещения с повторениями
Размещением с повторениями n-элементного множества по k местам называется k-элементная последовательность, состоящая из элементов n-элементного множества М, причём элементы в последовательности могут повторяться. Количество мест может превышать количество элементов в множестве.
Теорема 2.4. Количество всех различных размещений с повторениями n-элементного множества М по k местам равно nk.
Доказательство. Для того чтобы получить одно размещение с повторениями, нужно выполнить одно за другим k действий: заполнить 1-ое место в последовательности, 2-ое место и так до k-го места. Для выполнения каждого действия можно взять любой элемент из множества М и поставить его на соответствующее место, т.е. каждое из k действий можно выполнить n способами. По правилу произведения все k действий могут быть выполнены nn…n=nk способами, следовательно, количество всех различных размещений с повторениями n-элементного множества по k местам равно nk.
Получить все размещения с повторениями n-элементного множества М по k местам можно, используя метод поиска с возвращением, выполняя действия, описанные в доказательстве теоремы 2.4. Формирование i-го элемента размещения с повторениями опишем рекурсивным алгоритмом 2.4, блок-схема которого представлена на рис.2.9. В цикле перебираются элементы множества М (каждый элемент можно поставить на i-ое место). Если заполнено k-ое место, то размещение с повторениями сформировано и выводим его, иначе заполняем следующее i+1-ое место по алгоритму 2.4 элементами множества М.
Алгоритм 2.4 порождения размещений с повторениями n-эле-ментного множества по k местам.
Вход: i – заполняемое место в последовательности R.
Выход: последовательность всех размещений с повторениями n-эле-ментного множества М по k местам.
Глобальные параметры: М – n-элементное множество;
R – формируемое размещение с повторениями;
n – мощность множества.
k – количество мест.
Ri
:=
x
+
Размещение
с повторениями
(i+1)
Рис.2.9. Рекурсивный алгоритм порождения размещений с повторениями
n-элементного множества по k местам
Пусть задано множество {1,2,3} и требуется получить все его размещения с повторениями по двум местам. Схема получения всех размещений по алгоритму 2.4 представлена на рис.2.10. В этой схеме представлены формируемые размещения. В каждой ситуации на очередное место в размещении можно поставить любой элемент из заданного множества {1,2,3}. В исходной ситуации все места размещения неопределенны и любой элемент множества {1,2,3} можно поставить на первое место. В схеме к стрелкам приписаны номера действий. В результате выполнения действия 1 на первое место размещения устанавливается элемент 1. После выполнения действия 2 на второе место размещения также устанавливается элемент 1 и первое размещение (1,1) сформировано. Затем выполняется шаг назад и действие 3 ставит элемент 2 на второе место и второе размещение (1,2) сформировано. Далее выполняется шаг назад и действие 4 заканчивает формирование очередного размещения (1,3). После этого выполняется два шага назад. Аналогичным образом формируются все остальные размещения. Действия 1, 5 и 9 заполняют первое место размещения, действия 2, 3, 4, 6, 7, 8, 10, 11 и 12 – второе место.
размещение
(1,1)
2
размещение
3 размещение
(1,?)
(1,2)
4
размещение
(1,3)
1
размещение
(2,1)
6
р
азмещение
5 размещение
7 размещение
(?,?)
(2,?)
(2,2)
8
размещение
(2,3)
9
размещение
(3,1)
10
размещение
11 размещение
(1,?) (3,2)
12
размещение
(3,3)
Рис.2.10. Схема получения всех размещений с повторениями
по алгоритму 2.4