Велико О

Из Википедије, слободне енциклопедије
Question book-new.svg Овај чланак или један његов део нема никакве независне и поуздане изворе. Помозите да се овај чланак побољша тако што ћете унети одговарајуће референце. Текст који не садржи референце може бити доведен у питање, а потом и уклоњен.

Ландау симболи и нотација користе се у информатици и математици за описивање асимптотских тенденција (брзина раста) функција и редова. У информатици се они посебно користе за описивање временске сложености неког алгоритма да бисмо могли да их упоредимо или израчунамо колико је тешко или „сложено“ израчунавање.

Главна идеја је да се симболи „\leq“, „\geq“, „=“ и „ < “ прилагоде за функције.

Нотацију је увео Паул Бахман у својој књизи „Analytische Zahlentheorie“ написаној 1894, а постала је популарна у радовима Едмунда Ландауа.

Садржај

Дефиниције [уреди]

"≤" [уреди]

g(n)=\mathcal{O}(f(n))

g = \mathcal{O} (f) значи да g асимптотски не расте брже од f, а дефинисано је тако што је израз \frac{g(n)}{f(n)} ограничен неком константом c.

\mathcal{O} (f) = \{g | g:\mathbb{N} \rightarrow \mathbb{R}^{+}, \exists n_0 \in \mathbb{N}, \forall n \geq n_0 : g(n) \leq c \cdot f(n) \}

Иста дефиниција, нешто другачије написана гласи:

 0 \leq \limsup_{n\to\infty} \left | \frac{g(n)}{f(n)} \right | < \infty

Знак „=“ у овом случају не значи једнакост већ га је увек најбоље превести као „g је спорија или једнако брза као f“. У овој нотацији се увек мисли на асимптотски случај, односно, није битно да ли је g у неком моменту или у неком интервалу већа од f, већ посматрамо тенденцију приликом приближавања бесконачности.

Понекад се у литератури користи такође нотација g \in \mathcal{O}(f)  g \subseteq \mathcal{O}(f)

"≥" [уреди]

Ознака g = \Omega (f) значи да g асимптотски не расте спорије од f (g је бржа или макар исто брза као и f), а користећи претходну дефиницију се добија ова - f=\mathcal{O}(g) (f је спорија или у најбољем случају исто брза као g).

\Omega (f) = \{ g | g : \mathbb{N} \rightarrow \mathbb{R}^{+}, \exists c > 0, \exists n_0 \in \mathbb{N}, \forall n \geq n_0: g(n) \geq c \cdot f(n) \}

Исто то нешто једноставнијом формулом гласи: \liminf_{n\to\infty} \left | \frac{g(n)}{f(n)} \right | > 0

"=" [уреди]

 g = \Theta (f) значи да f и g асимптотски гледано једнако брзо расту, а то дефинишемо користећи се поново претходним дефиницијама: g=\mathcal{O}(f) и g=\Omega (f), односно \Theta (f) = \mathcal{O}(f) \cap \Omega (f).

\Theta (f) = \{ g | g: \mathbb{N} \rightarrow \mathbb{R}^+, \exists c > 0, \exists n_0 \in \mathbb{N}, \forall n \geq n_0 : \frac{1}{c} \cdot f(n) \leq g(n) \leq c \cdot f(n) \}

Уз помоћ лимеса:

 
0 < \liminf_{n\to\infty} \left | \frac{g(n)}{f(n)} \right | \leq \limsup_{n\to\infty} \left | \frac{g(n)}{f(n)} \right | < \infty

"<" [уреди]

g = o(f) значи да g асимптотски спорије расте од f. Дефинисано је тако да је \frac{g(n)}{f(n)} нулти ред.

o(f) = \{ g | g: \mathbb{N} \rightarrow \mathbb{R}^+, \forall c > 0, \exists n_0 \in \mathbb{N}, \forall n \geq n_0 : g(n) < c \cdot f(n) \}

\lim_{n\to\infty} \left | \frac{g(n)}{f(n)} \right | = 0

">" [уреди]

Ознака  g = \omega(f) значи да је g асимптотски бржа од f. Као и код \Omega(f) и \mathcal{O}(f) тако се и овде служимо супротном дефиницијом: f = o(g).

\omega(f) = \{ g | g: \mathbb{N} \rightarrow \mathbb{R}^+, \forall c > 0, \exists n_0 \in \mathbb{N}, \forall n \geq n_0 : g(n) > c \cdot f(n) \}

\lim_{n\to\infty} \left | \frac{g(n)}{f(n)} \right | = \infty

Правила за рачунање са O нотацијом [уреди]

  • c \cdot f = \mathcal{O}(f) за неко c \geq 0
  • \mathcal{O}(c \cdot f) = \mathcal{O} (f) за неко c \geq 0
  • c \cdot \mathcal{O}(f) = \mathcal{O} (f) за неко c \geq 0
  •  \mathcal{O} (\mathcal{O} (f) ) = \mathcal{O} (f)
  •  \mathcal{O} (f_1) + \mathcal{O} (f_2) + \ldots + \mathcal{O}(f_k) = \mathcal{O} (\max \{f_1, \ldots, f_l \} ) за неку константу k
  •  \mathcal{O}(f) \cdot \mathcal{O}(g) = \mathcal{O} (f \cdot g )
  • g=\mathcal{O}(f) \Rightarrow \mathcal{O}(f+g) = \mathcal{O}(f)
  • \log_a n = \mathcal{O} (\log_b n), за \forall a,b > 1; тј. база логаритма није битна, само нек је већа од 1