Яка різниця між нижньою та щільною межами?


99

З посиланням на цю відповідь , що таке Тета (щільно пов'язана)?

Омега нижня межа, цілком зрозумілий, мінімальний час, який може зайняти алгоритм. І ми знаємо, що Big-O призначений для верхньої межі, означає максимальний час, який може зайняти алгоритм. Але я не маю уявлення щодо Тети.

Відповіді:


154

Велика О - верхня межа, а Омега - нижня. Тета вимагає як 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).


7
Ой .. Зараз термін "тісно пов'язаний" з'являється для мене цілком самозрозумілим. Дякую Крису. Дурний мене, можливо, я очікував якоїсь складної ідеї. :)
Адель Ансарі

6
Так, накинуто багато фантазійних позначень, але це не надто складно, як тільки ви потрапите під пояс.
Кріс Бунч

4
Цей вільно доступний документ від Virginia Tech пояснює на прикладах різницю між показниками ефективності між алгоритмами різної складності та коротко пояснює асимптотичний аналіз: people.cs.vt.edu/shaffer/Book/C++3e20120102.pdf
Алан

Що ви маєте на увазі під "алгоритмом, що приймає Theta (n log n), є набагато переважнішим, оскільки він займає щонайменше n log n (Omega n log n) і не більше n log n (Big O n log n).", в, це точна складність алгоритму, як ви писали, принаймні Omega (nlogn) і в max BigO (nlogn)?
Nikhil Verma

1
Простими словами ми можемо назвати: верхню межу (Big (O)) як найгірший випадок? жорсткий зв'язаний як середній випадок? нижня межа (Омега) як найкращий випадок?
Реванш

113

Θ-нотація (тета-нотація) називається жорсткою, тому що вона є більш точною, ніж O-нотація та Ω-нотація (омега-нотація).

Якби я лінувався, я міг би сказати, що бінарний пошук на відсортованому масиві - це O (n 2 ), O (n 3 ) та O (2 n ), і я був би технічно правильним у кожному випадку. Це тому, що O-нотація задає лише верхню межу , а двійковий пошук обмежений на високій стороні усіма цими функціями, просто не дуже близько. Ці ледачі оцінки були б марними .

Θ-нотація вирішує цю проблему, поєднуючи O-нотацію та Ω-позначення. Якщо я скажу, що двійковий пошук є Θ (log n), це дає більш точну інформацію. Це говорить вам, що алгоритм обмежений обома сторонами даною функцією, тому він ніколи не буде значно швидшим або повільнішим, ніж заявлене.


11
If I were lazy, I could say that binary search on a sorted array is O(n2), O(n3), and O(2n), and I would be technically correct in every case- Здається, більшість людей у ​​комп’ютерному світі ледачі лише тому, що всі переважно говорять лише про складності Big O.
RBT

If I were lazy, I could say that binary search on a sorted array is O(n2), O(n3), and O(2n), and I would be technically correct in every caseЯкщо хтось з цим плутає: Для тих функцій, які не є асимптотично затиснутими, використовується невелика нотація. Приклад: - Зв'язане 2n ^ 2 = O (n ^ 2) асимптотично щільне, але пов'язане 2n = O (n ^ 2) не є. Детальніше: stackoverflow.com/questions/1364444/…
Драгош Стругар

18

Якщо у вас є щось, що є 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) .

Стаття у Вікіпедії пристойна, якщо трохи щільна.


Зараз читаємо сімейні нотації Бахмана-Ландау. Спасибі Чарлі, я туди зайшов раніше, але повернувся, не переходячи до його довжини.
Адель Ансарі

Гей, добре так часто оновлюватись на докторських складах.
Чарлі Мартін

Зауважте, що позначення Ландау з великим O не обмежується алгоритмічною складністю.
Чарлі Мартін

Це виглядає неправильно. У першому рядку слід прочитати «Якщо у вас є щось, що є O (g (n))», тобто gзамість f, а решта можна залишити як є. Те ж саме стосується другого рядка: він повинен бути "Якщо у вас є щось, що Ω (g (n))". Чи можете ви подвійно перевірити?
Фабіо каже: Відновити Моніку

