• 1 Úvod
  • 2 Základní pojmy
  • 3 Reálné posloupnosti
  • 4 Číselné řady
  • 5 Limita a spojitost funkce
  • 6 Derivace
  • 7 Taylorovy polynomy
  • 8 Primitivní funkce
  • 9 Riemannův integrál
  • 10 Další příklady a aplikace
  • 11 Přehled použitého značení
  • Index Literatura

    10.3 Úvod do Landauovy symboliky

    K porovnávání asymptotického chování39 členů posloupností se často využívá Landauova symbolika (též známá pod označením \(\mathcal{O}\)-notace; Edmund Landau, německý matematik, 1877 – 1938). S touto symbolikou se velmi často setkáte při vyjadřování časových a paměťových složitostí algoritmů40.

    V této krátké kapitole zavedeme dva základní asymptotické vztahy, vlnovku \(\sim\) a velké \(\mathcal{O}\). Přesná definice těchto symbolů je následující.

    Definice 10.15

    Nechť \((a_n)_{n=1}^\infty\) a \((b_n)_{n=1}^\infty\) jsou číselné posloupnosti. Řekneme, že

    • \(a_n \sim b_n\), právě když existuje posloupnost \((\alpha_n)_{n=1}^\infty\) a \(n_0\in\mathbb{N}\) taková, že \(\displaystyle\lim_{n\to\infty} \alpha_n = 1\) a \(a_n = \alpha_n b_n\) pro každé \(n > n_0\).
    • \(a_n = \mathcal{O}(b_n)\), právě když existuje konstanta \(c > 0\) a \(n_0 \in\mathbb{N}\) tak, že \(|a_n| \leq c |b_n|\) pro všechna \(n > n_0\).

    Jaký je význam těchto vztahů. Z definice by mělo být patrné, že jestliže \(a_n \sim b_n\), pak se pro velká \(n\) obě posloupnosti „chovají stejně“, jsou tzv. asymptoticky ekvivalentní. Speciálně platí, že pokud \(a_n \sim b_n\), pak \(\lim a_n = \alpha\) právě když \(\lim b_n = \alpha\).

    Poznámka 10.16

    Ačkoliv jsme relace nezavedli poznamenejme, že \(\sim\) je skutečně relací ekvivalence na množině všech posloupností. To znamená, že

    • každá posloupnost splňuje \(a_n \sim a_n\),
    • platí-li \(a_n \sim b_n\) pak platí i \(b_n \sim a_n\),
    • platí-li \(a_n \sim b_n\) a \(b_n \sim c_n\) pak platí i \(a_n \sim c_n\).

    Tvrzení \(a_n = \mathcal{O}(b_n)\) naopak říká, že \((a_n)_{n=1}^\infty\) neroste (v absolutní hodnotě) rychleji než \((b_n)_{n=1}^\infty\) pro velká \(n\). \(\mathcal{O}\) je tedy značně hrubší než \(\sim\).

    Otázka 8

    Pro dvě posloupnosti \((a_n)_{n=1}^\infty\) a \((b_n)_{n=1}^\infty\) dokažte implikaci: pokud \(a_n \sim b_n\), potom \(a_n = \mathcal{O}(b_n)\).

    Odpověď:

    Pokud \(a_n \sim b_n\), pak dle definice existuje posloupnost \((\alpha_n)_{n=1}^\infty\) a \(n_0 \in \mathbb{N}\) splňující \(\lim_{n\to\infty} \alpha_n = 1\) a \(a_n = \alpha_n b_n\) pro všechna \(n\) větší než \(n_0\). Každá konvergentní posloupnost je omezená a proto existuje konstanta \(c\) splňující \(|\alpha_n| < c\) pro všechna \(n\). Proto pro všechna \(n\) větší než \(n_0\) platí \(|a_n| = |\alpha_n| |b_n| < c |b_n\).

    Pokud nerovnost \(b_n > 0\) platí pro všechna \(n\in\mathbb{N}\) pak lze definici 10.15 přeformulovat do následujícího, často používaného, tvaru

    \begin{equation}\label{eq_landau_alt_sim}\tag{10.4} a_n \sim b_n \quad \Leftrightarrow \quad \lim_{n\to\infty} \frac{a_n}{b_n} = 1, \\\end{equation}
    \begin{equation}\label{eq_landau_alt_O}\tag{10.5} a_n = \mathcal{O}(b_n) \quad \Leftrightarrow \quad \text{posloupnost} \ \bigg( \frac{a_n}{b_n} \bigg) \ \text{je omezená}.\end{equation}
    Omezení se na kladné posloupnosti není pro naše účely příliš zásadní. Často narazíme na vyjadřování a porovnávání složitostí algoritmů, které jsou typicky popsány kladnými čísly (nemáme zápornou paměť nebo počet operací). Výše uvedené kritérium se tedy často hodí a necháváme ho čtenáři k rozmyšlení (tj. k dokázání).

    V předchozí podkapitole jsme vypočetli limitu \begin{equation*} \lim_{n\to\infty} \frac{n^2}{2^n} = 0.\end{equation*} Posloupnost \((n^2 / 2^n)_{n=1}^\infty\) je tedy omezená. V notaci zavedené výše to znamená, že \begin{equation*} n^2 = \mathcal{O}(2^n).\end{equation*}

    Demonstrujme dále výše zavedené pojmy a tvrzení na několika jednoduchých příkladech.

    Příklad 10.17

    Platí \(50 \sin n = \mathcal{O}(1)\). Skutečně, stačí použít přímo definici \(\mathcal{O}\). Dokonce pro každé \(n\in\mathbb{N}\) platí \begin{equation*} |50 \sin n| \leq 50 \cdot 1.\end{equation*} Za konstantu v definici tedy lze vzít číslo \(50\).

    Příklad 10.18

    Platí \(500 n = \mathcal{O}(n^2)\). Opět použijeme definici \(\mathcal{O}\), resp. alternativní formulaci (10.5). Pro každé \(n\in\mathbb{N}\) platí \begin{equation*} \frac{500n}{n^2} = \frac{500}{n} \leq 500.\end{equation*} Posloupnost \((500n/n^2)_{n=1}^\infty\) je tedy omezená, jak jsme chtěli dokázat.

    Příklad 10.19

    Platí \begin{equation*} \frac{n^2 + n}{n^3 + n^2 + n + 1} \sim \frac{1}{n}.\end{equation*} Použijme tvrzení 3.31. Snadno vypočteme \begin{equation*} \begin{aligned} \lim_{n\to\infty} \frac{\frac{n^2 + n}{n^3 + n^2 + n + 1}}{\frac{1}{n}} &= \lim_{n\to\infty} \frac{n^3 + n^2}{n^3 + n^2 + n + 1} = \\ &= \lim_{n\to\infty} \frac{1 + \frac{1}{n}}{1 + \frac{1}{n} + \frac{1}{n^2} + \frac{1}{n^3}} = \frac{1+0}{1+0+0+0} = 1. \end{aligned}\end{equation*} A tvrzení tedy platí.

    Příklad 10.20

    Necháváme čtenáři k ověření, že dále například platí \begin{equation*} \begin{aligned} n^2 + \frac{1}{2} n - 1 &\sim n^2, \\ 2 n &= \mathcal{O}(n^2\,), \\ n\sin n &= \mathcal{O}(n^2\,), \\ 4n^2 &= \mathcal{O}(n^2\,), \\ 10n &= \mathcal{O}(n), \\ n &= \mathcal{O}(10n). \end{aligned}\end{equation*}

    Poznámka 10.21

    Zápis \(a_n = \mathcal{O}(b_n)\) není příliš šťastný. Lepší je ho chápat ve smyslu \(a_n \in \mathcal{O}(b_n)\). Historicky se však ujal a používá se. Například pokud \(a_n = \mathcal{O}(n)\) a současně \(b_n = \mathcal{O}(n)\), neplyne odtud, že \(a_n = b_n\).

    Poznámka 10.22

    Všimněte si, že omezenost posloupnosti \((a_n)_{n=1}^\infty\) lze nyní snadno vyjádřit formulkou \(a_n = \mathcal{O}(1)\). Skutečně, dle definice existuje jistá konstanta \(c > 0\) a index \(n_0 \in \mathbb{N}\) splňující \(|a_n| \leq c\) pro každé \(n \geq n_0\). Odtud již snadno plyne omezenost posloupnosti \((a_n)_{n=1}^\infty\).