В чем разница между нижней границей и жесткой границей?

С ссылкой на этот ответ, что такое Theta (жесткая привязка)?

Omega - это нижняя граница, совершенно понятная, минимальное время, которое может потребоваться алгоритму. И мы знаем, что Big-O для верхней границы означает максимальное время, которое может потребоваться алгоритму. Но я понятия не имею о Тете.

Ответы

Ответ 1

Big O - верхняя граница, а Omega - нижняя граница. Тета требует как Big O, так и Omega, поэтому ее называют жесткой границей (она должна быть как верхней, так и нижней границей).

Например, алгоритм, принимающий Omega(n log n), занимает не менее n log n времени, но не имеет верхнего предела. Алгоритм, принимающий Theta(n log n), гораздо предпочтительнее, поскольку он принимает не менее n log n (Omega n log n) и не более n log n (Big O n log n).

Ответ 2

& Theta; -нотация (тета-обозначение) называется узко связанной, потому что она более точная, чем O-нотация и & Omega; -нотация (омега-нотация).

Если бы я был ленив, я мог бы сказать, что двоичный поиск в отсортированном массиве равен O (n 2), O (n 3) и O (2 n), и я был бы технически корректен в каждом случае. Это потому, что O-нотация определяет только верхнюю границу, а бинарный поиск ограничен с высокой стороны всеми этими функциями, только не очень близко. Эти ленивые оценки были бы бесполезны.

& Theta; -notation решает эту проблему, комбинируя O-нотацию и & Omega -notation. Если я скажу, что двоичный поиск - & Theta; (log n), это дает вам более точную информацию. Он говорит вам, что алгоритм ограничен с обеих сторон данной функцией, поэтому он никогда не будет значительно быстрее или медленнее, чем указано.

Ответ 3

Если у вас есть что-то, что O (f (n)), это означает, что есть k, g (n) такие, что f (n) ≤ kg (n).

Если у вас есть то, что Ω (f (n)), это означает, что существуют k, g (n) такие, что f (n) ≥ kg (n).

А если у вас есть что-то с O (f (n)) и Ω (f (n)), то это Θ (f (n).

Статья в Википедии приличная, хотя и немного плотная.

Ответ 4

Асимптотическая верхняя граница означает, что данный алгоритм выполняется в течение максимального времени, в зависимости от количества входов.

В качестве примера возьмем алгоритм сортировки. Если все элементы массива находятся в порядке убывания, то для их сортировки потребуется время O(n), отображающее сложность верхней границы. Если массив уже отсортирован, значение будет O(1).

Как правило, O-notation используется для сложности верхней границы.


Asymptotically tight bound (c 1g(n) ≤ f(n) ≤ c 2g(n)) shows the average bound complexity for a function, having a value between bound limits (upper bound and lower bound), where c 1 and c 2 are constants.

Ответ 5

Фразы минимального времени и максимального времени здесь немного вводят в заблуждение. Когда мы говорим о больших O-нотациях, это не то время, в которое мы заинтересованы, это то, как увеличивается время, когда размер ввода увеличивается. И это обычно среднее или худшее время, о котором мы говорим, не лучший случай, который обычно не имеет смысла в решении наших проблем.

Использование поиска массива в принятом ответе на другой вопрос в качестве примера. Время, необходимое для поиска определенного числа в списке размера n, равно n/2 * some_constant в среднем. Если вы рассматриваете его как функцию f(n) = n/2*some_constant, он увеличивается не быстрее, чем g(n) = n, в том смысле, в каком это задал Чарли. Кроме того, он увеличивается не медленнее, чем g(n). Следовательно, g(n) на самом деле является как верхней границей, так и нижней границей f(n) в нотации Big-O, поэтому сложность линейного поиска в точности n, что означает, что это Theta (n),

В этом отношении объяснение в принятом ответе на другой вопрос не совсем корректно, утверждая, что O (n) является верхним, потому что алгоритм может работать в постоянное время для некоторых входов (это лучший случай я упомянутое выше, что не совсем то, что мы хотим знать о времени работы).

Ответ 6

Если бы я был ленив, я мог бы сказать, что бинарный поиск в отсортированном массиве O (n2), O (n3) и O (2n), и я был бы технически корректен в каждом случай.

Мы можем использовать o-нотацию ( "little-oh" ) для обозначения верхней границы, которая не является асимптотически плотной. И большие, и маленькие-о-схожие. Но, big-oh, вероятно, используется для определения асимптотически жесткой верхней границы.

Ответ 7

Точно нижняя граница или $\omega $ bfon f (n) означает набор функций, которые асимптотически меньше или равны f (n), т.е. U g (n) ≤ cf (n) $\для всех $ 'un≥ n 'Для некоторого c, n' $\in $ $\Bbb {N} $

А верхняя граница или $\mathit {O} $ для f (n) означает набор функций, которые асимптотически больше или равны f (n), что математически говорит,

$ g (n)\ge cf (n)\для всех n\ge n '$, для некоторых c, n' $\in $ $\Bbb {N} $.

Теперь $\Theta $ является пересечением двух написанных выше

$\theta $

Например, если алгоритм похож на "точно $\Omega\left (f (n)\right $"), то лучше сказать "$\Theta\left (f (n)\right) $".

Или мы можем также сказать, что это дает нам фактическую скорость, где $ \omega $ дает нам самый низкий предел.

Ответ 8

Основное различие между

Blockquote

асимптотически сверху и асимптотически плотно Asym.upperbound означает заданный алгоритм, который может выполняться с максимальным количеством времени в зависимости от количества входов, например, при сортировке algo, если все элементы массива (n) находятся в нисходящем порядке, а затем для подъема их потребуется время работы O (n), которая показывает сложность верхней границы, но если они уже отсортированы, то она примет ohm (1). Так как мы обычно использовали нотацию O для сложности верхней границы.

Asym. (c1g (n) <= f (n) <= c2g (n)) показывает ограниченный связанный предел, так что функция имеет значение между двумя связанными (верхняя граница и нижняя граница), давая средний случай.