Notații asimptotice

$ \Theta(f(n)) = \{ g: \mathbb{R}^{+} \rightarrow \mathbb{R}^{+}\ |\ \begin{array}{l} \exists c_1, c_2 \in \mathbb{R}^+\cr \exists n_0 \in \mathbb{N} \end{array}\ such\ that\ \forall\ n \ge n_0,\ \ c_1f(n) \le g(n) \le c_2f(n) \}$

$ O(f(n)) = \{ g: \mathbb{R}^{+} \rightarrow \mathbb{R}^{+}\ |\ \begin{array}{l} \exists c \in \mathbb{R}^+\cr \exists n_0 \in \mathbb{N} \end{array}\ such\ that\ \forall\ n \ge n_0,\ \ 0 \le g(n) \le cf(n) \}$

$ \Omega(f(n)) = \{ g: \mathbb{R}^{+} \rightarrow \mathbb{R}^{+}\ |\ \begin{array}{l} \exists c \in \mathbb{R}^+\cr \exists n_0 \in \mathbb{N} \end{array}\ such\ that\ \forall\ n \ge n_0,\ \ 0 \le cf(n) \le g(n) \}$

$ o(f(n)) = \{ g: \mathbb{R}^{+} \rightarrow \mathbb{R}^{+}\ |\ \begin{array}{l} \forall c \in \mathbb{R}^+\cr \exists n_0 \in \mathbb{N} \end{array}\ such\ that\ \forall\ n \ge n_0,\ \ 0 \le g(n) \le cf(n) \}$

$ \omega(f(n)) = \{ g: \mathbb{R}^{+} \rightarrow \mathbb{R}^{+}\ |\ \begin{array}{l} \forall c \in \mathbb{R}^+\cr \exists n_0 \in \mathbb{N} \end{array}\ such\ that\ \forall\ n \ge n_0,\ \ 0 \le cf(n) \le g(n) \}$

Notațiile asimptotice sunt adesea folosite pentru a ne referi la funcții arbitrare cu o anumită creștere. Pentru simplitate, putem scrie expresii aritmetice astfel:

$ f(n) = \Theta(n) + O(\log(n)) $

Care trebuie citită: $ \exists g \in \Theta(n)$ și $ \exists h \in O(\log(n))$ a.î. $ f(n) = g(n) + h(n),\ \forall n \in \mathbb{R}^{+}$ .

Putem de asemenea scrie ecuații:

$ \Theta(n^2) = O(n^2) + o(n)$

Care ar trebui citite: $ \forall f \in \Theta(n^2),\ \exists g \in O(n^2)$ și $ \exists h \in o(n)$ a.î. $ f(n) = g(n) + h(n),\ \forall n \in \mathbb{R}^{+}$ .

Observați că ecuațiile nu sunt simetrice și ar trebui citite de la stânga la dreapta. De exemplu:

$\Theta(n) = O(n)$

Deși e adevărat că, pentru orice funcție $ \Theta(n)$ există o funcție egală în $ O(n)$ , putem vedea că există funcții în $ O(n)$ pentru care nu există niciun corespondent în $ \Theta(n)$ .

Ca regulă, fiecare notație asimptotică din stânga unui egal, ar trebui citită ca o funcție cuantificată universal ($ \forall f$ ) din acea clasă, iar fiecare notație asimptotică din dreapta unui egal ar trebui citită ca o funcție cuantificată existențial ($ \exists g$ ) din clasa respectivă.

$\left(\frac{\omega(n^2)}{\Theta(n)}\right) = \Omega(n) + o(n)$

$ \forall f \in \omega(n^2)\ and\ \forall g \in \Theta(n),\ \exists h \in \Omega(n)$ și $ \exists j \in o(n)$ a.î. $ \left(\frac{f(n)}{g(n)}\right) = h (n) + j(n),\ \forall n \in \mathbb{R}^{+}$

În continuare, aveti un cheetsheet-lab05.pdf pentru a va ajuta la rezolvări.

1. Dați exemple de câte o funcție din următoarele clase de complexitate:

  • $ O(n)$
  • $ \Omega(log(n))$
  • $ \Theta(n^2)$
  • $ \omega(\frac{1}{n})$
  • $ o(3^n)$

2. Pentru fiecare din perechile de mai jos, dați un exemplu concret de constante pentru care inegalitățile implicate în definiția clasei de complexitate sunt adevărate:

  • $ log(n) \in o(\sqrt n)$
  • $ 100n^2 \in O(2^n)$
  • $ 0.001n^3 \in \Omega(20 \sqrt n)$
  • $ 10n \in \Theta(n)$
  • $ n \in \Theta(10n)$

3. Găsiți două funcții $ f$ și $ g$, astfel încât:

  • $ f(n) = O(g^2(n))$
  • $ f(n) = \omega(\log(g(n)))$
  • $ f(n) = \Omega(f(n)\cdot g(n))$
  • $ f(n) = \Theta(g(n)) + \Omega(g^2(n))$

4. Verificați valoarea de adevăr a următoarelor propoziții:

  • $ \sqrt{n} \in O(\log{n})$
  • $ \log{n} \in O(\log{(\log{n})})$
  • $ n \in O(\sqrt{n}\cdot\log{n})$
  • $ n + \log{n} \in \Theta(n)$
  • $ \log{(n\cdot \log{n})}\in\Theta(\log{n})$
  • $ \sqrt{n}\in\omega(\log{n})$

Exerciții - syntactic sugars

5. Aduceți următoarele la o formă simplă (o clasă de complexitate ce depinde de o anume funcție):

  • $ \frac{O(n\sqrt{n})}{\Theta(n)} = \ldots$
  • $ \frac{\Theta(n)}{O(\log(n))} = \ldots$

6. Demonstrați/infirmați următoarele propoziții:

  • $ f(n) = \Omega(\log(n)) \land g(n)=O(n) \implies f(n)=\Omega(\log(g(n))$
  • $ f(n) = \Omega(\log(n)) \land g(n)=O(n) \implies f(n)=\Theta(\log(g(n))$
  • $ f(n) = \Omega(g(n)) \land g(n)=O(n^2) \implies \frac{g(n)}{f(n)}=O(n)$
Soluțiile acestui laborator se găsesc aici