Велико О

Из Википедије, слободне енциклопедије

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

Главна идеја је да се симболи „\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

Literatura[уреди]

  • Paul Bachmann. Die Analytische Zahlentheorie. Zahlentheorie. pt. 2 Leipzig: B. G. Teubner, 1894.
  • Edmund Landau. Handbuch der Lehre von der Verteilung der Primzahlen. 2 vols. Leipzig: B. G. Teubner, 1909.
  • G. H. Hardy. Orders of Infinity: The 'Infinitärcalcül' of Paul du Bois-Reymond, 1910.
  • Donald Knuth. The Art of Computer Programming, Volume 1: Fundamental Algorithms, Third Edition. Addison–Wesley, 1997. ISBN 978-0-201-89683-1. Section 1.2.11: Asymptotic Representations, pp. 107-123.
  • Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein. Introduction to Algorithms, Second Edition. MIT Press and McGraw–Hill, 2001. ISBN 978-0-262-03293-3. Section 3.1: Asymptotic notation, pp. 41-50.
  • Michael Sipser (1997). Introduction to the Theory of Computation. PWS Publishing. ISBN 978-0-534-94728-6.  Pages 226–228 of section 7.1: Measuring complexity.
  • Jeremy Avigad, Kevin Donnelly. Formalizing O notation in Isabelle/HOL
  • Paul E. Black, "big-O notation", in Dictionary of Algorithms and Data Structures [online], Paul E. Black, ed., U.S. National Institute of Standards and Technology. 11 March 2005. Retrieved December 16, 2006.
  • Paul E. Black, "little-o notation", in Dictionary of Algorithms and Data Structures [online], Paul E. Black, ed., U.S. National Institute of Standards and Technology. 17 December 2004. Retrieved December 16, 2006.
  • Paul E. Black, "Ω", in Dictionary of Algorithms and Data Structures [online], Paul E. Black, ed., U.S. National Institute of Standards and Technology. 17 December 2004. Retrieved December 16, 2006.
  • Paul E. Black, "ω", in Dictionary of Algorithms and Data Structures [online], Paul E. Black, ed., U.S. National Institute of Standards and Technology. 29 November 2004. Retrieved December 16, 2006.
  • Paul E. Black, "Θ", in Dictionary of Algorithms and Data Structures [online], Paul E. Black, ed., U.S. National Institute of Standards and Technology. 17 December 2004. Retrieved December 16, 2006.