64003

advertisement
Министерство образования Республики Беларусь
Учебно-методическое объединение вузов Республики Беларусь
по естественнонаучному образованию
УТВЕРЖДАЮ
Первый заместитель Министра
Образования Республики Беларусь
________________ А.И. Жук
«___» __________ 2008 г.
Регистрационный № ТД-______/тип.
ПОСТРОЕНИЕ И АНАЛИЗ АЛГОРИТМОВ
Типовая учебная программа
для высших учебных заведений по направлению специальности:
1-31 03 01-05
Математика (информационные технологии)
СОГЛАСОВАНО
Председатель Учебно-методического
объединения вузов Республики
Беларусь по естественнонаучному
образованию
________________ В.В. Самохвал
«___» __________ 2008 г.
СОГЛАСОВАНО
Начальник управления высшего и
среднего специального образования
Министерства образования
Республики Беларусь
________________ Ю.И. Миксюк
«___» __________ 2008 г.
Первый проректор Государственного
учреждения образования «Республиканский институт высшей школы»
________________ И.В. Казакова
«___» __________ 2008 г.
Эксперт-нормоконтролер
________________ С.М. Артемьева
«___» __________ 2008 г.
Минск 2008
2
СОСТАВИТЕЛИ:
Романчик Валерий Станиславович, заведующий кафедрой численных методов и программирования Белорусского государственного университета, кандидат физико-математических наук, доцент;
Скумс Павел Валентинович, старший преподаватель кафедры численных
методов и программирования Белорусского государственного университета,
кандидат физико-математических наук.
РЕЦЕНЗЕНТЫ:
Кафедра экономической информатики Учреждения образования «Белорусский государственный экономический университет» (заведующий кафедрой – кандидат технических наук, профессор Б.А. Железко);
В.И. Сарванов, заведующий отделом комбинаторных моделей и алгоритмов Института математики Национальной академии наук Беларуси, кандидат физико-математических наук, старший научный сотрудник.
РЕКОМЕНДОВАНА К УТВЕРЖДЕНИЮ В КАЧЕСТВЕ ТИПОВОЙ:
Кафедрой численных методов и программирования механикоматематического факультета Белорусского государственного университета
(протокол № 8 от 6 марта 2008 г.);
Научно-методическим советом Белорусского государственного университета (протокол № 3 от 27 марта 2008 г.);
Научно-методическим советом по математике и механике Учебнометодического объединения вузов Республики Беларусь по естественнонаучному образованию
(протокол № 3 от 10 апреля 2008 г.).
Ответственный за выпуск: Скумс Павел Валентинович
3
1. Пояснительная записка
Развитие современного производства, его сложная разветвленная
структура приводит к все более возрастающей потребности современного
общества в новейших информационных технологиях. Это вызывает к жизни
множество новых задач и проблем, требующих адекватного аппарата для
своего решения. Общеизвестно, что комбинаторные методы и алгоритмы
являются наиболее удобным и эффективным средством решения этих задач.
Современное программирование невозможно представить себе без эффективных алгоритмов. Это связано с тем, что очень многие возникающие в
области информационных технологий задачи характеризуются большим
числом составляющих элементов и огромным количеством связей между
ними. Такие задачи весьма сложны для решения даже с использованием новейшей и самой совершенной на данный момент вычислительной техники.
Поэтому создание сложного программного продукта в настоящее время
возможно лишь с использованием мощной алгоритмической базы, за которой стоит соответствующий математический аппарат – аппарат теории комбинаторных алгоритмов и дискретной оптимизации.
Задача данной дисциплины – ознакомить студентов с наиболее часто
используемыми комбинаторными алгоритмами, с основными идеями, методами и алгоритмическими стратегиями и тем самым подготовить их к решению реальных задач, возникающих на практике.
После изучения данной дисциплины студент должен
знать:

основные структуры данных;

алгоритмы решения основных задач комбинаторной оптимизации,
основные алгоритмические стратегии;

