Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
AaSD.docx
Скачиваний:
1
Добавлен:
06.02.2024
Размер:
823.97 Кб
Скачать
  1. Временная сложность алгоритмов

Временная сложность алгоритма описывает количество времени, необходимого для его выполнения в зависимости от размера входных данных. Обычно выражается с использованием символов O (big O), Θ (theta) и Ω (omega), которые представляют различные виды оценок временной сложности.

Определение: Основной показатель сложности – это время, необходимое для решения задачи и объём требуемой памяти.

Определение: Размер входа - некоторое число, характеризующее объём данных.

Определение: Порядок роста сложности (или аксиоматическая сложность) описывает приблизительное поведение функции сложности алгоритма при большом размере входа.

Определение: Шаг алгоритма – совокупность последовательно-расположенных элементарных операций, время выполнения которых не зависит от размера входа, то есть ограничена сверху некоторой константой.

Виды оценок:

O (big O) – оценка для худшего случая. Она же обозначает верхнюю границу временной сложности алгоритма. Определяет класс функций, которые растут не быстрее, чем g(n) с точностью до константного множителя.

Θ (theta) – оценка для среднего случая. Она же представляет среднюю временную сложность алгоритма. Он указывает на то, что время выполнения алгоритма является асимптотически точным и ограничивается сверху и снизу некоторой константой. Например, если алгоритм имеет временную сложность Θ(n^2), это означает, что время выполнения алгоритма квадратично зависит от размера входных данных.

Ω (omega) – оценка для лучшего случая. Она же обозначает нижнюю границу временной сложности алгоритма. Определяет класс функций, которые растут не медленнее, чем функция g(n) с точностью до константного множителя.

Критерии оценки сложности алгоритмов:

1) Равномерный весовой критерий (РВК) предполагает, что каждый шаг алгоритма выполняется за одну единицу времени, а ячейка памяти за одну единицу объёма (с точностью до константы). 2) Логарифмический весовой критерий (ЛВК) учитывает размер операнда, который обрабатывается той или иной операцией и значения, хранимого в ячейке памяти.

Примеры сложностей:

1) Линейная: O(n) Поиск максимального элемента в неотсортированном массиве путем прохода по всем элементам и сравнения их значения с текущим максимумом.

2) Квадратичная: O(n2) Сортировка выбором (selection sort), которая на каждой итерации находит минимальный элемент и помещает его в начало массива.

3) Логарифмическая: O(log n) Бинарный поиск в отсортированном массиве, который делит массив пополам на каждой итерации.

4) Константная: O(1) Получение элемента массива по его индексу, так как доступ к элементам массива выполняется непосредственно по индексу.

Определение: Полином (многочлен) Pk(x) степени k есть выражение: Pk(x) = ck xk + ck−1 xk−1 + . . . + c1x + c0, где cj – постоянные коэффициенты, j = .

Определение: Алгоритм называется полиномиальным, если время его работы T(n) ограничено сверху некоторым полиномом: T(n) = O(Pk(n)) = O(nk).

Определение: Алгоритм называется экспоненциальным, если время его работы T(n) ограничено снизу показательной функцией: T(n) = Ω(an), где a > 1.