Структуры и алгоритмы компьютерной обработки данных

advertisement
РОССИЙСКАЯ ФЕДЕРАЦИЯ
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ
Государственное образовательное учреждение
высшего профессионального образования
ТЮМЕНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
Институт математики, естественных наук и информационных технологий
Кафедра программного обеспечения
ВОРОБЬЕВА М.С., КИПРИНА Е.А.
СТРУКТУРЫ И АЛГОРИТМЫ КОМПЬЮТЕРНОЙ ОБРАБОТКИ ДАННЫХ
Учебно-методический комплекс.
Рабочая программа для студентов очной формы обучения,
специальности 090303.65 "Информационная безопасность
автоматизированных систем"
специализация «Безопасность открытых информационных систем»
Тюменский государственный университет
2011
Воробьева М.С., Киприна Е.А. Структуры и алгоритмы
компьютерной обработки данных. Учебно-методический комплекс.
Рабочая программа для студентов очной формы обучения, специальности
090303.65 "Информационная безопасность автоматизированных систем"
специализация «Безопасность открытых информационных систем». Тюмень,
2011, 15 стр.
Рабочая программа составлена в соответствии с требованиями ФГОС
ВПО с учетом рекомендаций и ПрООП ВПО по специальности и
специализации.
Рабочая программа дисциплины опубликована на сайте ТюмГУ:
Структуры и алгоритмы компьютерной обработки данных [электронный
ресурс] / Режим доступа: http://www.umk3.utmn.ru., свободный.
Рекомендовано к изданию кафедрой программного обеспечения.
Утверждено проректором по учебной работе Тюменского государственного
университета.
ОТВЕТСТВЕННЫЙ РЕДАКТОР: Захарова И.Г., д.п.н., профессор.
© Тюменский государственный университет, 2011.
© Воробьева М.С., Киприна Е.А., 2011.
2
1. Пояснительная записка:
1.1. Цели и задачи дисциплины
Целью преподавания дисциплины «Структуры и алгоритмы компьютерной
обработки данных» является изучение ключевых алгоритмов, которыми должен владеть
каждый программист, исследование оценок эффективности, проведение сравнительного
анализа алгоритмов, применение на практике решения на ЭВМ алгоритмических задач с
использованием современных языков программирования высокого уровня.
Курс
ориентирован
на
становление
математика-программиста,
должен
способствовать повышению культуры мышления. Курс предназначен для овладения
компьютерными методами обработки информации путем развития профессиональных
навыков разработки, выбора и преобразования алгоритмов, что является важной
составляющей эффективной реализации программного продукта.
1.2. Место дисциплины в структуре ООП
Дисциплина «Структуры и алгоритмы компьютерной обработки данных» входит в
Математический и естественнонаучный цикл дисциплин (дисциплины по выбору)
Федерального государственного образовательного стандарта высшего профессионального
образования (ФГОС ВПО) по специальности 090303.65 "Информационная безопасность
автоматизированных систем".
Студент должен знать:
 основные этапы компьютерного решения задач;
 понятие алгоритма и структуры управления; традиционные структуры данных;
 основные требования методологии структурного программирования, как
технологической основы разработки качественных программных компонентов;
 понятие статических и динамических данных;
 примеры базовых структур данных;
 подходы процедурного, модульного, объектно-ориентированного программирования,
реализацию вызова процедур в языках с блочной структурой, рекурсию;
 математический аппарат, необходимый для оценивания времени выполнения
алгоритма.
Студент должен уметь:
 применять требования методологии структурного программирования при
проектировании информационных моделей;
 разрабатывать и записывать на языке программирования высокого уровня алгоритмы
решения классических задач программирования;
 выбирать оптимальную структуру для представления данных.
Студент должен владеть:
 навыками практического программирования конкретных задач в определенной
языковой среде;
 применять средства структурного, модульного и объектно-ориентированного
