Т. Ю. Володина. комбинаторные алгоритмы.

advertisement
Т. Ю. Володина. КОМБИНАТОРНЫЕ АЛГОРИТМЫ.
Учебно-методический комплекс. Рабочая учебная программа для
студентов направления «Математика. Компьютерные науки» Института
математики и компьютерных наук. Тюмень: Издательство Тюменского
государственного университета, 2013, 13 стр.
Учебно-методический комплекс обеспечивает освоение дисциплины
«Комбинаторные алгоритмы», входящей в блок «Общепрофессиональные
дисциплины направления» и ориентированной на подготовку специалистов
по направления 010300.62 «Математика. Компьютерные науки».
Учебно-методический комплекс дисциплины опубликован на сайте
ТюмГУ: «Комбинаторные алгоритмы» [электронный ресурс] / Режим
доступа: http://www.umk.utmn.ru, свободный.
Рекомендовано к изданию кафедрой Математики и информатики.
Утверждено проректором по учебной работе Тюменского государственного
университета.
Ответственный редактор: Т. В. Мальцева, зав. кафедрой Математики и
информатики, д.ф-м.н., доцент.
© ФГБОУ ВПО Тюменский государственный университет, 2013
РАБОЧАЯ УЧЕБНАЯ ПРОГРАММА
по дисциплине «Комбинаторные алгоритмы» для направления 010300.62 «Математика. Компьютерные науки» по государственному образовательному
стандарту
высшего
профессионального
образования
дисциплина
для
направления включена в
Цикл: Общепрофессиональные дисциплины направления
Компонент: федеральный
Курс 3/4, семестр –4/5.
Всего часов по учебному плану 238, из них:
Количество лекционных часов - 64; количество семинарских занятий – 64
Количество часов на самостоятельную работу - 110;
Курсовая работа – нет;
Контрольная работа – нет;
Зачёт – 4 семестр;
Экзамен – 5 семестр.
Рабочую программу составила:
ст. преподаватель каф. МиИ Володина Т.Ю. ___________________________
Рабочая учебная программа обсуждена на заседании кафедры
МиИ
27 ноября 2013 года, протокол № 4
Зав. кафедрой
Т.В. Мальцева
4
Пояснительная записка
1
Согласно учебным планам по дисциплине «Комбинаторные алгоритмы» для
направления 010300.62 – «Математика. Компьютерные науки» составлена программа,
которая соответствует требованиям Государственного образовательного стандарта
профессионального высшего образования по специальностям, указанной выше.
Выписка из Государственного образовательного стандарта:

основные этапы компьютерного решения задач;

критерии качества программы;

способы записи алгоритма;
 разработка, выбор и преобразование алгоритмов;
 эффективная реализация программного продукта и проведение с его помощью
исследований средствами ВТ;
 модернизация математического, алгоритмического и программного обеспечения с
