Jak omawiać współczynniki w notacji big-O


10

Jakiej notacji używa się do omawiania współczynników funkcji w notacji big-O?

Mam dwie funkcje:

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

Oczywiście obie funkcje to , a właściwie Θ ( x 2 ) , ale to nie pozwala na dalsze porównania. Jak omówić współczynniki 7 i 3. Zmniejszenie współczynnika do 3 nie zmienia asymptotycznej złożoności, ale nadal robi znaczącą różnicę w użyciu środowiska wykonawczego / pamięci.O(x2)Θ(x2)

Czy błędem jest stwierdzenie, że oznacza O ( 7 x 2 ), a g oznacza O ( 3 x 2 ) ? Czy istnieje inna notacja uwzględniająca współczynniki? Lub jaki byłby najlepszy sposób na omówienie tego?fO(7x2)gO(3x2)


To nie jest złe, jest po prostu zbędne, ponieważ . O(7x2)=O(x2)

Odpowiedzi:


9

Big- i big- Θ notacje ukryć współczynniki wiodących perspektywie, więc jeśli masz dwie funkcje, które są zarówno Θ ( n 2 ) nie można porównywać ich wartości bezwzględne, nie patrząc na same funkcje. Nie jest błędem samo w sobie twierdzenie, że 7 x 2 + 4 x + 2 = not ( 7 x 2 ) , ale nie jest to pouczające, ponieważ 7 x 2 + 4 x + 2 = Θ ( 3 x 2 )OΘΘ(n2)7x2+4x+2=Θ(7x2)7x2+4x+2=Θ(3x2)jest również prawdziwe (i w rzeczywistości jest to dla dowolnej dodatniej stałej k ).Θ(kx2))k

Istnieją inne notacje, których możesz użyć zamiast tego. Na przykład notacja jest znacznie silniejszym twierdzeniem niż duże Θ :Θ

f(x)g(x)limxf(x)g(x)=1

Na przykład , ale twierdzenie 7 x 2 + 4 x + 2 3 x 2 byłoby fałszywe. Można myśleć o tyldy notacji jako Θ notacji że zachowuje prowadzące współczynniki, co wydaje się być to, czego szukasz, jeśli nie dba o wiodącej współczynnika dominującej perspektywie wzrostu.7x2+4x+27x27x2+4x+23x2Θ


Notacja tyldy jest tym, czego szukam. Byłem pewien, że było coś, czego nie mogłem sobie przypomnieć, jak to się nazywa, a poszukiwania okazały się bezowocne. Dzięki!

6

Tylda to jedno podejście. Jeśli chcesz trzymać się , możesz powiedziećO

if(x)=7x2+O(x)

.g(x)=3x2+O(x)


Jeszcze lepiej: powiedz f (x) = 7x ^ 2 + o (x ^ 2), używając notacji little-o, aby wyjaśnić, że to, co zostało, jest asymptotycznie mniejsze niż x ^ 2.
templatetypedef

2
O (x) jest ściśle mniejsze niż o (x ^ 2), więc użycie tego byłoby mniej wyraźne niż użycie dużego-O. Z drugiej strony używanie little-o jest zdecydowanie bardziej powszechne, gdy chcesz powiedzieć, że masz poprawny pierwszy termin, ponieważ wtedy nie musisz się martwić o następny termin. (A jeśli chcemy mieć całkowitą jasność, musielibyśmy wyjaśnić, dlaczego nie zapisujemy po prostu 7x ^ 2 + 4x + 2 w pierwszej kolejności, ponieważ jest to dokładnie poprawne.

Masz absolutną rację ... przepraszam!
templatetypedef

f(x)=7x2+g(x)g(x)O(x)f(x)=7x2+4x+O(1)
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.