программирования для решения задач.
Для изучения и освоения дисциплины нужны первоначальные знания из следующих курсов:
3





математический анализ;
дискретная математика;
информатика;
языки программирования;
дискретная оптимизация;
Данная дисциплина является предшествующей для следующих дисциплин:
 Базы данных
 Информационные технологии
 Планирование вычислительных экспериментов и обработка экспериментальных данных
 Распределенные вычисления
 Технологии и методы программирования
 Языки программирования
1.3. Компетенции выпускника ООП, формируемые в результате освоения
данной ООП ВПО
В результате изучения дисциплины «Структуры и алгоритмы компьютерной
обработки данных» профессиональный цикл дисциплин (базовая часть) по специальности
090303.65 "Информационная безопасность автоматизированных систем" с квалификацией
“специалист” в соответствии с целями основной образовательной программы и задачами
профессиональной деятельности, указанными в ФГОС ВПО, выпускник должен обладать
следующими компетенциями:






Общекультурными компетенциями:
способностью понимать социальную значимость своей будущей профессии, цели и
смысл государственной службы, обладать высокой мотивацией к выполнению
профессиональной деятельности в области обеспечения информационной
безопасности и защиты интересов личности, общества и государства, готовностью и
способностью к активной состязательной деятельности в условиях информационного
противоборства (ОК-5);
способностью самостоятельно применять методы и средства познания, обучения и
самоконтроля для приобретения новых знаний и умений, в том числе в новых
областях, непосредственно не связанных со сферой деятельности, развития
социальных и профессиональных компетенций, изменения вида своей
профессиональной деятельности (ОК-10);
Профессиональными компетенциями:
способностью применять математический аппарат, в том числе с использованием
вычислительной техники, для решения профессиональных задач (ПК-2);
способностью понимать сущность и значение информации в развитии современного
общества, применять достижения современных информационных технологий для
поиска и обработки больших объемов информации по профилю деятельности в
глобальных компьютерных системах, сетях, в библиотечных фондах и в иных
источниках информации (ПК-3);
способностью применять методологию научных исследований в профессиональной
деятельности, в том числе в работе над междисциплинарными и инновационными
проектами (ПК-4);
способностью использовать нормативные правовые документы в своей
профессиональной деятельности (ПК-5);
4
2.
Структура и трудоемкость дисциплины
Семестр 4. Форма промежуточной аттестации зачет. Общая трудоемкость дисциплины
составляет 3 зачетных единицы - 108 часов.
3.
Тематический план
Таблица 1.
Тематический план
Тема
1
2
3
4
5
6
7
8
9
Алгоритмы: построение и
анализ. Временная сложность
алгоритмов. Вычисление
рекуррентных отношений.
Методы построения
алгоритмов.
Структуры данных.
Концепция АТД. Линейные
структуры данных.
Структуры данных.
Концепция АТД. Нелинейные
структуры данных.
Всего
1-2
4
4
4
12
2
0-10
3-4
4
4
4
12
2
0-8
5
4
4
4
12
12
12
12
36
4
0-25
6-8
6
4
4
14
2
0-15
9-11
4
4
4
12
10
8
8
26
2
0-30
1214
6
6
4
16
4
0-15
15-17
6
6
4
16
4
0-20
18
4
6
4
14
4
0-10
16
18
12
46
12
0-45
Лекции
Лаборато
рные
занятия
Самостоя
тельная
работа
№
недели семестра
Виды учебной работы
и самостоятельная
работа, в час.
Итого
часов
по
теме
Из них в
интерактивной
форме
Итого
количество
баллов
Модуль 1
1.
2.
3.
1.
2.
1.
2.
3.
Модуль 2
Алгоритмы поиска. Поиск в
линейных таблицах.
Поиск в нелинейных
таблицах. Поиск в таблицах с
вычисляемыми входами.
Всего
Модуль 3
Алгоритмы сортировки.
Простые алгоритмы
внутренней сортировки.
Улучшенные алгоритмы
внутренней сортировки.
Алгоритмы сортировки за
линейное время. Сортировка
частично упорядоченного
множества.
Алгоритмы внешней
сортировки.
Всего
5
0-7
0-15
Итого (часов, баллов):
38
38
32
108
Итого в интерактивной форме
2
6
10
18
0-100
18
Таблица 2.
Информац
ионные
системы и
технологии
электронные
практикум
Учебные задачи
Технические формы
контроля
программы
компьютерного
тестирования
контрольная
работа
Письменные работы
лабораторная
работа
№ темы
Итого количество баллов
Виды и формы оценочных средств в период текущего контроля
Модуль 1
Т1
Т2
Т3
Всего
0-3
0-3
0-2
0-8
0-3
0
0-5
0-8
0
0
0-3
0-3
0-1
0-2
0
0-3
0-3
0
0
0-3
0-10
0-5
0-10
0-25
Т1
Т2
Всего
0-5
0-5
0-10
0-4
0-4
0-8
Модуль 2
0-2
0-2
0-4
0-1
0-1
0-2
0-3
0-3
0-6
0-15
0-15
0-30
0-5
0-5
0-5
0-15
0-33
Модуль 3
0-2
0-4
0-4
0-2
0-2
0-4
0-12
0-6
0-28
0-13
0-1
0-1
0-1
0-3
0-8
0-3
0-3
0-3
0-9
0-18
0-15
0-15
0-15
0-45
0 – 100
Т1
Т2
Т3
Всего
Итого
6
Таблица 3.
Планирование самостоятельной работы студентов
№
Модули и темы
Модуль 1
1.1
Т1. Алгоритмы:
построение и
анализ. Временная
сложность
алгоритмов.
Вычисление
рекуррентных
отношений.
Методы
построения
алгоритмов.
1.2
Т2. Структуры
данных.
Концепция АТД.
Линейные
структуры
данных.
1.3
Т3. Структуры
данных.
Концепция АТД.
Нелинейные
структуры
данных.
Виды СРС
обязательные
Конспектирование материала на
лекционных занятиях
Выполнение заданий лабораторных
работ. Выполнение тестовых и
контрольных работ
Конспектирование материала на
лекционных занятиях
Выполнение заданий лабораторных работ
Выполнение тестовых работ
Конспектирование материала на
лекционных занятиях
Выполнение заданий лабораторных работ
Выполнение тестовых и контрольных
работ
дополнитель
ные
Неделя
семестр
а
Объе
м
часов
Колво
балло
в
1-2
6
0-10
3-4
4
0-8
5
4
0-7
Работа с
учебной
литературо
й
Написание
программы
Написание
программы
Всего по модулю 1:
Модуль 2
2.1
Т1. Алгоритмы
поиска. Поиск в
линейных
таблицах.
2.2
Т2. Поиск в
нелинейных
таблицах. Поиск в
таблицах с
вычисляемыми
входами.
14
0-25
Работа с
учебной
литературо
й.
Написание
программы
6-8
6
0-15
Конспектирование материала на
лекционных занятиях
Выполнение заданий лабораторных работ
Выполнение тестовых и контрольных
работ
Работа с
учебной
литературо
й.
Написание
программы
9-11
6
0-15
Конспектирование материала на
лекционных занятиях
Выполнение заданий лабораторных работ
Выполнение тестовых и контрольных
работ
Всего по модулю 2:
12
7
0-30
Модуль 3
3.1
Т1. Алгоритмы
3.2
3.3
сортировки.
Простые
алгоритмы
внутренней
сортировки.
Улучшенные
алгоритмы
внутренней
сортировки.
Т2. Алгоритмы
сортировки за
линейное время.
Сортировка
частично
упорядоченного
множества.
Т3. Алгоритмы
внешней
сортировки.
12-14
10
0-15
Конспектирование материала на
лекционных занятиях
Выполнение заданий лабораторных работ
Выполнение тестовых и контрольных
работ
Работа с
учебной
литературо
й.
Написание
программы
Работа с
учебной
литературо
й.
Написание
программы
15-17
8
0-20
Конспектирование материала на
лекционных занятиях
Выполнение заданий лабораторных работ
Выполнение тестовых и контрольных
работ
Конспектирование материала на
лекционных занятиях
Выполнение заданий лабораторных работ
Выполнение тестовых и контрольных
работ
Работа с
учебной
литературо
й.
18
6
0-10
22
54
0-45
0-100
Всего по модулю 3:
ИТОГО:
4.
Разделы дисциплины и междисциплинарные связи с обеспечиваемыми
(последующими) дисциплинами
№
п/п
1.
2.
3
Наименование
обеспечиваемых
(последующих) дисциплин
Системы управления
базами данных
Темы дисциплины необходимые для изучения
обеспечиваемых (последующих) дисциплин
1.1
1.2
1.3
2.1
2.2
3.1
3.2
3.3
+
+
+
Методы
программирования
Информационные
технологии
4
Планирование
вычислительных
экспериментов
5
Языки программирования
+
+
+
8
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
5.
Содержание дисциплины
Модуль 1.
ТЕМА 1.1. Алгоритмы: построение и анализ. Временная сложность алгоритмов.
Вычисление рекуррентных отношений. Методы построения алгоритмов.
Алгоритмы, определение и основные свойства. Временная сложность алгоритмов: время
выполнения в худшем случае, в среднем, в лучшем случае. Асимптотическая нотация: верхние
оценки временной сложности, точные оценки, нижние оценки. Классификация алгоритмов по
временной сложности.
Вычисление рекуррентных отношений в рекурсивных алгоритмах. Способы вычислений
рекуррентных отношений: метод подстановки, метод итераций, основная теорема
Основные методы построения рекурсивных алгоритмов. Метод «разделяй и властвуй».
Динамическое программирование (нисходящий и восходящий методы).
ТЕМА 1.2. Структуры данных. Концепция АТД. Линейные структуры данных.
Концепция АТД (абстрактных типов данных). Представление АТД в виде структуры данных.
Классификация операций и структур.
Линейные структуры данных. АТД линейный список. Основные операции, представление и
реализации. АТД стек, очередь, очередь с приоритетами, дек. Основные операции, представление
и реализации. Применение структур данных. Метод исключения рекурсии с помощью стека.
ТЕМА 1.3. Структуры данных. Концепция АТД. Нелинейные структуры данных.
Нелинейные структуры данных. Деревья, основные определения. Ориентированные деревья,
упорядоченные деревья, бинарные деревья, m-арные деревья. Основные математические свойства
бинарных деревьев. Преобразование упорядоченных деревьев в бинарные. АТД деревья.
Основные операции, представление в памяти. Обходы деревьев. Применение деревьев. Деревья
Хаффмана.
Модуль 2.
ТЕМА 2.1. Алгоритмы поиска. Поиск в линейных таблицах.
Постановка задачи, основные понятия. АТД таблица. Поиск в линейных таблицах. Алгоритмы
последовательного, бинарного, интерполяционного поиска. Анализ эффективности алгоритмов.
ТЕМА 2.2. Поиск в нелинейных таблицах. Поиск в таблицах с вычисляемыми входами.
Поиск в нелинейных таблицах. Бинарные деревья поиска (BST). Основные операции. Анализ
эффективности алгоритмов.
Сбалансированные (АВЛ) деревья. Критерий сбалансированности. Деревья Фибоначчи. Виды
балансировки. Основные операции. Анализ эффективности алгоритмов.
Б-деревья. Внешний поиск. Основные операции. Анализ эффективности алгоритмов.
Разновидности Б-деревьев. Применение структур данных.
Красно-черные деревья. Рандомизированные деревья поиска. Оптимальные деревья поиска.
Основные операции. Анализ эффективности алгоритмов.
Поиск в таблицах с вычисляемыми входами. Хеширование. Основные методы вычисления хешфункций: метод деления, метод умножения, комбинированный метод. Разрешение коллизий.
Хеширование с цепочками. Хеширование открытой адресацией. Основные виды повторного
хеширования: линейное исследование, квадратичное исследование, двойное хеширование.
Основные операции. Анализ эффективности алгоритмов.
9
Модуль 3.
ТЕМА 3.1. Алгоритмы сортировки. Простые алгоритмы внутренней сортировки.
Улучшенные алгоритмы внутренней сортировки.
Постановка задачи, основные определения. Понятие внутренней и внешней сортировки,
устойчивость сортировки, основные характеристики эффективности. Простые алгоритмы
внутренней сортировки. Анализ алгоритмов. Сортировка Шелла. Понятие h-сортировки,
зависимость эффективности сортировки от выбора последовательности h.
Улучшенные алгоритмы внутренней сортировки. Быстрая сортировка. Модификации быстрой
сортировки. Вычисление порядковых статистик. Обменная поразрядная сортировка.
Пирамидальная сортировка. Определение пирамиды. Способы построения пирамиды, нисходящий
и восходящий алгоритмы. Реализации АТД очередь с приоритетами. Анализ алгоритмов.
ТЕМА 3.2. Алгоритмы сортировки за линейное время. Сортировка частично
упорядоченного множества.
Сортировка слиянием. Понятие двухпутевого, k-путевого слияния. Нисходящая сортировка
слиянием. Вопросы устойчивости. Восходящая сортировка слиянием. Сортировка естественным
слиянием. Анализ алгоритмов. Реализация алгоритмов на списках.
Алгоритмы сортировки за линейное время. Сортировка подсчетом распределения. Поразрядная
(цифровая) сортировка. Анализ алгоритмов. Реализация алгоритмов на списках
Сортировка частично упорядоченного множества. Определение, постановка задачи, алгоритм
топологической сортировки, структура данных. Анализ алгоритма.
ТЕМА 3.3. Алгоритмы внешней сортировки.
Алгоритмы внешней сортировки. Постановка задачи. Сбалансированное многопутевое
слияние. Выбор с замещением. Многофазное слияние. Алгоритм горизонтального распределения
серий. Анализ алгоритмов.
6.
Планы семинарских занятий.
Не планируется.
7.
Темы лабораторных работ (Лабораторный практикум)
Задания лабораторного практикума выполняются
программирования (например: Delphi, C#, C++).
с
использованием
сред
ТЕМА 1.1. Алгоритмы: построение и анализ.
Временная сложность алгоритмов. Асимптотическая нотация: верхние оценки временной
сложности, точные оценки, нижние оценки. Вычисление рекуррентных отношений в рекурсивных
алгоритмах. Способы вычислений рекуррентных отношений. Основные методы построения
рекурсивных алгоритмов.
ТЕМА 1.2. Структуры данных АТД.
Концепция АТД (абстрактных типов данных). Представление АТД в виде структуры данных.
Линейные структуры данных. АТД линейный список. Основные операции, представление и
реализации. АТД стек, очередь, очередь с приоритетами, дек. Основные операции, представление
и реализации на языке программирования высокого уровня.
ТЕМА 1.3. Нелинейные структуры данных.
Деревья, основные определения. Ориентированные деревья, упорядоченные деревья, бинарные
деревья, m-арные деревья. Основные математические свойства бинарных деревьев.
10
Преобразование упорядоченных деревьев в бинарные. АТД деревья. Основные операции,
представление в памяти. Обходы деревьев. Деревья Хаффмана.
ТЕМА 2.1. Алгоритмы поиска. Поиск в линейных таблицах.
Постановка задачи, основные понятия. АТД таблица. Поиск в линейных таблицах. Алгоритмы
последовательного, бинарного, интерполяционного поиска. Анализ эффективности алгоритмов.
ТЕМА 2.2. Поиск в нелинейных таблицах. Поиск в таблицах с вычисляемыми входами.
Бинарные деревья поиска (BST). Основные операции и реализации на языке программирования
высокого
уровня.
Анализ
эффективности
алгоритмов.
Сбалансированные (АВЛ) деревья. Критерий сбалансированности. Деревья Фибоначчи. Виды
балансировки. Основные операции и реализации на языке программирования высокого уровня.
Анализ
эффективности
алгоритмов.
Б-деревья. Внешний поиск. Основные операции и реализации на языке программирования
высокого уровня. Анализ эффективности алгоритмов. Разновидности Б-деревьев. Красно-черные
деревья.
Оптимальные
деревья
поиска.
Поиск в таблицах с вычисляемыми входами. Хеширование. Основные методы вычисления хешфункций: метод деления, метод умножения, комбинированный метод. Разрешение коллизий.
Реализация методов хеширования на языке программирования высокого уровня.
ТЕМА 3.1. Алгоритмы сортировки. Простые алгоритмы внутренней сортировки.
Улучшенные алгоритмы внутренней сортировки.
Понятие внутренней и внешней сортировки, устойчивость сортировки, основные характеристики
эффективности. Простые алгоритмы внутренней сортировки. Реализация простых методов на
языке
программирования
высокого
уровня.
Анализ
алгоритмов.
Сортировка Шелла. Понятие h-сортировки, зависимость эффективности сортировки от выбора
последовательности h. Реализация сортировки на языке программирования высокого уровня.
ТЕМА 3.2. Алгоритмы сортировки за линейное время. Сортировка частично
упорядоченного множества.
Сортировка слиянием. Понятие двухпутевого, k-путевого слияния. Нисходящая сортировка
слиянием. Реализация сортировки на языке программирования высокого уровня. Вопросы
устойчивости. Восходящая сортировка слиянием. Реализация сортировки на языке
программирования высокого уровня. Сортировка естественным слиянием. Реализация сортировки
на
языке
программирования
высокого
уровня.
Сортировка частично упорядоченного множества. Определение, постановка задачи, алгоритм
топологической сортировки, структура данных. Реализация сортировки на языке
программирования высокого уровня.
ТЕМА 3.3. Алгоритмы внешней сортировки.
Постановка задачи. Сбалансированное многопутевое слияние. Выбор с замещением. Реализация
сортировки
на
языке
программирования
высокого
уровня.
Многофазное слияние. Реализация сортировки на языке программирования высокого уровня.
8.
Примерная тематика курсовых работ
Не планируется.
11
9.
Учебно - методическое обеспечение самостоятельной работы студентов.
Оценочные средства для текущего контроля успеваемости, промежуточной
аттестации по итогам освоения дисциплины (модуля).
Контроль качества подготовки осуществляется путем проверки теоретических
знаний и практических навыков с использованием
a) Текущей аттестации:
проверка промежуточных контрольных работ, выполнение учебных
задач, прием лабораторных работ,
b) Промежуточной аттестации:
тестирование (письменное или компьютерное) по разделам дисциплины.
Экзамен в конце 4 семестра (к зачету допускаются студенты после сдачи
всех лабораторных работ, решения всех задач контрольных работ,
выполнения самостоятельной работы).
Текущий и промежуточный контроль освоения и усвоения материала дисциплины
осуществляется в рамках рейтинговой (100-бальной) системы оценок.
Пример тестового задания по теме «Алгоритмы: построение и анализ»:
Какое утверждение является истинным?
а) (n + 5)3 = (n3)
b) log n  ( n )
3
2
c) 5n  n log n  O(n log n)
n
n
d) 2  (3 )
Пример лабораторного задания
Используя рекурсивные и нерекурсивные алгоритмы, реализовать следующие задачи
для дерева поиска, описанного ниже. Одинаковые элементы хранятся в одном узле дерева,
для их счетчика предусмотрено поле Count.
Type Base = integer;
Tree = ^ Node;
Node = record
elem: Base;
left, right: Tree
Count: integer
end;
a). По текстовому файлу f, содержащему элементы типа Base (среди которых могут
быть и одинаковые), построить дерево поиска T.
b). Добавить к дереву поиска T новый элемент Е, если его не было в T.
c). Проверить, входит ли элемент Е в дерево поиска T.
d). Удалить из дерева поиска T элемент Е, если он есть в T.
e). Записать в текстовый файл f элементы дерева поиска T в порядке их возрастания,
используя обход дерева соответствующим методом. Одинаковые элементы записывать в
файл в количестве Count.
12
Пример контрольной работы
1) Если узел А имеет трёх братьев, а узел В является родителем узла А, то чему
равна а). степень узла В; б). высота дерева
2) Сколько структурно различных бинарных деревьев можно построить из трёх
узлов? Нарисуйте эти структуры.
3) Сколько путей длины 3 существует на дереве, показанном на рисунке?
Перечислите их.
4) Сколько листьев в дереве, показанном на рисунке?
5) Для дерева, представленного на рисунке, постройте расширенное дерево и
найдите длину внешнего и внутреннего пути расширенного дерева.
А
B
C
D
E
F
R
T
H
M
P
O
L
N
6) Перечислите узлы бинарного дерева, представленного
префиксном, в инфиксном, в постфиксном, в поуровневом порядках.
7) Преобразуйте выражение ((a + b) + c * (d + e) + f) * (g + h)
на
рисунке,
в
а) в префиксную форму;
б)
в постфиксную форму.
8) В дополнение к основным способам обхода бинарного дерева можно
предложить ещё один альтернативный порядок обхода: а) посетить корень; б) перейти в
правое поддерево; в) перейти в левое поддерево. Далее это правило применяется
рекурсивно для всех непустых поддеревьев. Имеет ли такой порядок какую-либо простую
связь с тремя другими порядками (префиксным, инфиксным, постфиксным)?
9) Пусть символы а, б, в, г, д, е имеют вероятности появления соответственно 0,17;
0,19; 0,02; 0,25; 0,11; 0,26. Найдите оптимальный код Хаффмана и нарисуйте
соответствующее ему дерево. Какова средняя длина кода (сколько бит в среднем
приходится на 1 символ)? Чему равен объём сообщения длиной 300 символов,
закодированного с помощью кода Хаффмана?
10) Предположим, что в двоичном дереве поиска хранятся числа от 1 до 1000 и мы
хотим найти число 363. Какая из следующих последовательностей не может быть
последовательностью просматриваемых при этом ключей?
а) 925, 202, 911, 240, 912, 245, 363
b) 2, 252, 401, 398, 330, 344, 397, 363
с) 924, 220, 911, 244, 898, 258, 362, 363
d) 2, 399, 387, 219, 266, 382, 381, 278, 363
Вопросы к зачету
1. Алгоритмы, основные свойства. Временная сложность алгоритмов. Асимптотическая
нотация.
2. Способы вычисления рекуррентных отношений.
3. Основные методы построения алгоритмов: «разделяй и властвуй», динамическое
программирование.
4. Линейные списки. Основные операции. Представление и реализация.
13
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. Алгоритм многофазного слияния. Алгоритм горизонтального распределения серий.
10.
Образовательные технологии
Сочетание традиционных образовательных технологий в форме лекций, компьютерных
лабораторных работ и проведение контрольных мероприятий (контрольных работ,
промежуточного тестирования, курсовой работы, экзамена).
аудиторные занятия:
лекционные и компьютерные лабораторные занятия; на лабораторных занятиях
контроль осуществляется при сдаче лабораторного задания в виде программы
(на одном из используемых языков программирования) и пояснительной
записки к задаче. В течение семестра студенты выполняют задачи, указанные
преподавателем к каждому занятию.
активные и интерактивные формы
компьютерное моделирование и анализ результатов при выполнении
лабораторных работ
внеаудиторные занятия:
14
выполнение дополнительных заданий разного типа и уровня сложности при
выполнении лабораторных работ, подготовка к аудиторным занятиям, изучение
отдельных тем и вопросов учебной дисциплины в соответствии с учебнотематическим планом, составлении конспектов. Подготовка индивидуальных
заданий: выполнение самостоятельных и контрольных работ, подготовка ко
всем видам контрольных испытаний: текущему контролю успеваемости и
промежуточной аттестации; индивидуальные консультации.
11.
Учебно-методическое и информационное обеспечение дисциплины
11.1
Основная литература:
1.
Кнут Д. Искусство программирования: [учеб. пособие] : пер. с англ./ Д. Э. Кнут ; ред.
Ю. В. Козаченко. - 3-е изд.. – М.: Вильямс/ Т. 1: Основные алгоритмы. - 2005.
2.
Кнут Д. Искусство программирования: [учеб. пособие] : пер. с англ./ Д. Э. Кнут ; ред.
Ю. В. Козаченко. - 3-е изд.. – М.: Вильямс. Т. 3: Сортировка и поиск. - 2005.
3.
Кормен Т. Алгоритмы: построение и анализ. / Т. Кормен, Ч. Лейзерсон Ч., Р. Ривест :
пер.с англ., под ред. А.Шеня. – М.: МЦНМО: БИНОМ. Лаборатория знаний, 2004. – 2-е изд.
стереотип. – 960 с.
4.
Ахо А. и др. Структуры данных и алгоритмы. – М.: Изд.дом Вильямс, 2004.
5.
Седжвик Р. Фундаментальные алгоритмы на С++. – Спб.: ООО «Диасофт ЮП», 2002.
6.
Деревнина А.Ю. Структуры данных и алгоритмы компьютерной обработки данных:
Учебное пособие. - Тюмень: Издательство ТюмГУ, 2006. 220 с.
11.2. Дополнительная литература:
1.
Вирт Н. Алгоритмы + структуры данных = программы. – М.: Мир, 1985.
2.
Деревнина А.Ю., Киприна Е.А. Структуры и алгоритмы компьютерной обработки
данных. Рабочая программа и методические рекомендации. – Тюмень: Изд-во ТюмГУ, 2006.
48 с.
3.
Кубенский А.А. Структуры и алгоритмы обработки данных: объектноориентированный подход и реализация на С++. / А.А. Кубенский – СПб.: БХВ-Петербург,
2004. – 464 с.
4.
Программирование алгоритмов обработки данных / О.Ф. Ускова, Н.В. Огаркова, И.Е.
Воронина, М.В. Бакланов, В.М. Мельников. – СПб: БХВ - Петербург, 2003. – 192 с.
5.
Хусаинов Б.С. Структуры и алгоритмы обработки данных. Примеры на языке Си. –
М.: Финансы и статистика, 2004.
11.3. Программное обеспечение и Интернет – ресурсы:
1. Воробьева М.С. Структуры и алгоритмы компьютерной обработки данных (2008),
режим доступа: http://study.kib.ru/ по паролю.
2. Киприна Е.А.. Структуры и алгоритмы (2010), режим доступа: http://study.kib.ru/
по паролю.
12.
Технические средства и материально-техническое обеспечение дисциплины
(модуля)
При освоении дисциплины для проведения лекционных занятий нужны учебные
аудитории, оснащённые мультимедийным оборудованием, для выполнения лабораторных
работ необходимы классы персональных компьютеров с набором базового программного
обеспечения разработчика - системы программирования на языках Borland Delphi, С/С++.
15
Download