Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

AlgStr / Библиотека / Разные источники / Алгоритмы и СД - Лабораторный практикум

.doc
Скачиваний:
51
Добавлен:
23.03.2015
Размер:
166.4 Кб
Скачать

6

Лабораторный практикум по курсу «Алгоритмы и структуры данных»

Лабораторная работа №1

Реализация элементарных структур данных

Необходимо реализовать структуру данных в соответствии со своим вариантом.

Требования к реализации:

  1. Для построения класса структуры данных запрещается использовании готовые структуры данных в выбранном для реализации языке программирования (языки Object Pascal и Delphi – классы TCollection, TList, TStack и др.; язык С++ – шаблонные классы STL; язык Java 2 – ArrayList, Map, Stack, Queue, Deq; язык C# – ArrayList, Stak, Queue, Deq).

  2. Для реализации элемента структуры и самой структуры использовать классы с функциональностью, требуемой определением структуры данных.

  3. Для размещения данных использовать механизм динамической памяти.

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

Вариант 1.

Элементом структуры данных является комплексное число.

  1. Реализовать вектор.

  2. Реализовать стек.

  3. Реализовать очередь.

  4. Реализовать односвязный список.

Вариант 2.

Элементом структуры данных является строка.

  1. Реализовать вектор.

  2. Реализовать стек.

  3. Реализовать очередь.

  4. Реализовать кольцевой связный список.

Вариант 3.

Элементом структуры данных является вещественное число.

  1. Реализовать вектор.

  2. Реализовать стек.

  3. Реализовать дек.

  4. Реализовать развёрнутый связанный список.

Вариант 4.

Элементом структуры данных является точка в пространстве R3.

  1. Реализовать стек.

  2. Реализовать очередь.

  3. Реализовать дек.

  4. Реализовать двухсвязный список.

Вариант 5.

Элементом структуры данных является строка.

  1. Реализовать вектор.

  2. Реализовать очередь.

  3. Реализовать дек.

  4. Реализовать кольцевой связный список.

Вариант 6.

Элементом структуры данных является целое число.

  1. Реализовать вектор.

  2. Реализовать стек.

  3. Реализовать дек.

  4. Реализовать развёрнутый связанный список.

Вариант 7.

Элементом структуры данных является точка в пространстве R3.

  1. Реализовать стек.

  2. Реализовать очередь.

  3. Реализовать дек.

  4. Реализовать односвязный список.

Вариант 8.

Элементом структуры данных является комплексное число.

  1. Реализовать вектор.

  2. Реализовать стек.

  3. Реализовать очередь.

  4. Реализовать двухсвязный список.

Вариант 9.

Элементом структуры данных является строка.

  1. Реализовать вектор.

  2. Реализовать стек.

  3. Реализовать дек.

  4. Реализовать односвязный список.

Вариант 10.

Элементом структуры данных является точка в пространстве R3.

  1. Реализовать вектор.

  2. Реализовать очередь.

  3. Реализовать дек.

  4. Реализовать кольцевой список.

Вариант 11.

Элементом структуры данных является комплексное число.

  1. Реализовать вектор.

  2. Реализовать очередь.

  3. Реализовать дек.

  4. Реализовать кольцевой список.

Вариант 12.

Элементом структуры данных является целое число.

  1. Реализовать вектор.

  2. Реализовать стек.

  3. Реализовать дек.

  4. Реализовать кольцевой список.

Вариант 13.

Элементом структуры данных является строка.

  1. Реализовать вектор.

  2. Реализовать стек.

  3. Реализовать очередь.

  4. Реализовать двухсвязный список.

Вариант 14.

Элементом структуры данных является вещественное число.

  1. Реализовать стек.

  2. Реализовать очередь.

  3. Реализовать дек.

  4. Реализовать односвязный список.

Вариант 15.

Элементом структуры данных является вектор в пространстве R2.

  1. Реализовать вектор.

  2. Реализовать очередь.

  3. Реализовать дек.

  4. Реализовать кольцевой список.

Лабораторная работа №2

Реализация алгоритма сортировки

В соответствии со своим вариантом реализовать алгоритм сортировки в целочисленном массиве.

  1. Сортировка с помощью прямого включения.

  2. Сортировка с помощью двоичного включения.

  3. Сортировка выбором.

  4. Сортировка методом «пузырька».

  5. Шейкерная сортировка.

  6. Сортировка слиянием.

  7. Сортировка с помощью разделения (быстрая сортировка).

  8. Быстрая сортировка с выбором первого элемента в качестве опорного.

  9. Быстрая сортировка со случайным выбором опорного элемента.

  10. Быстрая сортировка с выбором опорного элемента, как элемента наиболее близкого к среднему арифметическому максимального и минимального элемента.

  11. Сортировка с помощью прямого включения.

  12. Сортировка с помощью двоичного включения.

  13. Сортировка выбором.

  14. Сортировка методом «пузырька».

  15. Сортировка слиянием.

Требования к реализации. Для реализации алгоритма сортировки использовать консольное приложение, использующее ввод с клавиатуры и вывод на консоль.

Лабораторная работа №3

Реализация машины Тьюринга

В соответствии со своим вариантом определить машину Тьюринга, которая выполняет поставленную задачу.

  1. Обнуляет первую и последнюю ячейки последовательности единиц.

  2. Умножает число в унарной системе на 2.

  3. Данное число в унарной системе делит на 2 (на цело т.е. если на входе например "111" то на выходе "1").

  4. Суммирует произвольное количество чисел разделенных 0.

  5. Бесконечно выводит последовательность "110100"

  6. Инвертирует последовательность.

  7. Копирует заданное число.

  8. Уменьшает заданное число на 1 и копирует его

  9. Сравнивает 2 числа, если они ровны, то завершает работу, если нет, то работает бесконечно.

  10. Поверяет четное число или нет, если четное, то завершает работу иначе работает бесконечно.

  11. Выполняет операцию исключающего или (XOR) над двумя последовательностями 0 и 1.

  12. Сдвигает число на 2 ячейки вправо.

  13. Сдвигает число на 2 ячейки влево.

  14. Вычитает от большего числа меньшее.

  15. Для числа x представленного в двоичной находит -x.

Требования к реализации. Для выполнения лабораторной работы использовать прилагаемый программный эмулятор машины Тьюринга.

Лабораторная работа №4

Анализ алгоритмов

Части 1 и 2 защищаются индивидуально (на листе с устным объяснением), часть 3 – парами. Часть 3 принимается, только если части 1 и 2 защищены студентами.

Часть 1. Асимптотический анализ функций

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

Таблица заданий в соответствии с вариантом пары и номером в паре

Вариант

Номера задач

1.1

1,2,3,4

1.2

5,6,7,8

2.1

9,10,11,12

2.2

13,14,15,16

3.1

17,18,19,20

3.2

1,2,3,4

4.1

5,6,7,8

4.2

9,10,11,12

5.1

13,14,15,16

5.2

17,18,19,20

6.1

1,2,3,4

6.2

5,6,7,8

7.1

9,10,11,12

7.2

13,14,15,16

8.1

17,18,19,20

8.2

1,2,3,4

9.1

5,6,7,8

9.2

9,10,11,12

10.1

13,14,15,16

10.2

17,18,19,20

11.1

1,2,3,4

11.2

5,6,7,8

12.1

9,10,11,12

12.2

13,14,15,16

13.1

17,18,19,20

13.2

1,2,3,4

14.1

5,6,7,8

14.2

9,10,11,12

15.1

13,14,15,16

15.2

17,18,19,20

1

2

3

4

5

6

7

8 если , то

9

10 если , то

11

12

13 если , то

14 если , то

15 если и, то

16 если , то

17 если , то

18 если и, то

19 и

20

Часть 2. Решение рекуррентных уравнений

Каждый должен решить минимум 4 примера на выбор, но в паре они не должны совпадать.

В каждом задании предполагается, что выполняется за при n<10.

1

2

3

4 (сделать замену )

5

6

7

8

9

10

Часть 3

Решить любые 2-е из предложенных задач.

Разработать рекурсивный алгоритм решения задачи и сделать оценку его трудоёмкости с помощью рекуррентного уравнения.

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

  2. Бинарный поиск в отсортированном массиве.

  3. Сортировка слиянием для связного списка.

  4. Возведение матрицы фиксированного размера в целую степень.

  5. Вычисление n-го члена последовательности Фибоначчи: 0,1,1,2,3… индексация с нуля.