В чем разница между нижней границей и жесткой границей?
С ссылкой на этот ответ, что такое 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)) показывает ограниченный связанный предел, так что функция имеет значение между двумя связанными (верхняя граница и нижняя граница), давая средний случай.