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

Вид материалаПрограмма

Содержание


Перечень дисциплин, усвоение которых необходимо для изучения курса
Содержание курса
Тема 1. Алгоритмы и их свойства
Тема 2. Динамическое программирование.
Тема 3. Линейные однонаправленные списки. Операции над списками.
Тема 4. Линейные двунаправленные списки.
Тема 5. Бинарные деревья поиска.
Тема 6. Работа с графами.
Тема 7.Сложность алгоритмов.
Подобный материал:
УЧЕБНАЯ ПРОГРАММА ПО ДИСЦИПЛИНЕ

СТРУКТУРЫ И АЛГОРИТМЫ КОМПЬЮТЕРНОЙ ОБРАБОТКИ ДАННЫХ

Шарапова Л.В.


Для очной формы обучения ВСЕГО 96

лекции 30

семинары 24

Всего аудиторных занятий 54

самостоятельная работа 42


Требования ГОС к обязательному минимуму содержания основной

образовательной программы:

Нелинейные структуры данных: классификация; деревья: ориентированные, упорядоченные и бинарные; представление деревьев в памяти компьютера: последовательное и связанное размещение элементов; операции над деревьями; графы и их представление в компьютере; алгоритмы, оперирующие со структурами типа графа; задачи поиска; исчерпывающий поиск: перебор с возвратом, метод ветвей и границ, динамическое программирование; быстрый поиск: бинарный и последовательный поиски в массивах, хеширование; использование деревьев в задачах поиска: бинарные, случайные бинарные, оптимальные и сбалансированные деревья поиска; алгоритмы поиска на графах; задачи сортировки; внутренняя и внешняя сортировки; алгоритмы сортировки; анализ сложности и эффективности алгоритмов поиска и сортировки; файлы: организация и обработка, представление деревьями: B-деревья; теория сложности алгоритмов: NP-сложные и трудно решаемые задачи.


Целью изучения дисциплины является изучение основных принципов динамического программирования; изучение основных структур динамической памяти; изучения принципов поиска по матрицам, деревьям и графам; освоение понятия алгоритмической сложности.

Перечень дисциплин, усвоение которых необходимо для изучения курса: «Информатика», «Математическая логика», «Дискретная математика».

В результате изучения дисциплины каждый студент должен:
    • иметь представление о:
  • методах обработки данных языка С++;
  • принципах работы динамической памяти;
  • принципах организации структур данных для размещения в памяти компьютера,
  • разнообразии алгоритмов поиска и сортировки;
  • методах оценки сложности алгоритмов.
    • знать:
  • основные понятия и принципы динамического программирования;
  • типы данных, и их внутренне представление;
  • типы деревьев и методы поиска в деревьях;
  • структуры представления графов и операции поиска на графах;
  • способы представления файлов деревьями.
    • уметь:
  • разрабатывать структуры данных для размещения в памяти компьютера;
  • программировать сложные типы данных;
  • составлять алгоритмы поиска в различных структурах;
  • программировать простые и сложные алгоритмы;
  • проводить отладку программы с использованием анализа выходных данных;
  • оценивать сложность алгоритма

Основные виды занятий: лекции и практические занятия.

Основные виды текущего контроля занятий: коллоквиумы.

Основной вид рубежного контроля знаний: экзамен.


СОДЕРЖАНИЕ КУРСА

Введение.

Задачи и назначение курса. Формы представления информации: на уровне пользователя, в компьютере. Необходимость алгоритмов для программирования.

Тема 1. Алгоритмы и их свойства

Программа и алгоритм. Основные свойства алгоритма. Понятие данных. Способы представления алгоритма. Словесное описание алгоритма. Основные конструкции алгоритма. Графическое представление алгоритма. Понятие алгоритмического языка. Методы разработки алгоритмов: итерации, рекурсии, полный перебор, балансировка.

Тема 2. Динамическое программирование.

Организация массивов. Многомерные массивы. Операции над массивами. Динамические массивы. Быстрый поиск: бинарный и последовательный поиски в массивах, хеширование.

Тема 3. Линейные однонаправленные списки. Операции над списками.

Построение списка. Операции над списками. Кольцевые списки. Построение и вывод кольца. Построение других структур на базе однонаправленных списков в динамической памяти: очереди, стеки, деки. Проведение операций над элементами структур.

Тема 4. Линейные двунаправленные списки.

