Für Vorlesungen, bitte die Webseite verwenden. https://flavigny.de/lecture
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

178 lines
7.1KB

  1. \documentclass{../../../lecture}
  2. \usepackage{enumerate}
  3. \begin{document}
  4. \begin{aufgabe} Algorithmische Komplexität
  5. \begin{enumerate}[a)]
  6. \item Laufzeiten der verschiedenen algorithmischen Komplexitäten $f(n)$ für $2n$ in Abhängigkeit von
  7. der Ausgangslaufzeit für $n$.
  8. \begin{tabular}{|l|l|l|l|}
  9. \hline
  10. $f(n)$ & 4 Sekunden & 10 Sekunden & 100 Sekunden \\ \hline
  11. $\text{ld}(2n)$ & 5s & 11s & 101s \\ \hline
  12. $2n$ & 8s & 20s & 200s \\ \hline
  13. $2n \text{ ld}(2n)$ & 13,49s & 29,13s & 244,64s\\ \hline
  14. $(2n)^{3}$ & 32s & 80s & 800s \\ \hline
  15. $2^{2n}$ & 16s & 100s & 10000s\\ \hline
  16. \end{tabular}
  17. \item
  18. \begin{enumerate}[1.]
  19. \item $1$
  20. \item $\log \log n$
  21. \item $\log n$
  22. \item $n^{\epsilon}$
  23. \item $n^{c}$
  24. \item $n^{\log n}$
  25. \item $c^{n}$
  26. \item $n^{n}$
  27. \item $c^{\left( c^{n} \right) }$
  28. \end{enumerate}
  29. \item Beweisen Sie folgende Behauptungen
  30. \begin{enumerate}
  31. \item $x^{a} = O(x^{b}) \iff a -b \le 0$
  32. \begin{proof}
  33. Seien $a, b, x \in \R$ mit $x > 1 $
  34. Zu zeigen: $\exists c \in \R$: $x^{a} \le c x^{b} \iff a \le b$
  35. Wegen $x > 1$ ist $\ln(x) > 0$ und $\ln(x)$ streng monoton steigend, wähle $c \ge 1$, dann
  36. folgt:
  37. \begin{align*}
  38. &a \le b \\
  39. \iff &\ln(x) \cdot a \le \ln(x) \cdot b \le \ln(c) + \ln(x) \cdot b \\
  40. \iff &\ln(x^{a}) \le \ln(c\cdot b^{x})\\
  41. \iff & x^{a} \le c x^{b}
  42. .\end{align*}
  43. \end{proof}
  44. \item $\log_a(x) = \Theta(\log_b(x))$ $\forall a, b \in \R^{+}$
  45. \begin{proof}
  46. Seien $a, b, x \in \R^{+}$.
  47. Zu zeigen: $\exists c \in \R$: $\log_a(x) = c \cdot \log_b(x)$.
  48. \begin{align*}
  49. &\log_a(x) = \log_a(x) \\
  50. \implies & \log_a(x) = \log_a(b) \cdot \frac{\log_a(x)}{\log_a(b)} \\
  51. \implies & \log_a(x) = \log_a(b) \cdot \log_b(x)
  52. .\end{align*}
  53. Mit $c := \log_a(b)$ folgt damit:
  54. \[
  55. \log_a(x) = c \cdot \log_b(x)
  56. .\]
  57. \end{proof}
  58. \item $a^{x} = O(b^{x}) \iff 0 \le a \le b$
  59. \begin{proof}
  60. Seien $a, b, x \in \R$ mit $x \ge 0$
  61. Zu zeigen: $\exists c \in \R$: $a^{x} \le c b^{x} \iff 0 \le a \le b$
  62. \begin{align*}
  63. &0 \le a \le b \\
  64. \iff &a^{x} \le b^{x} \le b^{x+1} = b \cdot b^{x}
  65. .\end{align*}
  66. Mit $c := b$ folgt damit:
  67. \[
  68. a^{x} \le c \cdot b^{x} \iff 0 \le a \le b
  69. .\]
  70. \end{proof}
  71. \end{enumerate}
  72. \end{enumerate}
  73. \end{aufgabe}
  74. \begin{aufgabe} Klassischer Euklidischer Algorithmus
  75. Sei $a, b \in \N_0, a+b > 0$ gegeben.
  76. \[
  77. \text{ggT}(a, b) = \begin{cases}
  78. a & b =0 \\
  79. \text{ggT}(b,a) & a < b \\
  80. \text{ggT}(a - b, b) & a \ge b \\
  81. \end{cases}
  82. .\]
  83. \begin{enumerate}
  84. \item Für $a \ge b > 0$ gilt:
  85. \[
  86. \text{ggT}(a,b) = \text{ggT}(a -b, b)
  87. .\]
  88. \begin{proof}
  89. Wegen $b \neq 0$ und $a \ge b$ folgt nach Definition:
  90. \[
  91. \text{ggT}(a, b) = \text{ggT}(a -b, b)
  92. .\]
  93. \end{proof}
  94. \item Der klassische Euklidische Algorithmus terminiert.
  95. \begin{proof}
  96. Seien $(a_n)_{n\in\N} \in \N_0$ und $(b_n)_{n\in\N} \in \N_0$ Folgen mit $a_1 = a$ und
  97. $b_1 = b$.
  98. Sei $n \in \N$ beliebig.
  99. \begin{itemize}
  100. \item Falls $b_n = 0$ terminiert der Algorithmus direkt.
  101. \item
  102. Falls $a_n < b_n$, folgt nach Definition:
  103. \[
  104. a_{n+1} = b_n \text{ und } b_{n+1} = a_n < b_n
  105. .\] Damit folgt:
  106. \[
  107. b_{n+1} < b_n
  108. .\]
  109. \item Falls $a_n \ge b_n$ folgt nach Definition:
  110. \[
  111. a_{n+1} = (a_n - b_n) \in \N_0 \text{ und } b_{n+1} = b_n
  112. .\] Wegen $a_{n+1} < a_n $ folgt, dass $\exists k \in \N$: $a_{n+k} < b_n$. Dann
  113. tritt wieder der zweite Fall ein, d.h.
  114. \[
  115. b_{n+k+1} < b_n
  116. .\]
  117. \end{itemize}
  118. Damit folgt, dass $(b_n)_{n\in\N}$ für fast alle $n \in \N$ streng monoton fällt.
  119. Da $(b_n)_{n \in \N} \in \N_0$, folgt:
  120. \[
  121. \exists k \in \N\text{: } b_k = 0
  122. .\]
  123. Damit terminiert der \textit{klassische Euklidische Algorithmus} immer.
  124. \end{proof}
  125. \end{enumerate}
  126. \end{aufgabe}
  127. \begin{aufgabe}
  128. Binomialkoeffizient
  129. \begin{enumerate}[a)]
  130. \item Programm siehe \textit{binomial.cc}
  131. Für $n = 35$ und $k = 18$ benötigt das Programm mehr als 20 Sekunden für die Berechnung.
  132. Für $n = 34$ und $k = 18$ liefert das Programm $-2091005866$. Das liegt an der
  133. begrenzten Größe des Datentyps \textbf{int}. Bei Überschreitung der maximalen Größe
  134. beginnt der Wert erneut bei dem Minimalwert des Datentyps \textbf{int}. Deshalb können
  135. wir dann negative Ergebnisse erhalten.
  136. \item Der Rechenaufwand für die rekursive Berechnung des Binomialkoeffizienten ist:
  137. \begin{align*}
  138. A_{n, 0} = A_{n, n} = A_{n, k>n} = 1 \\
  139. A_{n,k} = A_{n-1, k-1} + A_{n-1, k}
  140. .\end{align*}
  141. \item Programm siehe \textit{binomial\_fast.cc}
  142. Die schnellere Variante hat die Komplexität $O(n)$, da die Komplexität der Fakultätsfunktion
  143. $O(n)$ ist und diese einfach dreimal ausgeführt wird.
  144. Programm (c) ist deutlich schneller als Programm (a) für größere Zahlen $n$ und $k$. Aufgrund
  145. der Verwendung der Fakultät, wird allerdings schneller die maximale Größe eines \textbf{int}'s
  146. erreicht. Dadurch erhalten wir bereits für recht kleine Werte für $n$ und $k$ falsche Ergebnisse.
  147. \item Ein effizienter Algorithmus berechnet jede Zeile linear iterativ, aus der vorhergehenden
  148. Zeile, damit ist die Komplexität $O(n)$.
  149. Der Unterschied entsteht daraus, dass bei (a) einzelne Binomialkoeffizienten mehrfach
  150. ausgerechnet werden müssen und bei (d) jeder Binomialkoeffizient genau einmal ausgerechnet wird.
  151. \end{enumerate}
  152. \end{aufgabe}
  153. \end{document}