Временная сложность алгоритма

В информатике временна́я сложность алгоритма определяется как функция от длины строки, представляющей входные данные, равная времени работы алгоритма на данном входе. Временная сложность алгоритма обычно выражается с использованием нотации «O» большое, которая учитывает только слагаемое самого высокого порядка, а также не учитывает константные множители, то есть, коэффициенты. Если сложность выражена таким способом, говорят об асимптотическом описании временной сложности, то есть, при стремлении размера входа к бесконечности. Например, если существует число

n

0

{\displaystyle n_{0}}

, такое что время работы алгоритма для всех входов длины

n

>

n

0

{\displaystyle n>n_{0}}

не превосходит

5

n

3

+

3

n

{\displaystyle 5n^{3}+3n}

, то временную сложность данного алгоритма можно асимптотически оценить как

O

(

n

3

)

{\displaystyle O(n^{3})}

.

Временная сложность обычно оценивается путём подсчёта числа элементарных операций, осуществляемых алгоритмом. Время исполнения одной такой операции при этом берётся константой, то есть, асимптотически оценивается как

O

(

1

)

{\displaystyle O(1)}

. В таких обозначениях полное время исполнения и число элементарных операций, выполненных алгоритмом, отличаются максимум на постоянный множитель, который не учитывается в O-нотации. Так как время работы алгоритма может отличаться на входах одного и того же размера, обычно используется время работы в худшем случае, которая обозначается как

T

(

n

)

{\displaystyle T(n)}

и определяется как наибольшее по всем входным данным длины

n

{\displaystyle n}

время работы алгоритма. Реже, и это обычно оговаривается специально, вычисляется средняя сложность, то есть, математическое ожидание времени работы по всем возможным входам. Время работы алгоритма может быть классифицировано в зависимости от того, какая функция находится под О-нотацией. Например, алгоритм с

T

(

n

)

O

(

n

)

{\displaystyle T(n)\in O(n)}

называют алгоритмом с линейным временем работы, а алгоритм с

T

(

n

)

O

(

n

α

)

{\displaystyle T(n)\in O(n^{\alpha })}

для некоторого

α

>

1

{\displaystyle \alpha >1}

называют полиномиальным.

Источник: Википедия

а б в г д е ё ж з и й к л м н о п р с т у ф х ц ч ш щ э ю я