методы оценки трудоемкости алгоритмов и методы анализа сложности задач;
уметь:

разрабатывать программные реализации основных алгоритмов и
структур данных;

применять основные алгоритмы и структуры данных для практических задач, возникающих в программировании, экономике, компьютерной
графике, защите информации;

разрабатывать алгоритмы решения задач на основе известных алгоритмических стратегий.
Всего – 248 часов. Из них аудиторных – 136 часов, в том числе: лекции – 66 ч., лабораторные занятия – 38 ч., практические занятия – 32 ч.
4
2. ПРИМЕРНЫЙ ТЕМАТИЧЕСКИЙ ПЛАН
№
п/п
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Название темы
Лекции
Введение. Основные структуры
данных
Трудоемкость алгоритмов
Алгоритмы сортировки
Алгоритмы поиска и выборки
Алгоритмы на строках
Алгоритмы на графах
Динамическое программирование
и метод “разделяй и властвуй”
Основы теории сложности вычислений
Алгоритмы с гарантированной
оценкой точности.
Основные алгоритмические стратегии
Задачи линейного и целочисленного линейного программирования
Алгоритмы для работы с матрицами
Элементы криптографии
Алгоритмы сжатия информации
Нейронные сети
Алгоритмы для параллельных вычислений
Итого
Практ.
занятия
2
Лаб.
занятия
Всего
2
4
2
4
2
-
4
4
8
4
-
4
8
2
-
2
4
16
4
8
-
10
4
34
8
6
6
-
12
4
4
-
8
6
4
4
14
2
2
4
2
2
8
4
2
2
2
2
2
2
2
2
8
4
4
4
66
32
38
136
4
3. СОДЕРЖАНИЕ УЧЕБНОГО МАТЕРИАЛА
1. Введение. Основные структуры данных. Предмет теория алгоритмов. Прикладное значение эффективности алгоритмов. Связь с дискретной математикой, математической кибернетикой, программированием. Стеки, очереди, связанные списки, бинарные деревья.
5
2. Трудоемкость алгоритмов. Предмет теория алгоритмов. Прикладное значение эффективности алгоритмов. Связь с дискретной математикой,
математической кибернетикой, программированием. Необходимость оценки
алгоритмов. Принципы оценки трудоемкости комбинаторных алгоритмов.
Рост функций, O-нотация. Трудоемкость «в худшем», трудоемкость «в
среднем», трудоемкость «почти всегда». Примеры анализа алгоритмов.
3. Алгоритмы сортировки. Элементарные методы сортировки (сортировки выбором, вставками, пузырьковая, Шелла). Быстрая сортировка.
Корневая и пирамидальная сортировка. Сортировка слиянием. Внешняя
сортировка. Линейные сортировки (подсчетом и вычерпыванием). Анализ
эффективности сортировок. Теорема о невозможности существования алгоритма сортировки в «худшем» и «в среднем» с трудоемкостью лучшей, чем
О(n log2n).
4. Алгоритмы поиска и выборки. Последовательный поиск. Бинарный поиск. Деревья бинарного поиска. Сбалансированные деревья (2-3-4
деревья, красно-черные деревья) и реализуемые с их помощью структуры.
Операции над деревьями. Хеширование.
5. Алгоритмы на строках. Основные определения. Алгоритмы поиска подстроки в строке. Алгоритмы Бойера-Мура, Кнута-Морриса-Пратта и
их реализации.
6. Алгоритмы на графах. Основные понятия теории графов. Структуры данных для представления графов: матрицы смежности, матрицы инцидентности, списки смежности, списки ребер. Алгоритмы поиска в ширину
и глубину, их реализация. Поиск компонент связности и компонент двусвязности. Алгоритмы нахождения эйлерова цикла. Жадные алгоритмы и
матроиды. Поиск минимального остовного дерева и кратчайшего пути в
графе. Алгоритмы Прима, Краскала, Дийкстры, Флойда, Беллмана-Форда.
Паросочетания в двудольных графах, метод увеличивающей цепи. Алгоритмы раскраски графов. Алгоритмы для задач о независимом множестве, доминирующем множестве. Построение реализаций графической последовательности, l-процедура. Потоки в сетях, алгоритм Форда-Фалкерсона.
7. Динамическое программирование и метод “разделяй и властвуй”. Понятие о методах динамического программирования и “разделяй и
властвуй”. Алгоритм Штрассена умножения матриц. Задача о рюкзаке. Графы с ограниченным параметром treewidth и алгоритмы для них.
8. Основы теории сложности вычислений. Детерминированные и
недетерминированные машины Тьюринга. Понятие о классах Р и NР. NPполные задачи. Теорема Кука-Карпа-Левина. NP-полнота задач “3выполнимость”, “Клика”, “Гамильтонов цикл”. Списки наиболее известных
NР-полных задач.
9. Алгоритмы с гарантированной оценкой точности. Понятие о гарантированной оценке точности алгоритма. Задача упаковки. Задача о максимальном разрезе. Задача о вершинном покрытии. Задача о коммивояжере
6
с неравенством треугольника, О существовании алгоритма с гарантированной оценкой точности для общей задачи коммивояжера.
10. Основные алгоритмические стратегии. Эвристики и метаэвристики. Алгоритмы локального поиска, поиска с запретами. Генетические алгоритмы, алгоритмы имитации отжига. Алгоритмы полного перебора, метод
ветвей и границ.
11. Задачи линейного и целочисленного линейного программирования. Понятие о задачах линейного и целочисленного линейного программирования. Формулировки основных задач дискретной оптимизации как задач целочисленного линейного программирования. Программные пакеты
для решения задачи целочисленного линейного программирования. Формат
MPS.
12. Алгоритмы для работы с матрицами. Решение систем линейных
уравнений. LU-разложение. Обращение матриц.
13. Элементы криптографии. Криптосистемы с открытым ключом,
цифровая подпись. Криптосистема RSA. Алгоритмы проверки чисел на простоту.
14. Алгоритмы сжатия информации. Коды Хаффмана, алгоритм
Хаффмана.
15. Нейронные сети. Понятие о нейронной сети. Типы нейронных сетей. Обучение нейронных сетей.
16. Алгоритмы для параллельных вычислений.
7
4. ИНФОРМАЦИОННАЯ ЧАСТЬ
ЛИТЕРАТУРА
1.
2.
3.
4.
Основная
Роберт Седжвик. Фундаментальные алгоритмы на JAVA. Части 1-4.
Анализ, структуры данных, сортировка, поиск. DiaSoft. Москва,
Санкт-Петербург, Киев, 2003.
Роберт Седжвик. Фундаментальные алгоритмы на С++. Часть 5. Алгоритмы на графах. DiaSoft. Москва, Санкт-Петербург, Киев, 2002.
Дж. Макконелл. Анализ алгоритмов. Техносфера. Москва, 2002.
Т. Кормен, Ч. Лейзерсон, Р. Ривест. Алгоритмы: построение и анализ.
М.: МЦНМО, 2000
Дополнительная
1. Кнут Д. Искусство программирования. Т.1. Основные алгоритмы.
2000, Вильямс.
2. Кнут Д. Искусство программирования. Т.2. Получисленные алгоритмы. 2000, Вильямс.
3. Кнут Д. Искусство программирования. Т.3. Сортировка и поиск. 2000,
Вильямс.
4. Ахо Х., Хопкрофт Дж., Ульман Дж. Построение и анализ вычислительных алгоритмов. – М.: Мир, 1979.
5. Пападимитриу Х., Стейглиц К. Комбинаторная оптимизация. Алгоритмы и сложность. – М.: 1985.
6. Емеличев В.А., Мельников О.И., Сарванов В.И., Тышкевич Р.И. Лекции по теории графов. – М.: 1990.
7. Хайкин С. Нейронные сети. Полный курс. — М.: 2005.
8
Download