62463 - Белорусский государственный университет

advertisement
БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
УТВЕРЖДАЮ
Председатель
Учебно-методического объединения
вузов Республики Беларусь
по естественнонаучному образованию
__________________ В.В. Самохвал
« 30 »
06
2006 г.
Регистрационный № ТД – G.060/тип.
ТЕОРИЯ АЛГОРИТМОВ
Учебная программа
для высших учебных заведений по специальности
1- 31 03 04 Информатика
СОГЛАСОВАНО
Председатель
научно-методического совета
по прикладной математике и информатике
_______________ П.А. Мандрик
_______________ 2006
Первый проректор
Государственного учреждения образования
«Республиканский институт высшей
школы»
_____________ В.И. Дынич
_____________ 2006
Эксперт-нормоконтролер
_______________ С.М. Артемьева
_______________ 2006
Минск
2006
Составители:
В. М. Котов, заведующий кафедрой дискретной математики и алгоритмики Белорусского
государственного университета, доктор физ.-матем. наук, профессор;
Е. П. Соболевская, доцент кафедры дискретной математики и алгоритмики Белорусского
государственного университета, кандидат физ.-матем. наук, доцент
Рецензенты:
Рецензенты:
Кафедра вычислительных методов и программирования Учреждения образования
«Белорусский государственный университет информатики и радиоэлектроники»
Кузнецов А.Т.  доцент кафедры прикладной математики и информатики Учреждения
образования «Белорусский государственный педагогический университет им. М. Танка»,
канд. пед. наук, доцент
Рекомендована к утверждению в качестве типовой:
Кафедрой дискретной математики и алгоритмики Белорусского государственного
университета
(протокол № 12 от 31 января 2006г.).
Научно-методическим советом Белорусского государственного университета
(протокол № ___ от ____ ___________2006г.).
Ответственный за редакцию:
Е.П. Соболевская
Ответственный за выпуск:
О.А. Кастрица
Пояснительная записка
Курс «Теория алгоритмов» знакомит студентов с такими
фундаментальными понятиями как информация, размерность задачи и
трудоемкость алгоритмов. Особое внимание уделено способам определения
трудоемкости алгоритмов с помощью таких методов, как составление и
решение рекуррентных уравнений. Наряду с классическим подходом оценки
трудоемкости рассматриваются также способы определения усредненной
оценки трудоемкости алгоритма для группы операций.
Большое внимание в курсе уделяется современным структурам данных,
необходимым для эффективной реализации различных базовых операций. В
программу курса включены разделы, позволяющие строить эффективные
алгоритмы для разнообразных задач дискретной и комбинаторной
оптимизации с использованием различных структур данных.
Большое внимание уделеляется таким способам решения задач, как
организация перебора вариантов с отсечениями и построение приближенных
алгоритмов. Даются начальные знания, необходимые для построения и
анализа алгоритмов в условиях наличия неполной информации о входных
данных.
В курсе также рассматриваются различные модели вычислений (в том
числе и параллельных), и вопросы теории кодирования.
Основой для изучения теории алгоритмов являются следующие курсы:
«Дискретная математика и математическая логика», «Теория вероятностей и
математическая статистика», «Программирование». Методы, излагаемые в
курсе, используются при изучении дисциплин «Исследование операций»,
«Модели данных и СУБД», а также при изучении ряда дисциплин
специализации. Изучение курса теории алгоритмов позволяет дать студентам
базу, необходимую для успешного усвоения материала перечисленных выше
учебных дисциплин, а также получить знания, необходимые им в
дальнейшем для успешной работы.
В соответствии с образовательным стандартом специальности 1- 31 03
04 «Информатика» учебная программа предусматривает для изучения
дисциплины 135 аудиторных часов, в том числе лекционных  64 ч.,
лабораторных  46 ч, контролируемой самостоятещльной работы – 25 ч.
Содержание
Введение
Понятие информации. Мера информации. Размерность задачи.
Трудоемкость алгоритмов: наилучший случай, наихудший случай,
трудоемкость в среднем, усредненная оценка трудоемкости группы
операций. Ассимптотики Ο, Ω, Θ. Полиномиальные и неполиномиальные
алгоритмы. Примеры.
Проектирование и анализ
Понятие рекуррентного уравнения. Правильные и неправильные
рекуррентные уравнения. Полное рекуррентное уравнение. Основные методы
решения рекуррентных уравнений: метод итераций и метод рекурсивных
деревьев. Оценка решения рекуррентного уравнения: метод подстановок.
Теорема о решении рекуррентного уравнения вида T(n)=aT(n/c)+b*n.
Рекуррентные уравнения базовых алгоритмов и их трудоемкость.
Способы
упорядочивания
информации:
основные
алгоритмы
внутренней и внешней сортировки и их трудоемкость.
Структуры данных
Простейшие структуры данных: массивы, простые списки,
мультисписки, стеки, очереди и реализация базовых операций над ними.
Сложные структуры данных: бинарные кучи, биномиальные кучи и кучи
Фибоначчи. Реализация базовых операций над ними. Усредненная
трудоемкость базовой операции.
Множества. Различные способы представление множеств и реализация
базовых операций над ними. Применение множеств для решения задач.
Организация поиска
Поисковые деревья. Сбалансированные деревья: АВЛ-деревья, 2-3
деревья, красно-черные дереья. Базовые операции над ними и их
трудоемкость в наихудшем случае.
Хэш-таблицы и хэш-функции. Коллизии. Методы разрешения коллизий.
Открытое и закрытое хэширование.
Теория графов
Методы хранения графов и деревьев. Связность. Двудольность.
Маршруты. Подграфы.
Использование современных структур данных в основных алгоритмах
на графах: поиск в глубину (стек), поиск в ширину (очередь), кратчайший
путь (приоритетная очередь). Трудоемкость алгоритмов. Максимальный
поток в графе и его приложения. Топологическая сортировка. Алгоритмы
построения минимального остовного дерева, использующие при своей
реализации приоритетую очередь и множества, и их трудоемкость.
Стратегии решения задач
Принцип «Разделяй и властвуй», динамическое программирование,
градиентные алгоритмы. Примеры решения задач с использованием данных
методов и их трудоемкость.
NP-трудные задачи
Организация перебора при решении NP-трудных задач. Методы
уменьшения перебора. Метод ветвей и границ. Полиномиально разрешимые
случаи.
Приближенные алгоритмы
Типы эвристик: локальный поиск, алгоритмы локального улучшения,
генетические алгоритмы, табу-поиск.
Градиентные алгоритмы. Матроидные структуры.
Оценка погрешности приближенных алгоритмов. -приближенные и
быстрые -приближенные алгоритмы. On-line и semi on-line версии задач
(задачи с неполной информацией о входных данных), алгоритмы их решения
и способы оценки качества решений. Рандомизированные алгоритмы.
Сортирующие сети
Компараторы. Сети слияния. 0-1 принцип. В-последовательности.
Полуочиститель. В-сортировщик. Сети слияния.
Модели параллельных вычислений
Понятие PRAM-машины. Различные типы машин: EREW PRAM, CREW
PRAM, CRCW PRAN (Weak, Common, Arbitrary, Priority, Strong). Связь
между ними. Общие методы распараллеливания: метод сдваивания,
матричная техника, сепараторы.
Теория кодирования
Методы кодирования информации: алгоритмы Хаффмена, ЛемпеляЗива, Левенштейна. Арифметическое кодирование.
Литература
Основная
1. Ахо Альфред В., Хопкрофт Джон Э., Ульман Джеффри Д. Структуры
данных и алгоритмы.  М.: Издательский дом “Вильямс”, 2000.  384 c.
2. Ахо Альфред В., Хопкрофт Джон Э., Ульман Джеффри Д. Построение и
анализ вычислительных алгоритмов.  М.: Мир,1979.  536 c.
3. Котов В.М., Соболевская Е.П. Структуры данных и алгоритмы: теория и
практика.  Мн.: БГУ. 2004.  252 с.
4. Ковалев М.Я., Котов В.М.,Лепин В.В. Теория алгоритмов. Часть 2.
Приближенные алгоритмы. – Мн.: БГУ, 2003. – 147 с.
5. Котов В.М., Пилипчук Л.А., Соболевская Е.П. Теория алгоритмов. Ч.1. 
Мн.: БГУ. 2001.  192 с.
6. Т. Кормен, Ч. Лейзерсон, Р. Ривест. Алгоритмы: построение и анализ. 
М.: МЦНМО, 1999.  960 с., 263 ил.
Дополнительная
7. Вирт Н. Алгоритмы и структуры данных.  СПб.: Невский Диалект,
2001. 352с.
8. Емеличев В.А., Мельников О.И., Сарванов В.И., Тышкевич Р.И. Лекции
по теории графов.  М.: Наука, 1990. 383с.
9. Котов В.М. Алгоритмы для задач разбиения и упаковки. Научное
издание.  Мн.: БГУ. 2001.  97 с.
10. Липский В. Комбинаторика для программистов.  М.: Мир,1988.  214 с.
11. Пападдимитриу Х.,Стайглиц К. Комбинаторная оптимизация: Алгоритмы
и сложность.  М.: Мир,1971.  512с.
12. Рейнгольд Э., Нивергельт Ю., Део Н. Комбинаторные алгоритмы теория
и практика.  М.: Мир, 1980.  476 c.
13. Mark Allen Weiss. Data structures and algorithm analysis. 
Benjamin/Cummings Publishing Company, 1992.  455 p.
14. C. Shaffer. A Practical Introduction to Data Structure and Algorithm Analysis.
 London: Prentice Hall International, 1997.  494 p.
Download