Верхняя граница 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 примет по крайней мере линейное время и максимум кубических времени.
Это не очень точное утверждение, но для более сложных алгоритмов такие утверждения-лучшее, что мы можем сделать.