1. Пояснительная записка - Основные образовательные

advertisement
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ
РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ
ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
«ТЮМЕНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»
СТРУКТУРЫ И АЛГОРИТМЫ КОМПЬЮТЕРНОЙ ОБРАБОТКИ ДАННЫХ
Рабочая программа для студентов заочной формы обучения специальности
080801 – Прикладная информатика в экономике
Тюмень 2011
Воробьева М.С. Структуры и алгоритмы компьютерной обработки данных.
Рабочая программа для студентов заочной формы обучения специальности 080801
– Прикладная информатика в экономике. Тюмень: издательство Тюменского
государственного университета. 2011, 10 стр.
Рабочая программа дисциплины опубликована на сайте ТюмГУ: Структуры
и алгоритмы компьютерной обработки данных [электронный ресурс] / Режим
доступа: http://www.umk.utmn.ru, свободный.
Рекомендовано к изданию кафедрой программного обеспечения.
Утверждено проректором по учебной работе Тюменского государственного
университета.
ОТВЕТСТВЕННЫЙ РЕДАКТОР: Захарова И.Г., д.п.н., профессор. Зав.кафедрой
программного обеспечения
© Тюменский государственный университет, 2011.
2
1. Пояснительная записка
1.1. Цели и задачи дисциплины
Один из центральных курсов для студентов компьютерных специальностей,
который сформировался в международном образовательном пространстве за
последние 30 лет, носит название «Алгоритмы». Объем изучаемого материала
настолько широк, что различные главы этого курса читаются как для начинающих
программистов, например студентов первого и второго курсов, так и для
аспирантов.
Дисциплина «Структуры и алгоритмы компьютерной обработки данных»
читается в Тюменском государственном университете в течение III семестра
студентам второго года обучения. Программа курса включает четыре основные
темы и нацелена на обзор и анализ ключевых алгоритмов, которыми должен
владеть каждый программист. Это алгоритмы работы с различными
информационными структурами данных, реализующие в основном задачи
сортировки и поиска данных. Сравнительный анализ алгоритмов неизменно
сопровождается оценкой их эффективности. Конкретная реализация алгоритмов
изложена на языке Паскаль, однако студенты, знакомые с другими языками
программирования, могут выполнять индивидуальные задания на любом языке
программирования.
Задачи дисциплины
Основной целью при изучении дисциплины является формирование у
студентов взгляда на программирование как на предмет научного изучения и поле
для интеллектуальной деятельности.
1.2. Требования к уровню освоения содержания дисциплины
В итоге студенты должны уметь компетентно и ответственно решать на
основе полученных знаний комплексные задачи.
Студент должен знать:
 основные этапы компьютерного решения задач;
 понятие алгоритма и структуры управления; традиционные структуры данных;
 примеры базовых структур данных;
Студент должен уметь:
 применять требования методологии структурного программирования при
проектировании информационных моделей;
 разрабатывать и записывать на языке программирования высокого уровня
алгоритмы решения классических задач программирования;
Студент должен владеть:
 применять средства структурного, модульного и объектно-ориентированного
