# Algorithmen und Datenstrukturen: Blatt 3 ## Aufgabe 1 ### 1a) zz: $O(\sqrt {n}) = O(n)$ Die Aussage ist wahr. Es gilt $O(\sqrt{n}) = O(n^{0,5})$. Eine exponentielle Funktion wächst schneller, um so größer ihr Exponent ist. Deshalb wächst die Funktion $n^1 = n$ schneller, als die Funktion $n^{0,5}$ (da $1 < 0,5$). Umgekehrt folgt daraus allerdings, dass die Funktion $\sqrt{n}$ höchstens so schnell wächst, wie die Funktion $n$. Das wiederum ist genau die Bedeutung der Aussage $O(\sqrt {n}) = O(n)$. ### 1b) zz: $n+ o(n^2)= \omega (n)$ ### 1c) zz: $3n \log n + O(n) = \Theta (n \log n)$ $3n \log n \in \Theta (n \log n)$. Es gilt $3n \log n \in O (n \log n)$, sodass gilt $O(n \log n)+ O(n)= O(n log n)$, da $(n \log n)$ die Funktion ist, die stärker wächst und dadurch $O(n)$ absorbiert. Somit ist $3n \log n + O(n) = \Theta (n \log n)$ $ ## Aufgabe 2 Fall 1: $n \in {1,2}$ Aus der Defintion der Funktion geht hervor, dass $f(1)=1$ und $f(2)=2$. Somit wächst hier die Funktion linear und $T(n)$ für $n\in {1,2}$ gilt $T(n) \in O(n)$ Fall 2: $n >2$ Um zu zeigen, dass $T(n) \in O(n)$. Dafür zeigen wir, dass $cn-d$ existiert mit $T(n)\leq cn-d$. Beweis durch Induktion: IA: $T(k) \leq ck-d$ $T(n)= T(\lfloor \frac {n}{2}\rfloor)+T(\lfloor \frac {n}{3}\rfloor)+n$ $\leq (c\lfloor \frac {n}{2}\rfloor -d)+(c\lfloor \frac {n}{3}\rfloor -d )+n =c\lfloor \frac {n}{2}\rfloor -d+c\lfloor \frac {n}{3}\rfloor -d+n$ $=c\lfloor \frac {n}{2}\rfloor+c\lfloor \frac {n}{3}\rfloor-d+n-d= c\lfloor \frac{5n}{6} \rfloor-d+(n-d)$ $\leq c\lfloor \frac{5n}{6} \rfloor -d$ für $d \geq 1$ Somit ist $T(n) \in O(n)$ auch für n>2. ## Aufgabe 3 ### 3a) $T(n) = 2 T(\frac{n}{2})+n$ Es ist Fall 2 erfüllt: $a=2, b=2, f(n) = n$. Denn es gilt: $f(n) = n \in \Theta(n^{log_22}) = \Theta(n)$. $\Rightarrow T(n) \in \Theta (n \log n)$. ### 3b) $T(n)= 3 T(\frac {n}{3}) + \sqrt{n}$ Es ist Fall 1 erfüllt: $a=3, b=3, f(n)=\sqrt{n}$. Denn es gilt: $f(n)=\sqrt(n)=n^{0,5} \in O(n^{(log_33)-\epsilon})=O(n^{1-\epsilon}) = O(n)$ für $\epsilon = 0,5$ $\Rightarrow T(n) \in \Theta (n^{log_33}) = \Theta (n)$ ### 3c) $T(n)= 2 T(\frac {n}{2}) + \Theta(n^3)$ Es ist Fall 3 erfüllt: $a=2, b=2, f(n)=\Theta (n^3)$. Denn es gilt: $f(n)= \Theta (n^3) \in \Omega (n^{(log_22)+\epsilon})= \Omega (n^{1+\epsilon}) = \Omega (n^{3})$ für $\epsilon = 2$. Regularitätsbedingung: $af(\frac{n}{b}) \leq cf(n)$ für $c<1$ und alle großen $n$: $f(n) = \Theta (n^3) \Rightarrow \exists c_1,c_2 > 0, n_0 \in \mathbb{N}_0: c_1f(n)\leq n^3 \leq c_2 f(n)$ Abschätzen von $T(n)$ nach unten und oben gegen $T'$ und $T''$ mit $T'(n)=2T(\frac{n}{2})+c_1 n^3$ und $T''(n)=2T(\frac{n}{2})+c_2 n^3$. $c_1,c_2:=d$ $\Rightarrow af(\frac{n}{b})= 2f(\frac{n}{2})=2\frac{dn^3}{2^3}=\frac{1}{4}dn^3=\frac{1}{4}f(n)$ $0<\frac{1}{4}<1 \Rightarrow$ Die Regularitätsbedingung ist erfüllt. $\Rightarrow T(n) \in \Theta (n^3)$. ### 3d) $T(n)= 2 T(\frac {n}{2})+ \frac{n}{\log_2 n}$ Es ist keiner der drei Fälle erfüllbar: $a=2, b=2, f(n)=\frac{n}{\log_2 n}$. Fall 1: $f(n) \in \Omega (n^{(log_22)+\epsilon}) = \Omega(n)$ Fall 2: $f(n) \in \Theta (n^{log_22}) = \Theta(n)$ Fall 3: $f(n) \in O(n^{(log_22)-\epsilon}) = O(n)$ Wir definieren $g(n):=n$ Es gilt: $lim_{n \rightarrow \infty}\frac{f(n)}{g(n)}= lim_{n \rightarrow \infty}\frac{\frac{n}{\log_2 n}}{n}= lim_{n \rightarrow \infty}\frac{1}{\log_2 n}=0$ $\Rightarrow f(n) \in o(n) \Rightarrow f(n) \notin \Omega(n) \Rightarrow$ Fall 1 ist nicht erfüllt. Angenommen, es existiert $\epsilon$ mit $f(n) \in O(n^{1-\epsilon})$. Dann gilt $lim_{n \rightarrow \infty}\frac{\frac{n}{\log_2 n}}{n^{1-\epsilon}}= lim_{n \rightarrow \infty}\frac{n^{\epsilon}}{\log_2 n}= lim_{n \rightarrow \infty}\frac{\frac{n^{\epsilon}}{1}}{\log_n 2}= lim_{n \rightarrow \infty}\frac{n^{\epsilon}}{\log_n 2}=\infty$ $\Rightarrow f(n) \in \omega(n) \Rightarrow f(n) \notin O(n) \Rightarrow$ Fall 3 ist nicht erfüllt. Damit ist auch Fall 2 nicht erfüllt. Rekursionsbaummethode: ![Rekursionsbaum](https://i.imgur.com/uptnMLh.png) | Ebene Nr. | Anzahl Knoten | Beitrag (Ebene) | | --------- | -------------- | ----------------------------------------------------------------------------------------------------------- | | $0$ | $2^0=1$ | $\frac{n}{\log_2 n}$ | | $1$ | $2^1=2$ | $\frac{n}{\frac{2}{log_2\frac{n}{2}}}=\frac{n}{\frac{2}{log_2(n)-log_2(2)}}=\frac{n}{\frac{2}{log_2(n)-1}}$ | | $2$ | $2^2=4$ | $\frac{n}{\frac{4}{log_2\frac{n}{4}}}=\frac{n}{\frac{4}{log_2n-2}}$ | | ... | ... | ... | | $i$ | $2^{i}$ | $\frac{n}{\frac{2^i}{log_2\frac{n}{2^i}}}=\frac{n}{\frac{2^i}{log_2(n)-i}}$ | | ... | ... | ... | | $log_2n$ | $2^{log_2n}=n$ | $n\cdot T(1) = n$ | $T(n)= n+ \sum_{i=0}^{(log_2n)-1}\frac{n}{\frac{2^i}{log_2(n)-i}}= n+ n \sum_{i=0}^{(log_2n)-1}\frac{1}{\frac{2^i}{log_2(n)-i}}= n+ n \sum_{i=0}^{(log_2n)-1}\frac{1}{2^i(log_2(n)-i)}$ $2^i$ und $i$ sind in jedem Summendurchlauf Konstanten und dürfen deshalb für die Laufzeitberechnung vernachlässigt werden. $\Rightarrow T(n)= n+ n \sum_{i=0}^{(log_2n)-1}\frac{1}{log_2(n)}= n+ n \frac{log_2n}{log_2n}=n+n$ $\in \Theta(n))$ ## Aufgabe 4 $A= [9,0,4,10,8,-2,11,16,4,14]$ 1. Durchgang $[9, 0, 4, 16, 14, −2, 11, 10, 4, 8]$ 2. Durchgang $[9, 16, 11, 0, 14, −2, 4, 10, 4, 8]$ 3. Durchgang $[9, 16, 11, 10, 14, −2, 4, 0, 4, 8]$ 4. Durchgang $[16, 9, 11, 10, 14, −2, 4, 0, 4, 8]$ 5. Durchgang $[16, 14, 11, 10, 9, −2, 4, 0, 4, 8]$ ###### tags: `Algorithmen und Datenstrukturen` `Informatik` `Uni`