\documentclass{bschlangaul-aufgabe}
\bLadePakete{java,vollstaendige-induktion}
\begin{document}
\bAufgabenMetadaten{
  Titel = {Aufgabe 4:},
  Thematik = {Catalan-Zahl},
  Referenz = 46116-2016-H.T2-TA1-A4,
  RelativerPfad = Examen/46116/2016/09/Thema-2/Teilaufgabe-1/Aufgabe-4.tex,
  ZitatSchluessel = examen:46116:2016:09,
  BearbeitungsStand = mit Lösung,
  Korrektheit = korrekt und überprüft,
  Ueberprueft = {Durch Feedback von Dozent},
  Stichwoerter = {Vollständige Induktion},
  EinzelpruefungsNr = 46116,
  Jahr = 2016,
  Monat = 09,
  ThemaNr = 2,
  TeilaufgabeNr = 1,
  AufgabeNr = 4,
}

\let\m=\bInduktionMarkierung
\let\e=\bInduktionErklaerung

Gegeben sei folgende rekursive Methodendeklaration in der Sprache Java.
Es wird als Vorbedingung vorausgesetzt, dass die Methode \bJavaCode{cn}
nur für Werte $n \geq 0$ aufgerufen wird.
\index{Vollständige Induktion}
\footcite{examen:46116:2016:09}

\begin{minted}{java}
int cn(int n) {
  if (n == 0)
    return 1;
  else
    return (4 * (n - 1) + 2) * cn(n - 1) / (n + 1);
}
\end{minted}

\noindent
Sie können im Folgenden vereinfachend annehmen, dass es keinen Überlauf
in der Berechnung gibt, \dh dass der Datentyp \bJavaCode{int} für die
Berechnung des Ergebnisses stets ausreicht.

\begin{enumerate}

%%
% a)
%%

\item Beweisen Sie mittels vollständiger Induktion, dass der
Methodenaufruf \bJavaCode{cn(n)} für jedes $n \geq 0$ die $n$-te
Catalan-Zahl $C_n$ berechnet, wobei

\begin{displaymath}
C_n =
\frac{(2n)!}
{(n + 1)! \cdot n!}
\end{displaymath}

\begin{bExkurs}[Fakultät]

Für alle natürlichen Zahlen  $n$ ist

\begin{displaymath}
n!=1\cdot 2\cdot 3\dotsm n=\prod _{k=1}^{n}k
\end{displaymath}

als das Produkt der natürlichen Zahlen von 1 bis $n$ definiert. Da das
leere Produkt stets 1 ist, gilt

\begin{displaymath}
0! = 1
\end{displaymath}

Die Fakultät lässt sich auch rekursiv definieren:

\begin{displaymath}
n!={
\begin{cases}1, & n = 0\\
n \cdot (n - 1)!, & n > 0
\end{cases}
}
\end{displaymath}

