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

Это не очень точное утверждение, но для более сложных алгоритмов такие утверждения-лучшее, что мы можем сделать.


во-первых, давайте поговорим о делах. А case of вход на алгоритм связан с экземпляр на