Як обговорити коефіцієнти в нотації big-O


10

Які позначення використовуються для обговорення коефіцієнтів функцій у нотації big-O?

У мене дві функції:

  • f(x)=7x2+4x+2
  • g(x)=3x2+5x+4

Очевидно, що обидві функції є O(x2) , дійсно Θ(x2) , але це не дозволяє порівняти далі. Як я обговорюю коефіцієнти 7 і 3. Зниження коефіцієнта до 3 не змінює асимптотичну складність, але все ще має значну різницю для використання часу виконання / використання пам'яті.

Це неправильно сказати , що f є O(7x2) і г становить О(3х2) ? Чи є інші позначення, які враховують коефіцієнти? Або який був би найкращий спосіб обговорити це?


Це не неправильно, це просто зайве, тому що . O(7x2)=O(x2)

Відповіді:


9

Big- і big- & thetas нотації приховати коефіцієнти провідного члена, тому якщо у вас є дві функції , які є як thetas ; ( п 2 ) ви не можете порівняти їх абсолютні значення , не дивлячись на самих функцій. Неправильно сказати, що 7 x 2 + 4 x + 2 = Θ ( 7 x 2 ) , але це не інформативно, оскільки 7 x 2 + 4 x + 2 = Θ ( 3 x 2 )ОΘΘ(н2)7х2+4х+2=Θ(7х2)7х2+4х+2=Θ(3х2)також вірно (і насправді це для будь-якої позитивної постійної k ).Θ(кх2)к

Є й інші позначення, які ви можете використовувати замість цього. Наприклад, позначення є набагато сильнішим твердженням, ніж велике Θ :Θ

f(х)г(х)limхf(х)г(х)=1

Наприклад, , але твердження було б помилковим. Ви можете вважати позначення тильди як позначення що зберігає провідні коефіцієнти, що, здається, саме те, що ви шукаєте, якщо вам важливо провідний коефіцієнт домінуючого терміну зростання. 7 x 2 + 4 x + 2 3 x 2 Θ7х2+4х+27х27х2+4х+23х2Θ


Позначення Тільди - це те, що я шукаю. Я був впевнений, що я щось не міг згадати, як це називалося, і пошуки виявилися безрезультатними. Дякую!

6

Тильда - це один підхід. Якщо ви хочете дотримуватися , ви можете сказатиО

іf(х)=7х2+О(х)

.г(х)=3х2+О(х)


Ще краще: скажіть f (x) = 7x ^ 2 + o (x ^ 2), використовуючи позначення мало-o, щоб уточнити, що те, що залишилося, асимптотично менше, ніж x ^ 2.
templatetypedef

2
O (x) суворо менше, ніж o (x ^ 2), тому використання цього було б менш зрозумілим, ніж використання big-O. З іншого боку, використання Little-o, безумовно, є більш поширеним, коли ви хочете сказати, що ви отримали правильний перший термін, тому що вам не потрібно турбуватися про наступний термін. (І якщо ми хочемо бути повністю зрозумілими, тоді нам потрібно буде пояснити, чому ми не просто

Ви абсолютно праві ... мої вибачення!
templatetypedef

f(х)=7х2+г(х)г(х)О(х)f(х)=7х2+4х+О(1)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.