Худший случай сложности

Материал из testwiki
Перейти к навигации Перейти к поиску

В информатике (особенно в теории сложности вычислений), худший случай сложности (он обозначается Big-oh(n)) измеряет ресурсы (например, время выполнения, память), которые требуются алгоритму для обработки входных данных случайного размера (обычно обозначаемого Шаблон:Mvar в асимптотическом обозначении). Он обозначает верхнюю границу ресурсов, требуемых алгоритму.

В случае со временем выполнения, худший случай временной сложности алгоритма обозначает самое долгое время выполнения требуемое алгоритму для обработки любого размера входных данных Шаблон:Mvar, тем самым гарантируя, что алгоритм выполнится в обозначенный период времени. Порядок роста (например, линейный, логарифмический) худшего случая сложности обычно используется для сравнения эффективности двух алгоритмов.

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

Определение

Дана модель вычислений и алгоритм 𝖠, который останавливается на каждом входе s, соответствие t𝖠:{0,1} называется временной сложностью алгоритма 𝖠 если, для каждой входной строки s, 𝖠 останавливается точно после t𝖠(s) шагов.

Так как нас обычно интересует зависимость временной сложности алгоритма на входных данных различной длины, злоупотребляя терминологий, временной сложностью алгоритма иногда называют соответствие t𝖠:, определяемое максимальной сложностью

t𝖠(n):=maxs{0,1}nt𝖠(s)

входных данных s длиной или размером n.

Подобные определения могут быть даны пространственной сложности.

Способы формулировки

Очень часто, сложность t𝖠 алгоритма 𝖠 дана в асимптотическом Big-O обозначении, которое обозначает его рост в форме t𝖠=O(g(n)) с функцией сравнения использующей конкретные вещественные значения g(n) и обозначением:

|t𝖠(n)|Mg(n) для всех nn0.

Довольно часто, формулировка звучит следующим образом:

  • „Алгоритм 𝖠 имеет худший случай сложности O(g(n)).“

или еще короче:

  • „Алгоритм 𝖠 имеет сложность O(g(n)).“

Примеры

Рассмотрим выполнение алгоритма сортировки вставками на n числах с использованием машины с произвольным доступом к памяти. В лучшем случае для алгоритма, когда числа уже отсортированы, требуется O(n) шагов для выполнения задачи. Однако, в худшем случае для алгоритма, когда числа отсортированы в обратном порядке, требуется O(n2) шагов для их сортировки; таким образом худший случай временной сложности алгоритма сортировки вставками O(n2).

См. также

Ссылки