Файл: Отчет по практической работе 1 Оценка сложности и определение эффективности алгоритма по дисциплине Структуры и алгоритмы обработки данных.docx
Добавлен: 11.12.2023
Просмотров: 482
Скачиваний: 35
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИФедеральное государственное бюджетное образовательное учреждениевысшего образования«МИРЭА – Российский технологический университет» РТУ МИРЭА
ОТЧЕТПО ПРАКТИЧЕСКОЙ РАБОТЕ №1Оценка сложности и определение эффективности алгоритмапо дисциплине«Структуры и алгоритмы обработки данных»
Москва 2023
1ЦЕЛЬ РАБОТЫ 4
2ХОД РАБОТЫ 5
2.1Задание 1 5
2.1.1Постановка задачи 5
2.1.2Алгоритм 1 5
2.1.3Алгоритм 2 12
2.1.4Выводы 18
2.2Задание 2 18
2.2.1Постановка задачи 18
2.2.2Модель решения поставленной задачи 19
2.2.3Выводы 27
3ВЫВОДЫ ПО РАБОТЕ 28
Определим функцию порядка роста для худшего случая:Таким образом Определим функцию порядка роста для лучшего случая:Таким образом В среднем случае функция роста , так как вложенный цикл выполнится хотя бы 1 раз (по определению среднего случая).
Рисунок 11 – Тест при 100 значенияхРисунок 12 – Тест худшего случая при 10 значенияхРисунок 13 – Тест худшего случая при 100 значенияхРисунок 14 – Тест лучшего случая при 10 значенияхРисунок 15 – Тест лучшего случая при 100 значенияхЗаметим, что в лучшем случае при увеличении размера вводных данных в 10 раз (с 10 до 100) суммарное количество операций меняется с 10 до 100, то есть время выполнения зависит от вводимых данных линейно, что совпадает с теоретической оценкой. В худшем случае суммарное количество операций меняется с 65 до 5150, то есть время выполнения зависит от вводимых данных квадратично, что совпадает с теоретической оценкой.
Определим функцию порядка роста для худшего случая:Таким образом Определим функцию порядка роста для лучшего случая:Таким образом В среднем случае функция роста , так как и худший, и лучший случаи имеют функцию роста .
| |
| Выполнил студент группы | 11 |
| | |
| Практическая работа выполнена | «__» февраля 2023 г. | Гошков А.А.. |
| | | (подпись студента) |
| «Зачтено» | «__» _________2023 г. | Ермаков С.Р. |
| | | (подпись руководителя) |
СОДЕРЖАНИЕ
1ЦЕЛЬ РАБОТЫ 4
2ХОД РАБОТЫ 5
2.1Задание 1 5
2.1.1Постановка задачи 5
2.1.2Алгоритм 1 5
2.1.3Алгоритм 2 12
2.1.4Выводы 18
2.2Задание 2 18
2.2.1Постановка задачи 18
2.2.2Модель решения поставленной задачи 19
2.2.3Выводы 27
3ВЫВОДЫ ПО РАБОТЕ 28
-
ЦЕЛЬ РАБОТЫ
-
сложности алгоритмов на теоретическом и практическом уровнях; -
эффективного алгоритма решения задачи из нескольких.
-
ХОД РАБОТЫ
-
Задание 1
-
Постановка задачи
-
-
-
Алгоритм 1
-
Модель решения поставленной задачи
-
Описание работы алгоритма
-
-
-
Инвариант цикла
-
Теоретическая вычислительная сложность алгоритма
| Номер оператора | Оператор | Время выполнения 1-го оператора | Кол-во выполнений в строке |
| 1 | int i = 0; | C1 | 1 |
| 2 | while (i < n) { | C2 | n + 1 |
| 3 | if (x[i] == key) { | C3 | n |
| 4 | for (int j = i; j < n - 1; j++) | C4 | n2 |
| 5 | x[j] = x[j + 1]; | C1 | n2 |
| 6 | n--; | C5 | n |
| 7 | } else i++ | C5 | n |
| | } | | |
Определим функцию порядка роста для худшего случая:Таким образом Определим функцию порядка роста для лучшего случая:Таким образом В среднем случае функция роста , так как вложенный цикл выполнится хотя бы 1 раз (по определению среднего случая).
-
Реализация алгоритма 1 и дополнительной логики на языке С++
-
Тестирование программы на 10 и 100 значениях
Рисунок 11 – Тест при 100 значенияхРисунок 12 – Тест худшего случая при 10 значенияхРисунок 13 – Тест худшего случая при 100 значенияхРисунок 14 – Тест лучшего случая при 10 значенияхРисунок 15 – Тест лучшего случая при 100 значенияхЗаметим, что в лучшем случае при увеличении размера вводных данных в 10 раз (с 10 до 100) суммарное количество операций меняется с 10 до 100, то есть время выполнения зависит от вводимых данных линейно, что совпадает с теоретической оценкой. В худшем случае суммарное количество операций меняется с 65 до 5150, то есть время выполнения зависит от вводимых данных квадратично, что совпадает с теоретической оценкой.
-
Алгоритм 2
-
Модель решения поставленной задачи
-
Описание работы алгоритма
-
-
-
Инвариант цикла
-
Теоретическая вычислительная сложность алгоритма
| Номер оператора | Оператор | Время выполнения 1-го оператора | Кол-во выполнений в строке |
| 1 | int j = 0; | C1 | 1 |
| 2 | for (int i = 0; i < n; i++){ | C2 | n + 1 |
| 3 | x[j] = x[i]; | C1 | n |
| 4 | if (x[i] != key) | C3 | n |
| 5 | j++; | C4 | n |
| 6 | } | | |
| 7 | n = j; | C1 | 1 |
| | } | | |
-
Реализация алгоритма 1 и дополнительной логики на языке С++