Edit this page Backlinks This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ====== 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) \}$ {{:aa:lab:theta_fn.png|}} $ 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) \}$ {{:aa:lab:o_fn.png|}} $ \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) \}$ {{:aa:lab:omega_fn.png|}} $ 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) \}$ ===== Syntactic sugars ====== 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ă: $math[\exists g \in \Theta(n)] și $math[\exists h \in O(\log(n))] a.î. $math[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: $math[\forall f \in \Theta(n^2),\ \exists g \in O(n^2)] și $math[\exists h \in o(n)] a.î. $math[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 $math[\Theta(n)] există o funcție egală în $math[O(n)], putem vedea că există funcții în $math[O(n)] pentru care nu există niciun corespondent în $math[\Theta(n)]. Ca regulă, fiecare notație asimptotică din stânga unui egal, ar trebui citită ca o funcție **cuantificată universal** ($math[\forall f]) din acea clasă, iar fiecare notație asimptotică din dreapta unui egal ar trebui citită ca o funcție **cuantificată existențial** ($math[\exists g]) din clasa respectivă. $\left(\frac{\omega(n^2)}{\Theta(n)}\right) = \Omega(n) + o(n)$ $math[\forall f \in \omega(n^2)\ and\ \forall g \in \Theta(n),\ \exists h \in \Omega(n)] și $math[\exists j \in o(n)] a.î. $math[\left(\frac{f(n)}{g(n)}\right) = h (n) + j(n),\ \forall n \in \mathbb{R}^{+}] ===== Exerciții ===== <note> În continuare, aveti un {{:aa:lab:cheetsheet-lab05.pdf|}} pentru a va ajuta la rezolvări. </note> 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)$ <note> Soluțiile acestui laborator se găsesc [[https://ocw.cs.pub.ro/ppcarte/doku.php?id=aa:lab:sol:5|aici]] </note>