Fakultäten für negative oder nicht ganze Zahlen sind nicht definiert. Es
gibt aber eine Erweiterung der Fakultät auf solche Argumente
\bFussnoteUrl{https://de.wikipedia.org/wiki/Fakultät_(Mathematik)}
\end{bExkurs}

\begin{bExkurs}[Catalan-Zahl]
Die Catalan-Zahlen bilden eine Folge natürlicher Zahlen, die in vielen
Problemen der Kombinatorik auftritt. Sie sind nach dem belgischen
Mathematiker Eugène Charles Catalan benannt.

Die Folge der Catalan-Zahlen $C_{0},C_{1},C_{2},C_{3},\dotsc$ beginnt
mit $1, 1, 2, 5, 14, 42, 132,\dotsc$
\bFussnoteUrl{https://de.wikipedia.org/wiki/Catalan-Zahl}
\end{bExkurs}

Beim Induktionsschritt können Sie die beiden folgenden Gleichungen
verwenden:

\begin{enumerate}

\item $(2(n + 1))! = (4n + 2) \cdot (n + 1) \cdot (2n)!$

\item $(a + 2)! \cdot (n+1)! = (n + 2) \cdot (n + 1) \cdot (n + 1)! \cdot n!$
\end{enumerate}

\begin{bAntwort}
%%
%
%%

\bInduktionAnfang

\begin{align*}
C_0
& = \frac{(2 \cdot 0)!}{(0 + 1)! \cdot 0!}\\
& = \frac{0!}{1! \cdot 0!}\\
& = \frac{1}{1 \cdot 1}\\
& = \frac{1}{1}\\
& = 1\\
\end{align*}

%%
%
%%

\bInduktionVoraussetzung

\begin{align*}
C_n
& = \frac{(2n)!}{(n + 1)! \cdot n!}
\end{align*}

\newpage

%%
%
%%

\bInduktionSchritt

\bPseudoUeberschrift{Vom Code ausgehend}

\begin{align*}
C_{n+1}
& = \frac
    {(4 \cdot (\m{n + 1} - 1) + 2) \cdot \text{cn}(\m{n + 1} - 1)}
    {\m{n + 1} + 1}
& \e{Java nach Mathe}\\
%
& = \frac
    {(4\m{n} + 2) \cdot \text{cn}(\m{n})}
    {\m{n + 2}}
& \e{addiert, subtrahiert}\\
%
& = \frac
    {(4n + 2) \cdot \m{(2n)!}}
    {(n + 2) \cdot \m{(n + 1)! \cdot n!}}
& \e{für cn(n) Formel eingesetzt}\\
%
& = \frac
    {(4n + 2) \cdot (2n)! \m{\cdot (n + 1)}}
    {(n + 2) \cdot (n + 1)! \cdot n! \m{\cdot (n + 1)}}
& \e{$(n + 1)$ multipliziert} \\
%
& = \frac
    {(4n + 2) \cdot \m{(n + 1) \cdot (2n)!}}
    {(n + 2) \cdot (n + 1)! \cdot \m{(n + 1) \cdot n!}}
& \e{umsortiert} \\
%
& = \frac
    {\m{(2(n + 1))!}}
    {\m{(n + 2)! \cdot (n + 1)!}}
& \e{Hilfsgleichungen verwendet}\\
%
& = \frac
    {(2(\m{n + 1}))!}
    {((\m{n + 1}) + 1)! \cdot (\m{n + 1})!}
& \e{$(n + 1)$ verdeutlicht}\\
\end{align*}

\bPseudoUeberschrift{Mathematische Herangehensweise}

\begin{align*}
C_{n+1}
& = \frac
    {(2(\m{n + 1}))!}
    {((\m{n + 1}) + 1)! \cdot (\m{n + 1})!}
& \e{$n + 1$ in $C_n$ eingesetzt}\\
%
& = \frac
    {(2(n + 1))!}
    {(\m{n + 2})! \cdot (n + 1)!}
& \e{addiert}\\
%
& = \frac
    {(4n + 2) \cdot \m{(n + 1)} \cdot (2n)!}
    {(n + 2) \cdot \m{(n + 1)} \cdot (n + 1)! \cdot n!}
& \e{Hilfsgleichungen verwendet}\\
%
& = \frac
    {(4n + 2) \cdot (2n)!}
    {(n + 2) \cdot (n + 1)! \cdot n!}
& \e{$(n + 1)$ gekürzt} \\
%
& = \frac
    {4n + 2}
    {n + 2} \cdot \m{C_n}
& \e{Catalan-Formel ersetzt}\\
%
& = \frac
    {4((\m{n + 1}) - 1) + 2}
    {(\m{n + 1}) + 1} \cdot C_{(\m{n + 1}) - 1}
& \e{$(n + 1)$ verdeutlicht}\\
\end{align*}

\end{bAntwort}

%%
% b)
%%

\newpage

\item Geben Sie eine geeignete Terminierungsfunktion an und begründen
Sie, warum der Methodenaufruf \bJavaCode{cn(n)} für jedes $n \geq 0$
terminiert.

\begin{bAntwort}
$T(n) = n$. Diese Funktion verringert sich bei jedem Rekursionsschritt
um eins. Sie ist monoton fallend und für $T(0) = 0$ definiert. Damit
ist sie eine Terminierungsfunktion für \bJavaCode{cn(n)}.
\end{bAntwort}

\end{enumerate}
\end{document}
