Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
aralab28_3.doc
Скачиваний:
1
Добавлен:
22.11.2018
Размер:
695.81 Кб
Скачать

Образовательный проект

Д.В. Груздев, В.А. Таланов

Алгоритмы и структуры данных

(лабораторные работы)

Нижний Новгород

2011

Содержание

1.Общие указания 5

2. Основные операции для работы с d-кучами 9

3. Лабораторные работы 11

3.1. Нахождение кратчайших путей в графе 11

Постановка задачи 11

Структура данных для представления графа 12

Алгоритм Дейкстры, реализованный на основе d-кучи 13

Алгоритм Дейкстры, использующий метки 14

Алгоритм Форда–Беллмана 15

Задания для лабораторной работы № 1 16

3.2. Нахождение минимального остова графа 17

Постановка задачи 17

Стратегии решения задачи 17

Алгоритм Борувки 18

Алгоритм Краскала 19

Алгоритм Прима 20

Round Robin алгоритм 21

Задания для лабораторной работы № 2 21

3.3. Создание и использование словаря 22

Постановка задачи 22

Решение задачи создания и использования словаря 22

Тривиальный алгоритм 23

Алгоритм с использованием АВЛ-дерева 23

Задания для лабораторной работы № 3 23

3.4. Поиск фрагмента в тексте 24

Постановка задачи 24

Наивный алгоритм поиска фрагмента в тексте 25

Алгоритм Кнута-Морриса-Пратта 25

Задания для лабораторной работы № 4 26

3.5. Сортировка 27

Постановка задачи 27

Сортировка с помощью d-кучи 27

Быстрая сортировка 27

Задания для лабораторной работы № 5 28

3.6. Построение выпуклой оболочки n точек на плоскости 29

Постановка задачи 29

Построение выпуклой оболочки с помощью сортировки 29

Задания для лабораторной работы № 6 31

3.7. Поиск пары пересекающихся отрезков 32

Постановка задачи 32

Наивный алгоритм поиска пересечения 32

Эффективный алгоритм поиска пересечения 32

Задания для лабораторной работы № 7 33

4. Приложение: генерация графов для экспериментов 34

Литература 35

  1. Общие указания

Предмет "Лабораторный практикум по АРА" предполагает выполнение ряда вариантов лабораторных работ.

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

Заданный студенту вариант лабораторной работы считаются выполненными им после представления и утверждения самостоятельно им написанных двух программ и отчёта. (Самостоятельность означает, что после изучения соответствующего материала каждый символ в исходном коде своей программы и каждый символ в своём отчёте студент придумывает и пишет (или набирает) сам, совершенно необходимо понимая при этом абсолютно всё, что содержится в его отчёте и исходном коде его программ.)

Студент на основе троекратного внимательнейшего изучения общих указаний и задания для соответствующих вариантов лабораторной работы, а также на основе внимательнейшего изучения всего кода своих программ и всего своего отчёта должен самостоятельно заблаговременно найти все неточности в программах или отчёте и также самостоятельно заблаговременно все неточности исправить. Причём так поступать необходимо каждый раз, когда кем-либо обнаруживается хотя бы одна неточность в программах или отчёте данного студента.

Первая программа должна читать из файла входную информацию и записывать результаты работы каждого исследуемого алгоритма, а также время его работы в соответствующий данному алгоритму новый файл с именем, начинающимся с “output”. Таким образом, выходная информация для первого алгоритма должна быть записана в первый файл, а выходная информация для второго алгоритма должна быть записана во второй файл. Вторая программа предназначена для проведения экспериментов и должна соответствовать разделу 2 задания для соответствующих вариантов лабораторной работы. Для каждой программы в электронном виде должны быть представлены: все исходные файлы, имя основного из которых начинается с “prog”, выполняемый exe-файл с именем, начинающимся с “prog”, и инструкция по работе программы, содержащаяся в файле, имя которого начинается с “instruction”. Указанные выполняемые exe-файлы требуется получить таким образом, при котором они не нуждались бы для своей полноценной работы в каких-либо не входящих в них библиотеках. К первой программе также должен быть приложен файл с соответствующей входной информацией, имеющий начинающееся с “input” имя и размер не более ста байт.

Отчёт должен быть представлен как в электронном (в файле с начинающемся с “отчёт” именем), так и в печатном виде и содержать следующие разделы:

  • описание алгоритмов,

  • обоснование теоретических оценок временной сложности алгоритмов,

  • описание реализующих алгоритмы программ,

  • проведенные эксперименты,

  • сравнение алгоритмов,

  • выводы.

В разделе "Описание алгоритмов" следует поставить задачу и описать все исследуемые решающие её алгоритмы.

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

В разделе "Проведенные эксперименты" следует отобразить результаты всех экспериментов, указанных в разделе 3 задания для соответствующих вариантов лабораторной работы, с помощью графиков. В каждом эксперименте варьируется один параметр, обозначим его через K, в некоторых пределах K0<K<K1, при этом для каждого K фиксируется время t(K) работы алгоритма. На рисунке, соответствующем этому эксперименту, должны быть приведены графики функций t(k) для всех исследуемых алгоритмов. Графики должны быть нарисованы так, чтобы им непосредственно предшествовали параметры эксперимента, были указаны названия осей и их единицы деления (в частности, единица деления вертикальной оси должна соответствовать 1 секунде), было написано, какой график какому алгоритму соответствует.

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

