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