программирования для решения задач.
2. Объем дисциплины и виды учебной работы
Вид занятий
Всего часов
Общая трудоемкость
105
Аудиторные занятия
20
Семестры
3
3
Лекции
10
Лабор. Занятия
10
Самостоятельная работа
85
Контрольные работы
+
Курсовая работа
Вид итогового контроля
3.
экзамен
Тематический план изучения дисциплины
НАЗВАНИЕ ТЕМЫ
Лекции
Лаб.
раб.
Сам.
раб.
Формы
контрол
я
1. Алгоритмы: построение и анализ.
Временная сложность алгоритмов. Вычисление
рекуррентных отношений. Методы построения
алгоритмов.
2. Структуры данных.
Концепция АТД. Линейные структуры данных.
Нелинейные структуры данных.
2
2
20
+
2
2
20
+
3. Алгоритмы поиска.
Поиск в линейных таблицах. Поиск в
нелинейных таблицах. Поиск в таблицах с
вычисляемыми входами.
4. Алгоритмы сортировки.
Простые алгоритмы внутренней сортировки.
Улучшенные
алгоритмы
внутренней
сортировки. Алгоритмы сортировки за линейное
время. Сортировка частично упорядоченного
множества. Алгоритмы внешней сортировки.
ИТОГО
2
2
20
+
4
4
25
+
10
10
85
4. Содержание разделов дисциплины
ТЕМА 1. Алгоритмы: построение и анализ.
Алгоритмы, определение и основные свойства. Временная сложность
алгоритмов: время выполнения в худшем случае, в среднем, в лучшем случае.
Асимптотическая нотация: верхние оценки временной сложности, точные оценки,
нижние оценки. Классификация алгоритмов по временной сложности.
Вычисление рекуррентных отношений в рекурсивных алгоритмах. Способы
вычислений рекуррентных отношений: метод подстановки, метод итераций,
основная теорема
Основные методы построения рекурсивных алгоритмов. Метод «разделяй и
властвуй». Динамическое программирование (нисходящий и восходящий методы).
ТЕМА 2. Структуры данных.
Концепция АТД (абстрактных типов данных). Представление АТД в виде
структуры данных. Классификация операций и структур.
Линейные структуры данных. АТД линейный список. Основные операции,
представление и реализации. АТД стек, очередь, очередь с приоритетами, дек.
Основные операции, представление и реализации. Применение структур данных.
Метод исключения рекурсии с помощью стека.
4
Нелинейные структуры данных. Деревья, основные определения.
Ориентированные деревья, упорядоченные деревья, бинарные деревья, m-арные
деревья.
Основные
математические
свойства
бинарных
деревьев.
Преобразование упорядоченных деревьев в бинарные. АТД деревья. Основные
операции, представление в памяти. Обходы деревьев. Применение деревьев.
Деревья Хаффмана.
ТЕМА 3. Алгоритмы поиска.
Постановка задачи, основные понятия. АТД таблица. Поиск в линейных
таблицах. Алгоритмы последовательного, бинарного, интерполяционного поиска.
Анализ эффективности алгоритмов.
Поиск в нелинейных таблицах. Бинарные деревья поиска (BST). Основные
операции. Анализ эффективности алгоритмов.
Сбалансированные (АВЛ) деревья. Критерий сбалансированности. Деревья
Фибоначчи. Виды балансировки. Основные операции. Анализ эффективности
алгоритмов.
Б-деревья. Внешний поиск. Основные операции. Анализ эффективности
алгоритмов. Разновидности Б-деревьев. Применение структур данных.
Красно-черные
деревья.
Рандомизированные
деревья
поиска.
Оптимальные деревья поиска. Основные операции. Анализ эффективности
алгоритмов.
Поиск в таблицах с вычисляемыми входами. Хеширование. Основные
методы вычисления хеш-функций: метод деления, метод умножения,
комбинированный метод. Разрешение коллизий. Хеширование с цепочками.
Хеширование открытой адресацией. Основные виды повторного хеширования:
линейное исследование, квадратичное исследование, двойное хеширование.
Основные операции. Анализ эффективности алгоритмов.
ТЕМА 4. Алгоритмы сортировки.
Постановка задачи, основные определения. Понятие внутренней и внешней
сортировки, устойчивость сортировки, основные характеристики эффективности.
Простые алгоритмы внутренней сортировки. Анализ алгоритмов. Сортировка
Шелла. Понятие h-сортировки, зависимость эффективности сортировки от выбора
последовательности h.
Улучшенные алгоритмы внутренней сортировки. Быстрая сортировка.
Модификации быстрой сортировки. Вычисление порядковых статистик. Обменная
поразрядная сортировка. Пирамидальная сортировка. Определение пирамиды.
Способы построения пирамиды, нисходящий и восходящий алгоритмы.
Реализации АТД очередь с приоритетами. Анализ алгоритмов.
Сортировка слиянием. Понятие двухпутевого, k-путевого слияния.
Нисходящая сортировка слиянием. Вопросы устойчивости. Восходящая
сортировка слиянием. Сортировка естественным слиянием. Анализ алгоритмов.
Реализация алгоритмов на списках.
Алгоритмы сортировки за линейное время. Сортировка подсчетом
распределения. Поразрядная (цифровая) сортировка. Анализ алгоритмов.
Реализация алгоритмов на списках
Сортировка частично упорядоченного множества. Определение, постановка
задачи, алгоритм топологической сортировки, структура данных. Анализ
алгоритма.
Алгоритмы внешней сортировки. Постановка задачи. Сбалансированное
многопутевое слияние. Выбор с замещением. Многофазное слияние. Алгоритм
горизонтального распределения серий. Анализ алгоритмов.
5
5. Практические занятия
5.1. Алгоритмы: построение и анализ. Временная сложность алгоритмов.
Асимптотическая нотация: верхние оценки временной сложности, точные оценки,
нижние оценки.
5.2. Вычисление рекуррентных отношений в рекурсивных алгоритмах.
Способы вычислений рекуррентных отношений. Основные методы построения
рекурсивных алгоритмов.
5.3.
Структуры данных. Концепция АТД (абстрактных типов данных).
Представление АТД в виде структуры данных. Линейные структуры данных. АТД
линейный список. Основные операции, представление и реализации. АТД стек,
очередь, очередь с приоритетами, дек. Основные операции, представление и
реализации.
5.4. Нелинейные структуры данных. Деревья, основные определения.
Ориентированные деревья, упорядоченные деревья, бинарные деревья, m-арные
деревья. Основные математические свойства бинарных деревьев.
5.5. Преобразование упорядоченных деревьев в бинарные. АТД деревья.
Основные операции, представление в памяти. Обходы деревьев. Деревья
Хаффмана.
5.6. Алгоритмы поиска. Постановка задачи, основные понятия. АТД таблица.
Поиск в линейных таблицах. Алгоритмы последовательного, бинарного,
интерполяционного поиска. Анализ эффективности алгоритмов.
5.7. Поиск в нелинейных таблицах. Бинарные деревья поиска (BST).
Основные операции. Анализ эффективности алгоритмов.
5.8. Сбалансированные (АВЛ) деревья. Критерий сбалансированности.
Деревья Фибоначчи. Виды балансировки. Основные операции. Анализ
эффективности алгоритмов.
5.9. Б-деревья. Внешний поиск. Основные операции. Анализ эффективности
алгоритмов. Разновидности Б-деревьев. Красно-черные деревья. Оптимальные
деревья поиска.
5.10. Поиск в таблицах с вычисляемыми входами. Хеширование. Основные
методы вычисления хеш-функций: метод деления, метод умножения,
комбинированный метод. Разрешение коллизий.
5.11. Алгоритмы сортировки. Понятие внутренней и внешней сортировки,
устойчивость сортировки, основные характеристики эффективности. Простые
алгоритмы внутренней сортировки. Анализ алгоритмов.
5.12. Сортировка Шелла. Понятие h-сортировки, зависимость эффективности
сортировки от выбора последовательности h.
5.13. Сортировка слиянием. Понятие двухпутевого, k-путевого слияния.
Нисходящая сортировка слиянием. Вопросы устойчивости. Восходящая
сортировка слиянием. Сортировка естественным слиянием.
5.14. Сортировка частично упорядоченного множества. Определение,
постановка задачи, алгоритм топологической сортировки, структура данных.
5.15.
Алгоритмы
внешней
сортировки.
Постановка
задачи.
Сбалансированное многопутевое слияние. Выбор с замещением. Многофазное
слияние.
Темы для самостоятельной работы
1.
2.
3.
4.
5.
Прошитые деревья.
Деревья Хаффмана.
Деревья оптимального поиска.
Деревья цифрового поиска.
B+-деревья
6
6. Trie-деревья.
7. Patricia-деревья.
8. Суффиксные деревья.
9. Биномиальные кучи.
10. Фибоначчиевы кучи.
11. Поиск образца в строке: алгоритм Рабина-Карпа.
12. Поиск образца в строке: алгоритм Кнута-Морриса-Пратта.
13. Поиск образца в строке: алгоритм Бойера-Мура.
14. Задача о наибольшей общей последовательности.
6. Вопросы к экзаменам
1. Алгоритмы, основные свойства. Временная сложность алгоритмов.
Асимптотическая нотация.
2. Способы вычисления рекуррентных отношений.
3. Основные методы построения алгоритмов: «разделяй и властвуй»,
динамическое программирование.
4. Линейные списки. Основные операции. Представление и реализация.
5. Стеки. Основные операции. Представление и реализация.
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. Алгоритм многофазного слияния. Алгоритм горизонтального распределения
серий.
7
8. Литература
Основная литература:
1. Деревнина А.Ю. Структуры данных и алгоритмы компьютерной обработки
данных: Учебное пособие. - Тюмень: Издательство ТюмГУ, 2006. 220 с.
2. Кудинов, Ю. И.. Основы современной информатики: учеб. пособие для студ.
вузов, обуч. по спец. "Прикладная информатика"/ Ю. И. Кудинов, Ф. Ф. Пащенко. Санкт-Петербург: Лань: Планета Музыки, 2009. - 256 с.
3. Тель, Ж.. Введение в распределенные алгоритмы/ Ж. Тель. - Москва: Изд-во
МЦНМО, 2009. - 616 с.
Дополнительная литература:
1. Вирт Н. Алгоритмы + структуры данных = программы. – М.:Мир, 1985.
2. Кормен Т., Лейзерсон Ч., Ривест Р. Алгоритмы: построение и анализ. – М.:
МЦНМО, 2000.
3. Хусаинов Б.С. Структуры и алгоритмы обработки данных. Примеры на языке
Си. – М.: Финансы и статистика, 2004.
4. Кнут Д. Искусство программирования для ЭВМ. ТЗ. Сортировка и поиск. – М:
Изд. дом Вильямс, 2000.
5. Седжвик Р. Фундаментальные алгоритмы на С++. – Спб.: ООО «Диасофт ЮП»,
2002.
8
Download