Экспоненциальная сложность: различия между версиями

[отпатрулированная версия][отпатрулированная версия]
Содержимое удалено Содержимое добавлено
спекуляции и тавтология удалены, стилевые правки, оформление
Строка 1:
'''Экспоненциальная сложность''' или '''экспоненциальное время''' — в [[Теория сложности вычислений|теории сложности]] [[алгоритм]]ов, время решения задачи, ''m(n)'', которое ограниченоограниченое [[Экспонента|экспонентой]] от размерности задачи, ''n''. Другими словами, если размерность задачи возрастает [[Линейная функция|линейно]], время её решения возрастает экспоненциально.
 
== Определение ==
[[Математика|Математически]] говоря, существует ''k'' > 1, такое что ''m(n)'' = ''[[O-нотация|Θ(k<sup>n</sup>)]]'', и существует ''c'', такое что ''m(n)'' = ''[[O-нотация|O(c<sup>n</sup>)]]''.
 
{{main|Класс EXPTIME}}
 
Алгоритмы с экспоненциальной сложностью образуют [[класс EXPTIME]], в терминах [[O-нотация|O-нотации]] формально определяемый как:
: <math>\text{EXPTIME} = \bigcup_{k=1}^{\infty} O\left(2^{n^k}\right)</math>
 
== Сравнение с полиномиальной сложностью ==
 
Принято считать, что алгоритмы с '''[[полиномиальная сложность|полиномиальной сложностью]]''' являются «быстрыми», в то время как алгоритмы, сложность которых больше полиномиальной, — «медленными». С этой точки зрения алгоритмы с экспоненциальной сложностью являются медленными. Это полезное предположение, но не совсем точное. На самом деле действительное время работы алгоритма зависит от значения ''n'' (размерности задачи) и сопутствующих [[Константа|констант]] (см. [[O-нотация]]). Для заданного ''n'', в некоторых случаях полиномиальное время может превосходить экспоненциальное. Однако, для больши́х значений ''n'' время работы алгоритма с экспоненциальной сложностью существенно больше.
 
== Суб-экспоненциальная сложность ==
Есть алгоритмы, которые работают более, чем за полиномиальное время ('''«сверх-полиномиальное»'''), но менее, чем за экспоненциальное время ('''«суб-экспоненциальное»'''). Примером такой задачи является разложение [[Целое число|целого числа]] на [[Простое число|простые]] [[Множитель|множители]] ([[факторизация]]). Такие алгоритмы также относятся к «медленным».
 
ЕстьСуществует алгоритмы, которые работают более, чем за полиномиальное время ('''«сверх-полиномиальное»'''), но менее, чем за экспоненциальное время ('''«суб-экспоненциальное»'''). Примером такой задачи является разложение [[Целое число|целого числа]] на [[Простое число|простые]] [[Множитель|множители]] ([[факторизация]]). Такие алгоритмы также относятся к «медленным».
Многие люди часто ошибочно называют '''квадратичное время''' экспоненциальным. Квадратичное время — это частный случай полиномиального, где высшая степень полинома равна 2, например, ''n''². В случае с экспоненциальным временем, [[переменная]], напротив, помещается в [[Возведение в степень|степень]], например, 2<sup>''n''</sup>. Задачи, имеющие квадратичную или полиномиальную сложность достаточно «медлительны», но обычно всё ещё считаются решаемыми (хотя квадратично-сложные задачи часто работают слишком долго для [[Интерактивность|интерактивных программ]]). Задачи, имеющие экспоненциальную сложность, считаются неразрешимыми, за исключением случаев малых ''n'' (возможно, за исключением [[Квантовые вычисления|квантовых вычислений]]).
 
== См. также ==