целью повышения надежности и эффективности его функционирования.
1.1
Цели и задачи дисциплины
Целью дисциплины является
формирование
у
студентов
взгляда
на
программирование как на предмет научного изучения и поле для интеллектуальной
деятельности.
1.2
Требования к уровню освоения содержания дисциплины
В результате изучения дисциплины студенты должны
Знать:
- основные понятия комбинаторных алгоритмов;
- определения и свойства математических объектов, используемых в этих областях;
- методы их доказательства, возможные сферы их приложений, основы построения
компьютерных моделей.
- структуры данных и методы их исследования.
Студент должен уметь.
Уметь:
- формализовать поставленную задачу;
- применять алгоритмы при профессиональной разработке программ;
- решать задачи теоретического и прикладного характера из различных разделов
комбинаторных алгоритмов;
- доказывать утверждения, строить модели объектов и понятий;
- опираясь на знания теоретических основ программирования, оптимизировать
исходный код;
5
- применять полученные знания к различным предметным областям.
Иметь навыки:
- разработки, отладки и тестирования программ в различных интегрированных средах,
на различных аппаратных платформах;
- алгоритмизации основных задач.
Иметь представление:
- о предмете, его основных понятиях и задачах;
- методах доказательства утверждений в этих областях,
1.3 Тематический план изучения дисциплины
Дисциплина изучается в 4, 5 семестрах.
Форма итогового контроля:– 4 семестр (36 часов лекций, 36 часов лабораторных занятий)
– зачет; 5 семестр (36 часов лекций, 36 часов лабораторных занятий)– экзамен.
№
п/п
Лекции
(в
часах)
Наименование
темы
I семестр
1.
Алгоритмы:
построение и анализ.
2.
Структуры данных.
ИндивиПракти- дуальная и
ческие
самостоязанятия
тельная
(в часах)
работа
(в часах)
4
4
6
Тест
6
6
10
Индивид. домашнее
задание
Индивид. домашнее
задание
Индивид. домашнее
задание
зачет
3.
Алгоритмы поиска.
12
14
10
4.
Алгоритмы
сортировки.
14
12
12
36
38
72
76
I семестр
II семестр
5.
Графы и сети.
ИТОГО:
2
Форма контроля
36
II семестр
72
Индивид. домашнее
задание
экзамен
Содержание дисциплины
Т.1. Алгоритмы: построение и анализ. Алгоритмы, определение и основные
свойства. Временная сложность алгоритмов: время выполнения в худшем случае, в
среднем, в лучшем случае. Асимптотическая нотация: верхние оценки временной
сложности, точные оценки, нижние оценки. Классификация алгоритмов по временной
сложности. Теория сложности алгоритмов: NP-сложные и труднорешаемые задачи.
Вычисление рекуррентных отношений в рекурсивных алгоритмах. Способы вычислений
рекуррентных отношений: метод подстановки, метод итераций, основная теорема
6
Основные методы построения рекурсивных алгоритмов. Метод «разделяй и властвуй».
Динамическое программирование (нисходящий и восходящий методы).
Т.2. Структуры данных. Концепция АТД (абстрактных типов данных).
Представление АТД в виде структуры данных. Классификация операций и структур.
Линейные структуры данных. АТД линейный список. Основные операции, представление
и реализации. АТД стек, очередь, очередь с приоритетами, дек. Основные операции,
представление и реализации. Применение структур данных. Метод исключения рекурсии
с помощью стека. Нелинейные структуры данных. Деревья, основные определения.
Ориентированные деревья, упорядоченные деревья, бинарные деревья, m-арные деревья.
Основные математические свойства бинарных деревьев. Преобразование упорядоченных
деревьев в бинарные. АТД деревья. Основные операции. Представление деревьев в памяти
компьютера: последовательное и связанное размещение элементов. Обходы деревьев.
Применение деревьев. Деревья Хаффмана.
Т.3. Алгоритмы поиска. Постановка задачи, основные понятия. АТД таблица.
Поиск
в
линейных
таблицах.
Алгоритмы
последовательного,
бинарного,
интерполяционного поиска. Исчерпывающий поиск: перебор с возвратом, метод ветвей и
границ.
Анализ
эффективности
алгоритмов.
Поиск
в
нелинейных
таблицах.
Использование деревьев в задачах поиска: бинарные деревья поиска (BST), случайные
бинарные
и
эффективности
сбалансированные
алгоритмов.
деревья
поиска.
Сбалансированные
Основные
(АВЛ)
операции.
деревья.
Анализ
Критерий
сбалансированности. Деревья Фибоначчи. Виды балансировки. Основные операции.
Анализ эффективности алгоритмов. Внешний поиск. Файлы: организация и обработка,
представление деревьями: B-деревья. Основные операции. Анализ эффективности
алгоритмов. Разновидности B-деревьев. Применение структур данных. Красно-черные
деревья. Оптимальные деревья поиска. Основные операции. Анализ эффективности
алгоритмов. Поиск в таблицах с вычисляемыми входами. Хеширование. Основные методы
вычисления хеш-функций: метод деления, метод умножения, комбинированный метод.
Разрешение коллизий. Хеширование с цепочками. Хеширование открытой адресацией.
Основные виды повторного хеширования: линейное исследование, квадратичное
исследование, двойное хеширование. Основные операции. Анализ эффективности
алгоритмов.
Т.4. Алгоритмы сортировки. Постановка задачи, основные определения. Понятие
внутренней и внешней сортировки, устойчивость сортировки, основные характеристики
эффективности. Простые алгоритмы внутренней сортировки. Анализ алгоритмов.
Сортировка Шелла. Понятие h-сортировки, зависимость эффективности сортировки от
7
выбора последовательности h. Улучшенные алгоритмы внутренней сортировки. Быстрая
сортировка. Модификации быстрой сортировки. Вычисление порядковых статистик.
Обменная поразрядная сортировка. Пирамидальная сортировка.
Т.5. Графы и сети. Машинное представление графов и сетей, поиск в ширину и
поиск в глубину в графе. Оптимизационные задачи на графах: задача о минимальном
остове, алгоритмы Краскала и Прима; задачи о кратчайших путях в сетях, алгоритмы
Форда – Фалкерсона, Дейкстры, Флойда, сетевые графики; потоки в сетях, теорема Форда
– Фалкерсона, алгоритм Форда – Фалкерсона построения максимального потока;
эйлеровы пути и графы, гамильтоновы пути и графы, задача Коммивояжера; клики,
независимые множества вершин, хроматическое число
графа;
паросочетания в
двудольных графах, теорема Бержа, алгоритм Хопкрофта – Карпа построения
наибольшего паросочетания в графе, алгоритм Куна, задача о назначениях, Венгерский
метод.
2.1
Тематика практических занятий
Т.1. Алгоритмы: построение и анализ:
Вычисление временной сложности алгоритмов.
Вычисление рекуррентных соотношений.
Методы построения алгоритмов.
Т.2. Структуры данных:
Линейные структуры данных: линейные списки, стеки, деки, очереди.
Нелинейные структуры данных: деревья. Обходы деревьев. Деревья Хаффмана.
Т.3. Алгоритмы поиска:
Поиск в линейных таблицах. Последовательный поиск.
Поиск в линейных таблицах. Бинарный поиск.
Поиск в древовидных таблицах. Бинарные деревья поиска.
Поиск в древовидных таблицах. Сбалансированные (АВЛ) деревья.
Поиск в древовидных таблицах. Внешний поиск в Б-деревьях.
Поиск в древовидных таблицах. Красно-черные деревья.
Т.4. Алгоритмы сортировки:
Простые
методы
сортировки.
Сортировка
обменом.
Сортировка
выбором.
Сортировка вставками.
Быстрая сортировка.
Обменная поразрядная сортировка.
Пирамидальная сортировка.
Т.5. Графы и сети:
8
Представление графов с помощью динамических структур данных.
Обходы графов: Обход в глубину. Обход в ширину.
Минимальные покрывающие деревья. Алгоритм Краскала. Алгоритм Прима
Кратчайшие пути из одной вершины в другую. Алгоритм Дейкстры.
Кратчайшие пути для всех пар вершин. Алгоритм Флойда.
Сети и графы. Потоки в сетях. Алгоритм Форда-Фалкерсона о нахождении
максимального потока в сети.
Алгоритм нахождения Эйлерова цикла.
Алгоритм нахождения Гамильтонова цикла.
Задача Коммивояжера. Метод ветвей и границ.
Клики. Независимые множества вершин. Хроматическое число графа.
Паросочетания в двудольных графах. Алгоритм Хопкрофта – Карпа построения
наибольшего паросочетания в графе.
Паросочетания в двудольных графах. Алгоритм Куна построения наибольшего
паросочетания в графе.
Задача о назначениях. Венгерский метод.
3
Оценка работы студента в рейтинговых баллах
3.1
Распределение рейтинговых баллов по модулям, видам работ и контроль
Максимальное количество баллов
Виды работ и контроля
Модуль 1
Модуль 2
Модуль 3
Итого
1 семестр
Аудиторные занятия:
Лекции
0
Практические занятия
20
30
20
70
10
10
Самостоятельная работа
Итого за работу в
20
30
30
80
семестре
Итоговый
контроль
---20
(зачет)
Итого 1 семестр
100
Коэффициент
0,33
2 семестр
Аудиторные занятия:
Лекции
0
Практические занятия
20
30
20
70
10
Самостоятельная работа
10
Итого за работу в
20
30
30
80
семестре
Итоговый
контроль
20
(экзамен)
Итого 2 семестр
100
Коэффициент
0,67
Итого по дисциплине
100
9
1.
Контроль за посещением лекций
2.
Контроль за посещением практических
занятий
За посещение лекции баллы не
начисляются
За посещение практических занятий
баллы не начисляются
модуль 1
Распределение видов контроля успеваемости, применяемых на практических
занятиях
Вид контроля
№
Тема практического занятия
успеваемости
I семестр
Практическое задание №1
1,2
Алгоритмы: построение и анализ.
Тест
Структуры данных: Линейные
Практическое задание №2,
3,4
структуры данных.
№3, №4
Структуры данных: Нелинейные
Практическое задание №5
5
структуры данных.
Алгоритмы поиска: Поиск в линейных
Практическое задание №6
6
таблицах.
Алгоритмы поиска: Поиск в
Практическое задание №7
7,8
древовидных таблицах. Бинарные
деревья поиска.
Алгоритмы поиска: Поиск в
Практическое задание №8
9,10 древовидных таблицах.
Сбалансированные (АВЛ) деревья.
Алгоритмы поиска: Поиск в
Практическое задание №9
древовидных таблицах. Внешний
11
поиск в Б-деревьях. Красно-черные
деревья.
Алгоритмы поиска: Поиск в
Практическое задание №10
12
древовидных таблицах. Красночерные деревья.
Алгоритмы сортировки: Простые
Практическое задание №11
13
методы сортировки.
Алгоритмы сортировки: Быстрая
Практическое задание №12
14,15
сортировка.
Алгоритмы сортировки: Обменная
Практическое задание №13
15
поразрядная сортировка.
Алгоритмы сортировки:
Практическое задание №14
16
Пирамидальная сортировка.
модуль 2
3.3
Виды контроля успеваемости, применяемые на аудиторных занятиях, и их
оценка в рейтинговых баллах
№
Максимальное количество
Вид контроля успеваемости
п/п
баллов
модуль 3
3.2
18
Зачетное занятие.
10
модуль 1
1,2
3,4
5
6
7
модуль 2
8
9
10
11
12
13
модуль 3
14
15
16
17,18
4
II семестр
Графы и сети: Представление графов с
помощью динамических структур
данных.
Практическое задание №15
Тест
Графы и сети: Обходы графов.
Практическое задание №16,
№17
Графы и сети: Минимальные
покрывающие деревья. Алгоритм
Краскала.
Графы и сети: Минимальные
покрывающие деревья. Алгоритм
Прима.
Графы и сети: Кратчайшие пути из
одной вершины в другую. Алгоритм
Дейкстры.
Графы и сети: Кратчайшие пути для
всех пар вершин. Алгоритм Флойда.
Графы и сети: Алгоритм ФордаФалкерсона о нахождении
максимального потока в сети
Графы и сети: Алгоритм нахождения
Эйлерова цикла.
Графы и сети: Алгоритм нахождения
Гамильтонова цикла.
Графы и сети: Задача Коммивояжера.
Метод ветвей и границ.
Графы и сети: Клики.
Графы и сети: Хроматическое число
графа.
Графы и сети: Паросочетания в
двудольных графах. Алгоритм
Хопкрофта – Карпа
Графы и сети: Паросочетания в
двудольных графах. Алгоритм Куна.
Графы и сети: Задача о назначениях.
Венгерский метод.
Практическое задание №17
Практическое задание №18
Практическое задание №19
Практическое задание №20
Практические задания №21
Практические задания №22
Практические задания №23
Практические задания №24
Практические задания №25
Практические задания №26
Практические задания №27
Практические задания №28
Практические задания №29
Организация самостоятельной работы
Темы для рефератов
1. Теория сложности алгоритмов: NP-сложные и труднорешаемые задачи.
4.2 Перечень вопросов к экзамену
1. Алгоритмы, основные свойства. Временная сложность алгоритмов.
Асимптотическая нотация.
2. Способы вычисления рекуррентных отношений.
3. Основные методы построения алгоритмов: «разделяй и властвуй», динамическое
программирование.
4. Линейные списки. Основные операции. Представление и реализация.
5. Стеки. Основные операции. Представление и реализация.
4.1
11
6. FIFO-Очереди. Очереди с приоритетами. Деки. Основные операции. Представление
и реализация.
7. Деревья. Математические свойства бинарных деревьев. Преобразование
упорядоченных деревьев в бинарные.
8. Деревья. Основные операции. Представление и реализация. Обходы деревьев.
Исключение рекурсии.
9. Деревья Хаффмана.
10. Поиск в линейной таблице: последовательный, бинарный, интерполяционный
поиск.
11. Бинарные деревья поиска. Основные операции.
12. Сбалансированные (АВЛ) деревья. Основные операции.
13. Б-деревья. Основные операции.
14. Красно-черные деревья. Основные операции.
15. Рандомизированные деревья поиска. Основные операции.
16. Основные методы вычисления хеш-функций.
17. Хеширование с цепочками.
18. Хеширование открытой адресацией.
19. Сортировка. Постановка задачи, основные определения, оценка эффективности.
Классификация алгоритмов.
20. Простые методы внутренней сортировки.
21. Быстрая сортировка. Модификации алгоритма.
22. Порядковые статистики.
23. Обменная поразрядная сортировка.
24. Пирамидальная сортировка. Способы построения пирамиды.
25. Алгоритм двухпутевого слияния (реализация на массивах и списках).
26. Нисходящая сортировка слиянием.
27. Восходящая сортировка слиянием. Сортировка естественным слиянием.
28. Сортировка подсчетом распределения (на массивах и на списках).
29. Поразрядная (цифровая) сортировка.
30. Топологическая сортировка.
31. Представление графов с помощью матриц. Основные недостатки.
32. Представление графов с помощью списков смежности. Описание типа.
33. Представление графов с помощью ортоганальных списков смежности. Описание
типа.
34. Представление графов с помощью структуры Вирта. Описание типа.
35. Представление графов с помощью модифицированной структуры Вирта. Описание
типа.
36. Обход графа в глубину. Рекурсивная процедура обхода в глубину для графа,
представленного структурой Вирта. Нерекурсивный алгоритм.
37. Обход графа в ширину. Нерекурсивная процедура обхода в ширину для графа,
представленного структурой Вирта.
38. Задачи о кратчайших расстояниях на графах. Алгоритмы Прима и Крускала
построения минимального остовного дерева.
39. Задачи о кратчайших расстояниях на графах. Алгоритм Дейкстры для построения
дерева кратчайших расстояний.
40. Задачи о кратчайших расстояниях на графах. Алгоритм Флойда-Уоршалла
нахождения кратчайших путей между всеми парами вершин.
41. Потоки в сетях. Задача о максимальном потоке в сети. Теорема о максимальном
потоке и минимальном разрезе. Алгоритм Форда-Фалкерсона.
42. Плоские графы. Грани графа. Доказать теорему Эйлера о плоских графах.
43. Доказать, что граф К5 не планарен. Доказать, что граф К33 не планарен.
12
44. Эйлеров путь. Эйлеров граф. Алгоритм построения эйлерова пути в эйлеровом
графе. Критерий эйлеровости графов.
45. Гамильтонов граф. Теорема Дирака.
46. Раскраска графов. Хроматическое число. Доказать теорему о пяти красках.
47. Раскраска графов. Хроматическое число. Алгоритм правильной раскраски графа.
48. Задача коммивояжера. Метод ветвей и границ.
49. Паросочетания в двудольных графах. Алгоритм Хопкрофта-Карпа построения
наибольшего паросочетания.
50. Алгоритм Куна построения наибольшего паросочетания.
5
СПИСОК ЛИТЕРАТУРЫ
5.1
Основная литература:
1. Вирт Н. Алгоритмы и структуры данных: с примерами на Паскале.. - Санкт-
Петербург: Невский Диалект, 2008. - 352 с.
2. Деревнина А.Ю. Структуры данных и алгоритмы компьютерной обработки
данных: Учебное пособие. - Тюмень: Издательство ТюмГУ, 2006. - 220 с.
3. Кнут Д. Искусство программирования. Т1. Основные алгоритмы. – Москва: Изд.
дом Вильямс, 2010. – 720 с.
4. Кнут Д. Искусство программирования. ТЗ. Сортировка и поиск. – Москва: Изд.
дом Вильямс, 2010. – 824 с.
5. Математические основы программирования [Электронный ресурс]. - Электрон.
текстовые данные. - Москва: Регулярная и хаотическая динамика, 2005.
5.2
Дополнительная литература:
1.
Вирт Н. Алгоритмы + структуры данных = программы. – М.:Мир, 1985.
2.
Ласло М. Вычислительная геометрия и компьютерная графика на С++. –
М.: Бином, 1997.
3.
Хусаинов Б.С. Структуры и алгоритмы обработки данных. Примеры на
языке Си. – М.: Финансы и статистика, 2004.
4. Кормен Т., Лейзерсон Ч., Ривест Р. Алгоритмы: построение и анализ. – М.:
МЦНМО, 2000.
5. Ахо А. и др. Структуры данных и алгоритмы. – М.: Изд.дом Вильямс, 2000.
6. Седжвик Р. Фундаментальные алгоритмы на С++. – Спб.: ООО «Диасофт ЮП»,
2002.
7. Асанов М.О. Дискретная математика - графы, матроиды, алгоритмы. Ижевск:
НИЦ "РХД", 2001.
13
Download