В разделе "Выводы" следует сделать на основе практических данных, для получения которых приветствуется проведение дополнительных экспериментов, заключение о предпочтительности использования того или иного в максимально более общих случаях и выяснить, соответствует ли сделанное заключение теоретическим оценкам временной сложности алгоритмов.

Соответствующие самостоятельно написанные студентом две программы и отчёт считаются представленными, если данный студент представил в печатном виде отчёт и в электронном виде каталог (с именем “(Фамилия)_(ИО)_(N)_(a)”, где “(фамилия)” означает фамилию данного студента, “(ИО)” есть инициалы имени и отчества данного студента, “(N)” есть номер соответствующей лабораторной работы и “(a)” есть номер соответствующего ее варианта), содержащий:

файл “отчёт*.*” с отчётом,

подкаталог “prog1_source” со всеми исходными файлами для первой программы,

подкаталог “prog1_exe” с выполняемым exe-файлом для первой программы, с файлом инструкции “instruction*.*” и с файлом примера “input*.*”,

подкаталог “prog2_source” со всеми исходными файлами для второй программы,

подкаталог “prog2_exe” с выполняемым exe-файлом для второй программы и с файлом инструкции “instruction*.*” и с файлом примера “input*.*”.

Соответствующие две программы и отчёт утверждаются после их представления и приведения к надлежащему виду.

Задание по предмету "Лабораторный практикум по АРА" состоит из 3-х частей.

1-ая часть (обязательная) заключается в получении и выполнении студентом одного из вариантов 2-200 лабораторной работы № 5 (номер полученного таким образом варианта в данном разделе “Общие указания” обозначается через k).

Все соответствующие программы студентом должны быть представлены на занятии 8-ой недели (24.10.2011 – 30.10.2011) (1-ый этап). Если программы студентом не представлены на занятии 8-ой недели (24.10.2011 – 30.10.2011), то:

— данный студент в день этого занятия обязан сказать своим родителям следующее: “Моя текущая успеваемость делает невозможным получение положительной оценки по курсу “Анализа и разработки алгоритмов””,

— задание 1-ой части для данного студента дополняется (k+10)-ым вариантом лабораторной работы № 5.

Соответствующий отчёт студентом для каждого из заданных ему вариантов лабораторной работы № 5 должен быть представлен на занятии 12-ой недели (21.11.2011 – 27.11.2011) (2-ой этап). Если отчёт для какого-либо из заданных вариантов лабораторной работы № 5 студентом не представлен на занятии 12-ой недели (21.11.2011 – 27.11.2011), то:

— данный студент в день этого занятия обязан сказать своим родителям следующее: “Моя текущая успеваемость делает невозможным получение положительной оценки по курсу “Анализа и разработки алгоритмов””,

— задание 1-ой части для данного студента дополняется (k+20)-ым вариантом лабораторной работы № 5.

2-ая часть (обязательная) заключается в получении и выполнении k-го варианта лабораторной работы № 6.

Все соответствующие заданным вариантам лабораторной работы № 6 программы студентом должны быть представлены на занятии 14-ой недели (5.12.2011 – 11.12.2011) (3-ий этап). Если программы не представлены на занятии 14-ой недели (5.12.2011 – 11.12.2011), то:

— данный студент в день этого занятия обязан сказать своим родителям следующее: “Моя текущая успеваемость делает невозможным получение положительной оценки по курсу “Анализа и разработки алгоритмов””,

— задание 2-ой части для данного студента дополняется (k+10)-ым вариантом лабораторной работы № 6.

Соответствующий отчёт студентом для каждого из заданных ему вариантов лабораторной работы № 6 должен быть представлен на занятии занятии 16-ой недели (19.12.2011 – 25.12.2011) (4-ый этап). Если отчёт не представлен на занятии 16-ой недели (19.12.2011 – 25.12.2011), то:

— данный студент в день этого занятия обязан сказать своим родителям следующее: “Моя текущая успеваемость делает невозможным получение положительной оценки по курсу “Анализа и разработки алгоритмов””,

— задание 2-ой части для данного студента дополняется (k+20)-ым вариантом лабораторной работы № 6.

3-ая часть (необязательная) заключается в выборе и выполнении какого-либо варианта какой-либо лабораторной работы с номером 1,2,3,4,7. Все соответствующие программы должны быть представлены на занятии 14-ой недели (5.12.2011 – 11.12.2011) (5-ый этап). Соответствующий отчёт должен быть представлен на занятии 16-ой недели (19.12.2011 – 25.12.2011) (6-ой этап).

Студенты, выполнившие 1-ую и 2-ую части задания по данному предмету с соблюдением сроков для первых четырёх этапов, тем самым выполнили основное задание.

Студенты, выполнившие 1-ую, 2-ую и 3-ю части задания по данному предмету с соблюдением сроков для всех шести этапов, получают положительную оценку на зачёте или экзамене.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]