Верхняя граница vs нижняя граница для наихудшего времени выполнения алгоритма
Я изучаю анализ алгоритмов. Я понимаю концепцию худшем случае время выполнения алгоритма.
однако, каковы верхние и нижние границы наихудшего времени выполнения алгоритма?
Что может быть примером, где верхний предел в худшем случае время работы алгоритма отличается от нижняя граница в худшем случае время работы одного и того же алгоритма?
3 ответов
функции f(n)
, g(n)
это верхний предел (big O) если для "достаточно большой n",f(n)<=c*g(n)
, для постоянного c
. [g доминирует над f]
g (n) is нижняя граница (большой Омега) если для "достаточно большой n",f(n) >= c*g(n)
, для постоянного c
. [Ф доминирует г]
если g(n)
является как верхней границей, так и нижней границей f(n)
[с разными c], мы говорим, что g (n) является жесткой связью для f (n) [Big тета]
используйте пример для верхней границы вместо жесткой: иногда трудно найти плотную связь, например, для Фибоначчи рекурсивный. таким образом, мы легко находим верхнюю границу O(2^n). более подробная информация находится в ответах в этом в должности.
позвольте мне проиллюстрировать это на примере:
в худшем случае время работы для quicksort является Theta(n^2)
. Таким образом, допустимая нижняя граница будет Omega(n)
и верхняя граница будет O(n^3)
. Это говорит о том, что в худшем случае quicksort примет по крайней мере линейное время и максимум кубических времени.
Это не очень точное утверждение, но для более сложных алгоритмов такие утверждения-лучшее, что мы можем сделать.