Наихудшая сложность
В информатике (в частности, в теории сложности вычислений ) сложность наихудшего случая измеряет ресурсы (например, время работы, память ), которые требуются алгоритму с учетом входных данных произвольного размера (обычно обозначаемых как n в асимптотических обозначениях ). Он дает верхнюю границу ресурсов, необходимых алгоритму.
В случае времени выполнения наихудшая временная сложность указывает на самое продолжительное время работы алгоритма при любом вводе размера n и, таким образом, гарантирует, что алгоритм завершится в указанный период времени. Порядок роста (например, линейный, логарифмический ) наихудшей сложности обычно используется для сравнения эффективности двух алгоритмов.
Сложность алгоритма в наихудшем случае следует противопоставлять его сложности в среднем случае , которая является средней мерой количества ресурсов, которые алгоритм использует для случайных входных данных.
Определение
[ редактировать ]Учитывая модель вычислений и алгоритм который останавливается на каждом входе , отображение называется временной сложностью если для каждой входной строки , останавливается ровно после шаги.
Поскольку нас обычно интересует зависимость временной сложности от различной длины входных данных, то, злоупотребляя терминологией, временную сложность иногда называют отображением , определяемый максимальной сложностью
входов с длиной или размером .
Аналогичные определения можно дать для пространственной сложности , случайной сложности и т. д.
Способы говорить
[ редактировать ]Очень часто сложность алгоритма задается в асимптотической нотации Big-O , что дает скорость ее роста в виде с некоторой вещественной функцией сравнения и смысл:
- Существует положительное действительное число и натуральное число такой, что
Довольно часто встречается следующая формулировка:
- "Алгоритм имеет наихудшую сложность .“
или даже только:
- "Алгоритм имеет сложность .“
Примеры
[ редактировать ]Рассмотрите возможность вставкой сортировки числа на машине с произвольным доступом . Наилучший случай для алгоритма — это когда числа уже отсортированы, что требует шаги для выполнения задачи. Однако в худшем случае для алгоритма входные данные — это когда числа подвергаются обратной сортировке, и для этого требуется шаги по их сортировке; поэтому наихудшая временная сложность сортировки вставкой равна .
См. также
[ редактировать ]Ссылки
[ редактировать ]- Томас Х. Кормен , Чарльз Э. Лейзерсон , Рональд Л. Ривест и Клиффорд Стейн . Введение в алгоритмы , второе издание. MIT Press и McGraw-Hill, 2001. ISBN 0-262-03293-7 . Глава 2.2: Алгоритмы анализа, стр. 25-27.
- Одед Гольдрейх. Вычислительная сложность: концептуальная перспектива. Издательство Кембриджского университета, 2008. ISBN 0-521-88473-X , стр.32.