Основные понятия
Оценка сложности алгоритма позволяет определить его эффективность при увеличении объема входных данных.
Сложность алгоритма
Сложностью алгоритма называют зависимость времени выполнения или используемой памяти от размера входных данных. Обычно сложность оценивается асимптотически, то есть при стремлении количества входных данных к бесконечности.
Виды сложности
Существуют два основных вида оценки сложности:
Асимптотическая верхняя граница сложности: обозначается как O(f(n)), где f(n) – функция, описывающая максимальное время работы алгоритма.
Асимптотическая нижняя граница сложности: обозначается как Ω(g(n)).
Методы оценки сложности
Наиболее часто используются следующие методы:
Метод большого О (O)
Метод малого омеги (Ω)
Метод малой омеги (ω)
Метод большой омеги (Θ)
Примеры функций сложности
Линейная сложность
Алгоритм имеет линейную сложность, если время выполнения пропорционально количеству элементов входного множества. Например, алгоритм последовательного поиска:
Сложность:
Логарифмическая сложность
Если количество операций уменьшается логарифмически относительно размера входных данных, говорят о логарифмической сложности:
Сложность:
Квадратичная сложность
При квадратичной сложности число операций растет пропорционально квадрату числа элементов входного множества:
Сложность:
Пример анализа алгоритма
Рассмотрим пример простого алгоритма нахождения максимального элемента массива:
``python def find_max(arr): max_value = arr[0] for i in range(1, len(arr)): if arr[i] > max_value: max_value = arr[i] return max_value ``
Время выполнения этого алгоритма зависит от длины массива и составляет , так как каждая операция выполняется ровно один раз для каждого элемента массива.
Пропуски для самопроверки