
- •Структуры и алгоритмы компьютерной обработки данных
- •Часть 3. Практикум
- •Введение
- •Тема 1. Алгоритмы на графах (6 часов)
- •Рассматриваемые темы с указанием литературы
- •Тема 2. Алгоритмы комбинаторного перебора (6 часов)
- •Рассматриваемые темы с указанием литературы
- •Типовые алгоритмы формирования групп:
- •Задача "Кодовый замок сейфа"
- •Задачи из "Теории чисел"
- •Геометрические задачи
- •Тема 3. Общие методы разработки алгоритмов (4 часа)
- •Рассматриваемые темы с указанием литературы
- •Эвристические алгоритмы
- •Порождение комбинаторных объектов, перебор
- •Тема 4. Теория сложности алгоритмов (2 часа)
- •Рассматриваемые темы с указанием литературы
- •Введение
- •Машина Тьюринга
- •Недетерминированная машина Тьюринга
- •Классы p и np Определение
- •Определение
- •Полиномиальное сведeние
- •Теорема (Кук)
- •Доказательство
- •Проблема 3-sat
- •Проблема is
- •Проблема 3-col
- •Проблема ilp
- •Класс проблем co-np
- •Определение
- •Теорема
- •Библиографический список
- •Содержание
- •600014 Г. Владимир, ул. Университетская, д. 2
Тема 2. Алгоритмы комбинаторного перебора (6 часов)
Цель: Изучение базовых алгоритмов комбинаторного перебора.
Задачи:
– Закрепление материала лекций.
– Изучение ряда дополнительных алгоритмов комбинаторного перебора, не рассмотренных на лекциях.
– Знакомство с существующей литературой, посвященной алгоритмам комбинаторного перебора.
– Выработка умений по практическому созданию алгоритмов комбинаторного перебора.
– Выработка умений по решению ряда стандартных задач, связанных с основными понятиями комбинаторики.
– Выработка умений по сравнительному анализу вычислительной сложности алгоритмов комбинаторного перебора.
– Подготовка предварительных версий реализаций алгоритмов комбинаторного перебора для последующего использования в процессе лабораторных занятий.
– Изучение общих принципов комбинаторной генерации.
– Текущий контроль успеваемости и выполнения плана самостоятельной работы.
СПИСОК РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ
Окулов, С.М. Программирование в алгоритмах / С.М. Окулов. - М.: Бином, 2007. 341с.
Кнут, Д. Искусство программирования. Т. 4 Вып.2. Генерация всех кортежей и перестановок / Д. Кнут. - М.: Вильямс, 2008. 160 с.
Кнут, Д. Искусство программирования. Т. 4 Вып.3. Генерация всех сочетаний и разбиений / Д. Кнут. - М.: Вильямс, 2008. 208 с.
Кнут, Д. Искусство программирования. Т. 4 Вып.4. Генерация всех деревьев. История комбинаторной генерации / Д. Кнут. - М.: Вильямс, 2008. 160 с.
Рассматриваемые темы с указанием литературы
Основные комбинаторные объекты.
[1] с. 27-34; [2] с. 12.
Кортежи, перестановки, сочетания, размещения.
[1] с. 27-34; [2] с. 12-13.
Генерация кортежей.
[2] с. 12-53.
Коды Грея.
[2] с. 12-53.
Генерация перестановок.
[1] с. 34-44; [2] с. 54-90.
Генерация сочетаний.
[1] с. 50-58; [3] с. 10-51.
Генерация размещений.
[1] с. 44-50
Генерация разбиений.
[1] с. 58-63; [3] с. 52-82
Генерация деревьев.
[4] с. 12-66.
ПЕДАГОГИЧЕСКИЕ ТЕХНОЛОГИИ
– фронтальный опрос,
– индивидуальные доклады (с презентациями),
– рассмотрение проблемных ситуаций,
– интерактивное написание компьютерных программ,
– индивидуальные и групповые задания,
– совместное решение задач.
ВОПРОСЫ И ЗАДАЧИ
Выборку по К элементов из множества А можно производить, руководствуясь правилами: считать разными выборки, в которых один и тот же элемент занимает разные позиции (либо не считать), допускать повторение одного и того же элемента в выбираемой группе (либо не допускать) и др. В зависимости от наложения определенных ограничений (правил) при выборе элементов разделяют три типа формирования комбинаторных групп. Рассмотрим их на примере:
Пусть N = 4, K = 2. Элементы исходного множества будем хранить в массиве А (рис. 2.1)
Рис. 2.1.
Тогда группы по 2 элемента, выбираемые из множества А можно сформировать так, как показано в таблице 2.1:
Таблица 2.1 |
|||
Размещения |
Сочетания |
||
С повторениями |
Без повторений |
С повторениями |
Без повторений |
00 |
01 |
00 |
01 |
01 |
02 |
01 |
02 |
02 |
03 |
02 |
03 |
03 |
10 |
03 |
12 |
10 |
12 |
11 |
13 |
11 |
13 |
12 |
23 |
12 |
20 |
13 |
|
13 |
21 |
22 |
|
20 |
23 |
23 |
|
21 |
30 |
33 |
|
22 |
31 |
|
|
23 |
32 |
|
|
30 |
|
|
|
31 |
|
|
|
32 |
|
|
|
33 |
|
|
|
Группы {01} и {10} считаются различными |
Исключаются группы, где один и тот же элемент стоит в разных позициях |
Группы {01} и {10} считаются одинаковыми |
Исключаются группы, где один и тот же элемент стоит в разных позициях |
Существует еще и третий способ формирования комбинаторных групп: "Перестановки". В перестановках участвуют все элементы исходного множества (K = N ). Перестановки с повторениями возможны, когда в исходном множестве есть повторяющиеся элементы.