Вся тема настільки заплутана, що хтось із цим кредитом також може помилитися: D Жартуючи вбік, комусь потрібно виправити цю відповідь. Це бентежить людей (це дуже мене зробило).
Рад

5

Асимптотика верхньої межі означає, що даний алгоритм виконується протягом максимальної кількості часу, залежно від кількості входів.

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

Як правило, O-notationвикористовується для верхньої межі складності.


Асимптотично обмежена межа (c 1 g (n) ≤ f (n) ≤ c 2 g (n)) показує середню обмежену складність функції, що має значення між обмеженими межами (верхня межа і нижня межа), де c 1 і c 2 - константи.


1
якщо масив буде відсортований, зв'язаний все одно буде O (n)
Arun Aravind

2
@ArunAravind Чи можете ви пояснити, чому?
nbro

3

Фрази мінімальний час і максимальний час тут трохи оманливі. Коли ми говоримо про великі нотації O, то нас не цікавить саме той час, як час збільшується, коли розмір введення збільшується. І зазвичай це середній чи найгірший час, про який ми говоримо, а не найкращий випадок , який зазвичай не має сенсу для вирішення наших проблем.

Використовуючи пошук масиву у прийнятій відповіді на інше питання в якості прикладу. Час, необхідний для пошуку певного числа в списку розміру n, становить в середньому n / 2 * some_constant. Якщо ви ставитесь до цього як до функції f(n) = n/2*some_constant, він збільшується не швидше, ніж g(n) = nу тому сенсі, який дає Чарлі. Крім того, воно збільшується не повільніше, ніж g(n)будь-яке. Отже, g(n)насправді є і верхня межа, і нижня межа f(n)позначення Big-O, тому складність лінійного пошуку рівно n , що означає, що це Тета (n).

У зв'язку з цим пояснення у прийнятій відповіді на інше питання не зовсім коректне, що стверджує, що O (n) є верхньою межею, оскільки алгоритм може працювати в постійний час для деяких входів (це найкращий випадок, про який я згадував вище, що насправді не те, що ми хочемо знати про час роботи).


Отже, чи можна сказати, що Ω - найкращий випадок, а O - найгірший? . .. і чи слід замінювати терміни як найкращим, так і гіршим, відповідно?
Адель Ансарі

Кращий випадок O (1) для будь-якої проблеми?
Зак Ленглі

1
@Adeel, ні, Theta та O можуть стосуватися як середнього, так і гіршого. @Zach, ну не зовсім. Дякуємо, що вказали на це.
PolyThinker

0

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

Ми можемо використовувати o-позначення ("мало-о-о") для позначення верхньої межі, яка не є асимптотично тісною. І великі-і маленькі-о схожі. Але, великий-ой, ймовірно, використовується для визначення верхньої межі асимптотично.


0

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

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

$ g (n) \ ge cf (n) \ для всіх n \ ge n '$, для деяких c, n' $ \ в $ $ \ Bbb {N} $.

Тепер $ \ Theta $ - перетин вищезаписаних двох

$\theta $

Як якщо алгоритм схожий на "точно $ \ Omega \ зліва (f (n) \ право $"), то краще сказати, що це $ \ Theta \ зліва (f (n) \ праворуч) $.

Або ми можемо також сказати, що це дає нам фактичну швидкість там, де $ \omega $дає нам найнижчу межу.


-2

Основна різниця між

Блок-котирування

асимптотична верхня межа та асимптотично щільна Asym.upperbound означає заданий алгоритм, який може виконуватись з максимальною кількістю часу залежно від кількості входів, наприклад, наприклад, при сортуванні альго, якщо всі елементи масиву (n) знаходяться у порядку зменшення, а потім для їх збільшення буде потрібен час роботи O (n), який показує складність верхньої межі, але якщо вони вже відсортовані, то знадобиться Ом (1). Тому ми зазвичай використовуємо позначення "O" для верхньої межі складності.

Асим. межа жорсткої зв'язку показує, наприклад, для (c1g (n) <= f (n) <= c2g (n)) показує межу жорсткої межі таким чином, що функція має значення між двома зв'язаними (верхня і нижня межа), даючи середній випадок.


2
Ви не повинні відповідати на старі запитання, якщо ваша відповідь не додає нічого тонкого до вже прийнятих відповідей.
alestanis
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.