Сиаод мирэа 2 семестр. Отчёт_2. Отчет по практической работе 2 Оценка сложности и определение эффективности алгоритма по дисциплине Структуры и алгоритмы обработки данных
Скачать 0.58 Mb.
|
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ Федеральное государственное бюджетное образовательное учреждение высшего образования «МИРЭА – Российский технологический университет» РТУ МИРЭА
ОТЧЕТ ПО ПРАКТИЧЕСКОЙ РАБОТЕ №2 Оценка сложности и определение эффективности алгоритма по дисциплине «Структуры и алгоритмы обработки данных»
Москва 2023 Содержание Цель работыПриобретение практических навыков, связанных с: определением сложности алгоритмов эмпирическим способом; реализацией алгоритмов сортировки; нахождением эффективного алгоритма решения задачи из нескольких определением емкостной и временной сложностей алгоритма и их зависимости от объема входных данных. Ход работыЗадание 1Формулировка заданияОценить эффективность простого алгоритма сортировки на массиве, заполненном случайными числами (в среднем случае). Используемый алгоритм – Selection Sort. Описание математической моделиИдет проход по массиву с помощью цикла для i. В min записывается значение текущего индекса. С помощью внутреннего цикла происходит поиск минимума и перезапись min. После выполнения внутреннего цикла при неравенстве текущего индекса и min происходит перестановка элементов. Блок-схема алгоритмаРисунок 1 – блок-схема алгоритма сортировки Код программыРисунок 2 – Алгоритм сортировки Рисунок 3 – Функция вывода массива Рисунок 4 – Функция заполнения массива случайными числами Рисунок 8 – Функция main Рисунок 6 – Функция заполнения массива числами по убыванию Рисунок 5 – Функция ручного заполнения массива Рисунок 7 – Функция заполнения массива числами по возрастанию ТестированиеРисунок 10 – Тестирование при n = 100. Средний случай Рисунок 9 – Тестирование и отладка при n = 10. Рисунок 11 – Тестирование при n = 1000. Средний случай Рисунок 12 – Тестирование при n = 10 000. Средний случай Рисунок 13 – Тестирование при n = 100 000. Средний случай Рисунок 14 – Тестирование при n = 1 000 000. Средний случай Обработка результатовТаблица 1 – Selection Sort, средний случай
Оценка емкостной сложностиИспользуется 1 вспомогательная переменная, необходимая для перестановок. Емкостная сложность: Графики зависимости сложности от nГ рафик 1 Г рафик 2 Вывод по заданию 1На основании данных, полученных в ходе работы, можно сделать следующий вывод: алгоритм обладает квадратичной вычислительной сложностью, что является показателем низкой эффективности, а также имеет константную емкостную сложность, что для внутренней сортировки приемлемо. Задание 2Формулировка заданияОценить эффективность алгоритма простой сортировки в случай строгой упорядоченности по возрастанию и убыванию (условно лучший и худший случаи). Используемый алгоритм – Selection Sort. Вычислительная сложность алгоритма
Общая вычислительная сложность алгоритма: В лучшем случае (массив отсортирован в возрастающем порядке): В худшем случае (массив отсортирован в убывающем порядке): Т естированиеРисунок 16 – Тестирование при n = 100. Худший случай Рисунок 24 – Тестирование при n = 1 000 000. Худший случай Рисунок 22 – Тестирование при n = 100 000. Худший случай Рисунок 18 – Тестирование при n = 1000. Худший случай Рисунок 20 – Тестирование при n = 10 000. Худший случай Рисунок 19 – Тестирование при n = 10 000. Лучший случай Рисунок 21 – Тестирование при n = 100 000. Лучший случай Рисунок 15 – Тестирование при n = 100. Лучший случай Рисунок 17 – Тестирование при n = 1000. Лучший случай Рисунок 23 – Тестирование при n = 1 000 000. Лучший случай Обработка результатовЛучший случай: Таблица 2 – Selection Sort, лучший случай
Худший случай: Таблица 3 – Selection Sort, худший случай
График зависимости сложности от nГ рафик 3 Вывод по заданию 2Полученные данные подтверждают, что сложность алгоритма имеет квадратичный характер вне зависимости от исходного состояния массива. Результаты теоретического расчета и практического выполнения совпали. В худшем случае сложность определяется формулой (квадратичная сложность), а в лучшем случае (квадратичная сложность). Задание 3Формулировка заданияСравнить эффективность двух алгоритмов простых сортировок. Второй используемый алгоритм – Exchange Sort. Описание математической моделиОсуществляется проход по массиву от 1 элемента до n-ного, сравнивая текущий элемент со всеми последующими. Если какой-то из последующих элементов меньше i-того, то меняем их местами. Блок-схема алгоритмаРисунок 25 – блок-схема алгоритма сортировки Реализация алгоритмаРисунок 26 – Алгоритм сортировки ТестированиеРисунок 28 – Тестирование при n = 100. Лучший случай Рисунок 27 – Тестирование и отладка при n = 10. Рисунок 33 – Тестирование при n = 10 000. Худший случай Рисунок 30 – Тестирование при n = 1000. Лучший случай Рисунок 29 – Тестирование при n = 100. Худший случай Рисунок 31 – Тестирование при n = 1000. Худший случай Рисунок 32 – Тестирование при n = 10 000. Лучший случай Рисунок 34 – Тестирование при n = 100 000. Лучший случай Рисунок 35 – Тестирование при n = 100 000. Худший случай Рисунок 37 – Тестирование при n = 1 000 000. Худший случай Рисунок 36 – Тестирование при n = 1 000 000. Лучший случай Обработка результатовТаблица 4 – Exchange Sort, лучший случай
Таблица 5 – Exchange Sort, худший случай
Оценка емкостной сложностиИспользуется 1 вспомогательная переменная, необходимая для перестановок. Емкостная сложность: Графики зависимости сложности от nГ рафик 4 Г рафик 5 Вывод по заданию 3Полученные данные подтверждают, что оба алгоритма обладают квадратичной вычислительной сложностью, но на основе теоретического расчета можно установить, что функция роста второго алгоритма растет быстрее. Основываясь на графиках и таблицах, можно утверждать, что время выполнения зависит и от исходного состояния массива. Наибольшая разница заметна при худшем случае, в то время как сложности в лучшем и среднем случаях практически совпадают. Емкостная сложность у обоих алгоритмов – константная. ВыводВ ходе работы приобретены и отработаны практические навыки по: определению сложности алгоритмов сортировки на теоретическом и практическом уровнях; определению емкостной сложности алгоритмов сортировки; реализацией алгоритмов сортировки; определению зависимости (квадратичной/линейной) сложности алгоритма сортировки от объема входных данных; нахождению оптимального алгоритма сортировки с помощью данных, полученных в ходе теоретического расчета и практического выполнения. |