Формирование линейного двунаправленного списка. Способы организации поиска. Двунаправленные кольцевые списки. Деки на базе двунаправленных списков. Формирование дека и его просмотр. Проведение операций над элементами структур.

Тема 5. Бинарные деревья поиска.

Построение бинарного дерева поиска. Дерево отрезков. Способы обхода дерева. Изображение бинарного дерева. Поиск вершины в бинарном дереве. Операции над вершинами в деревьях. Идеально сбалансированные бинарные деревья. Балансированные по высоте деревья (АВЛ-деревья). Математический анализ АВЛ-деpевьев. Построение АВЛ-дерева. Деревья Фибоначчи. Алгоритмы балансировки.

Файлы: организация и обработка, представление двоичными деревьями.

Тема 6. Работа с графами.

Представления графов. Список ребер. Списки смежности. Реализация простейших операций над графами. Ортогональные списки смежности. Структуры Вирта. Модифицированные структуры Вирта. Обходы графов. Путь между фиксированными вершинами. Кратчайшие пути между всеми парами вершин. Вычисление длин кратчайших путей между вершинами. Контуры в ориентированных графах. Вычисление компонент связности, двусвязности. Остовы. Построение остова наименьшей стоимости. Построение алгоритмов с возвратом.

Алгоритмы раскраски графа. Задачи поиска; исчерпывающий поиск: перебор с возвратом, метод ветвей и границ.

Тема 7.Сложность алгоритмов.

Понятие о сложности алгоритма. Временная и емкостная оценки сложности. Верхние и средние оценки сложности алгоритма. Анализ сложности рекурсивных алгоритмов. Сложность операций с бинарными деревьями. Оптимизация алгоритмов.


Темы семинарских занятий
  • Организация массивов. Операции над массивами. Сортировки.
  • Однонаправленные списки. Операции над списками.
  • Очередь. Операции над элементами очереди.
  • Кольца. Операции над кольцами.
  • Стек. Работа со стеком. Дек. Работа с деком.
  • Двунаправленные списки. Работа с производными структурами: кольцами и деком.
  • Деревья. Построение дерева. Обходы деревьев.
  • Операции с деревьями. Поиск заданной вершины в дереве.
  • Построение идеально сбалансированного дерева. Деревья Фибоначчи.
  • Построение АВЛ-дерева.
  • Представление формул с помощью дерева. Вычисление формул.
  • Представление графов с помощью ортогональных списков смежности.
  • Представление ориентированного графа с помощью динамической структуры Вирта. Представление графа. Обходы графов.
  • Реализация программы отыскания множества вершин, принадлежащих контуру заданной длины.
  • Представление графа. Вычисление компонент связности, двусвязности.
  • Реализация программы нахождения стягивающего дерева связного графа (рекурсивный обход графа в глубину).
  • Реализация программы нахождения стягивающего дерева связного графа с использованием нерекурсивного обхода графа в ширину.
  • Реализация программы поиска гамильтонова пути в связном неориентированном графе.
  • Реализация программы нахождения всех клик в графе, заданном структурой Вирта.
  • Реализация программы последовательной раскраски вершин графа при помощи обхода графа в глубину.
  • Реализация программы последовательной раскраски графа при помощи обхода графа в ширину.
  • Реализация программы последовательной раскраски графа, представленного с помощью модифицированных списков смежности.


ЛИТЕРАТУРА

Основная
  1. В.Е. Алексеев, Графы и алгоритмы. Структуры данных. Модели вычислений. Гриф УМО РФ,- Интуит, 2009.
  2. Уайс Марк Аллен, Организация структур данных и решение задач на С++, -Эком, 2009.
  3. Д.Ш.Матрос. Теория алгоритмов. Гриф УМО МО РФ, - Бином.Лаборатория знаний, 2008.
  4. К.Касперски, Техника оптимизации программ. Эффективное использование памяти. БХВ, 2005.


Дополнительная
    1. Н.Б. Культин, C/C++ в задачах и примерах, 2-е издание,- БХВ, 2009.
    2. Б.С. Хусаинов Структуры и алгоритмы обработки данных. Примеры на языке С. -Финансы и статистика, 2004.
    3. Касьянов В.Н., Евстигнеев В.А. Графы в программировании: обработка, визуализация и применение. СПб.: БХВ-Петербург, 2003.
    4. Н.И. Савицкий, Технологии организации, хранения и обработки данных. Учебное пособие, - Инфра-М, 2001.
    5. Кнут Д.Э. Искусство программирования, тт.1-3. -Вильямс, 2000.