Асимптотический анализ

В этой статье вы узнаете, что такое асимптотические нотации, познакомитесь с О-нотацией, нотациями Тета и Омега.  

Эффективность алгоритма зависит от следующих параметров: время выполнения, объем памяти и других ресурсов, необходимых для его выполнения. Эффективность измеряется с помощью асимптотических нотаций. 

Производительность алгоритма может отличаться при работе с различными типами данных. С увеличением количества входных данных она также изменяется.

Асимптотический анализ — метод изучения производительности алгоритмов при различных объемах и типах входных данных.

Асимптотические нотации

Асимптотические нотации — это графики функций. Они служат для описания времени работы алгоритма, когда размер входных данных стремится к определенному значению или пределу. 

Возьмем, к примеру, сортировку пузырьком. Когда массив, который мы вводим, уже отсортирован, время выполнения алгоритма линейно — это лучший случай.

Но если массив отсортирован в обратном порядке, то время выполнения будет максимальным (квадратичное). То есть, это худший случай. 

Если входной массив не находится в этих двух состояниях, то время выполнения алгоритма среднее. Длительность выполнения алгоритма описывается асимптотическими нотациями. 

В основном используются три нотации:

  • большое «О»,
  • омега-нотация,
  • тета-нотация.  

Большое «О»

Большое «О» — это верхняя граница скорости выполнения алгоритма. Эта нотация показывает скорость алгоритма в худшем случае.

O(g(n)) = { f(n): существуют такие константы c и n0,
            что 0 ≤ f(n) ≤ cg(n) для любых n ≥ n0 }

Это выражение — описание функции f(n). Она принадлежит множеству O(g(n)), если существует положительная константа c, при которой f(n) лежит в промежутке от 0 до cg(n) при достаточно больших n

Для любого n функция времени выполнения алгоритма не пересечет функцию O(g(n)).

Так как эта нотация дает нам представления о худшей скорости выполнения алгоритма, то ее анализ обязателен — нам всегда интересна эта характеристика. 

Омега нотация (Ω-нотация)

Омега нотация — противоположность большому «О». Она показывает нижнюю границу скорости выполнения алгоритма. Она описывает лучший случай выполнения алгоритма.

Ω(g(n)) = { f(n): существуют такие положительные константы c и n0, 
           что 0 ≤ cg(n) ≤ f(n) для всех n ≥ n0 }

Это выражение — описание функции f(n). Она лежит в множестве Ω(g(n)), если существует такая положительная константа c, при которой f(n) лежит выше cg(n) при достаточно больших n

Для любого n минимальное время выполнения алгоритма задается как Ω(g(n)).

Тета-нотация (Θ-нотация)

Тета-нотация объединяет в себе сразу две функции — верхнюю и нижнюю. Эта нотация отражает и верхнюю, и нижнюю границу скорости выполнения алгоритма. Именно поэтому она используется для анализа средней скорости выполнения алгоритма.

Для функции g(n) Θ(g(n)) задается следующим образом:

Θ(g(n)) = { f(n): существуют такие положительные константы c1, c2 и n0,
            что 0 ≤ c1g(n) ≤ f(n) ≤ c2g(n) для любых n ≥ n0 }

Это выражение — описание функции f(n). Она принадлежит множеству Θ(g(n)), если существуют положительные константы с1 и с2 такие, что f(n) лежит между c1g(n) и c2g(n) при достаточно больших n.

codechick

СodeСhick.io - простой и эффективный способ изучения программирования.

2025 ©