Вычислительная сложность
- 1 year ago
- 0
- 0
Экспоненциальная сложность — в теории сложности алгоритмов , сложность задачи, ограниченная экспонентой от полинома от размерности задачи, то есть ограничена функцией , где — некоторый многочлен, а — размер задачи. В этом случае говорят, что сложность задачи растёт экспоненциально . Часто под сложностью подразумевают время выполнения алгоритма. В этом случае говорят, что алгоритм принадлежит к классу EXPTIME . Однако сложность может относиться и к памяти или другим ресурсам, нужным для работы алгоритма.
Различие между полиномиальными и экспоненциальными алгоритмами восходит к фон Нейману .
Задачи с экспоненциальной сложностью времени работы образуют класс EXPTIME , в формально определяемый как:
где — множество задач , которые могут быть решены алгоритмами, время работы которых ограничено сверху функцией .
Принято считать, что алгоритмы с полиномиальной сложностью являются «быстрыми», в то время как алгоритмы, сложность которых больше полиномиальной, — «медленными». С этой точки зрения алгоритмы с экспоненциальной сложностью являются медленными. Однако, это предположение не совсем точное. Дело в том, что время работы алгоритма зависит от значения n (размерности задачи) и сопутствующих констант скрытых в O-нотации . В некоторых случаях для малых значений n полиномиальное время может превосходить экспоненциальное. Однако, для больши́х значений n время работы алгоритма с экспоненциальной сложностью существенно больше.
Существуют алгоритмы, которые работают более, чем за полиномиальное время ( «сверх-полиномиальное» ), но менее, чем за экспоненциальное время ( «суб-экспоненциальное» ). Примером такой задачи является разложение целого числа на простые множители ( факторизация ). Такие алгоритмы также относятся к «медленным».