\documentclass{bschlangaul-aufgabe}
\bLadePakete{java,mathe}
\begin{document}
\bAufgabenMetadaten{
  Titel = {Aufgabe 7},
  Thematik = {Methode „a()“},
  Referenz = 46115-2016-H.T2-A4,
  RelativerPfad = Examen/46115/2016/09/Thema-2/Aufgabe-4.tex,
  ZitatSchluessel = examen:46115:2016:09,
  ZitatBeschreibung = {Thema 2 Aufgabe
4},
  BearbeitungsStand = mit Lösung,
  Korrektheit = unbekannt,
  Ueberprueft = {unbekannt},
  Stichwoerter = {Dynamische Programmierung},
  EinzelpruefungsNr = 46115,
  Jahr = 2016,
  Monat = 09,
  ThemaNr = 2,
  AufgabeNr = 4,
}

Mittels\index{Dynamische Programmierung} \footcite[Thema 2 Aufgabe
4]{examen:46115:2016:09} Dynamischer Programmierung (auch Memoization
genannt) kann man insbesondere rekursive Lösungen auf Kosten des
Speicherbedarf beschleunigen, indem man Zwischenergebnisse „abspeichert
“ und bei (wiederkehrendem) Bedarf „abruft“, ohne sie erneut berechnen
zu müssen.
\footcite[Aufgabe 7]{aud:pu:7}

\bigskip

\noindent
Gegeben sei folgende geschachtelt-rekursive Funktion für $n, m \geq 0$:

\begin{equation*}
a(n, m) =
\begin{cases}
n + \lfloor \frac{n}{2} \rfloor &
\text{falls}\ m = 0\\

a(1, m-1), &
\text{falls}\ n = 0 \land m \neq 0 \\

a(n + \lfloor \sqrt{a(n-1,m)} \rfloor, m - 1), &
sonst \\
\end{cases}
\end{equation*}

\begin{enumerate}
\item Implementieren Sie die obige Funktion \bJavaCode{a(n,m)} zunächst ohne
weitere Optimierungen als Prozedur/Methode in einer Programmiersprache
Ihrer Wahl.

\begin{bAntwort}
\bJavaExamen[firstline=4,lastline=12]{46115}{2016}{09}{DynamischeProgrammierung}
\end{bAntwort}

\item Geben Sie nun eine DP-Implementierung der Funktion \bJavaCode{a(n,m)}
an, die \bJavaCode{a(n,m)} für $0 \geq n \geq 100000$ und $0 \geq m \geq 25$
höchstens einmal gemäß obiger rekursiver Definition berechnet. Beachten
Sie, dass Ihre Prozedur trotzdem auch weiterhin mit $n > 100000$ und $m
> 25$ aufgerufen werden können soll.

\begin{bAntwort}
\bJavaExamen[firstline=14,lastline=33]{46115}{2016}{09}{DynamischeProgrammierung}
\end{bAntwort}
\end{enumerate}

\begin{bAntwort}
\bPseudoUeberschrift{Kompletter Code}
\bJavaExamen{46115}{2016}{09}{DynamischeProgrammierung}
\end{bAntwort}
\end{document}
