Dieses Blatt soll eine beispielhafte Abgabe für Algorithmen und Datenstrukturen darstellen.
Dabei sollen vor allem nützliche \LaTeX{}-Befehle für die ersten Blätter gezeigt werden.
Ein Blick in die \texttt{main.tex} Datei lohnt sich also, aus der natürlich auch Code für Abgaben kopiert werden darf.
\section*{Aufgabe 1}
\begin{claim}
Es gilt für alle $n \in\Nat$,
\[
\sum_{k=1}^{n}k =\frac{n(n+1)}{2}.
\]
\end{claim}
\begin{proof}
Wir führen den Beweis mittels Induktion. Dafür zeigen wir zuerst den \emph{Induktionsanfang} für $n =1$, wobei sofort gilt
\[\sum_{k=1}^{1}k =1=\frac{1(1+1)}{2}\]
Unsere \emph{Induktionsvorraussetzung}$V(i)$ ist dabei
\[\sum_{k=1}^{i}i =\frac{i(i+1)}{2}.\]
Nun gilt es den \emph{Induktionsschritt} zu zeigen, also das $V(i)\implies V(i +1)$ gilt. Wir können also annehmen, dass $V(i)$ gilt, und wollen $V(i +1)$ beweisen.
\[
\sum_{k=1}^{i +1}i =
(\sum_{k=1}^{i}i)+(i +1)\eqText{V(i)}
\frac{i(i+1)}{2}+(i +1)=
\frac{i^2+ i}{2}+\frac{2i +2}{2}=\]
\[
\frac{i^2+3i +2}{2}=
\frac{(i+1)(i+2)}{2}.
\]
\end{proof}
\section*{Aufgabe 2}
Wir beschreiben einen Algorithms der überprüft, ob eine gegebene Zahl $n \in\Nat$ eine Quadratzahl ist.
Also ob eine Zahl $i \in\Nat$ existiert, sodass $i^2= n$ gilt.
\begin{lstlisting}
bool quadrat(int n) {
Eingabe: $n \in\Nat$
Ausgabe: 'true' wenn $n$ Quadratzahl, 'false' sonst
for(int i = 0; i <= n; ++i) {
if(i * i == n) {
return true;
}
}
return false;
}
\end{lstlisting}
\begin{claim}
Der Algorithmus \texttt{quadrat} terminiert nach einer Laufzeit \calO{n} und gibt \texttt{true} aus, genau dann wenn $n \in\Nat$ eine Quadratzahl ist.
\end{claim}
\begin{proof} Wir zeigen die einzelnen Aussagen für die Korrektheit, Terminierung und Laufzeit separat.
\begin{enumerate}
\item\emph{Korrektheit:}
Wenn $n \in\Nat$ eine Quadratzahl ist, dann muss ein $i \in\{0, \dots{}, n\}$ die Wurzel sein.
Der Algorithmus testet alle $0, \dots{}, n$ darauf, ob sie die Wurzel von $n$ sind, und ist deshalb korrekt.
\item\emph{Terminierung:}
Der Algorithmus terminiert nach höchstens $n +1$ Iterationen der Schleife.
\item\emph{Laufzeit:}
Aus der Terminierung ergibt sich eine Laufzeit von $\calO{n}$.
\end{enumerate}
\end{proof}
\section*{Weitere nützliche Befehle}
Hier eine Liste weiterer Befehle die auf den ersten Abgabeblättern nützlich werden könnten:
Abbildung~\ref{fig:graph} enthält einen Graphen. Um einfach Abbildungen zu erstellen kann zum Beispiel Tools wie \url{www.draw.io} verwenden oder Zeichnungen mit dem Handy abfotografieren.
\begin{figure}
\includegraphics[scale=0.75]{images/cfi.png}
\centering
\caption{Ein Graph.}\label{fig:graph}
\end{figure}
\paragraph{Fallunterscheidung.} Die Formel \eqref{eq:fibonacci} beschreibt die Fibonacci Folge.
\begin{equation}\label{eq:fibonacci}
f(n) =
\begin{cases}
f(n - 1) + f(n - 2) &\text{ wenn } n > 1\\
1 &\text{ wenn } n \leq 1.
\end{cases}
\end{equation}
\paragraph{Tabellen.}
Tabelle~\ref{tab:tabelle} enthält keine Informationen. Auf \url{www.tablesgenerator.com/} kann man auch über eine GUI Tabellen eingeben und in \LaTeX{}-Tabellen umwandeln lassen.
\begin{table}[tbp]
\begin{tabular}{| l | c | r |}
\hline
1 & 2 & 3 \\\hline
a & b & c \\
d & e & f \\\hline
\end{tabular}
\centering
\caption{Eine Tabelle}\label{tab:tabelle}
\end{table}
\paragraph{Weitere nützliche Links.}
\begin{enumerate}
\item Detexify (\url{detexify.kirelabs.org/}): Versucht von Hand gezeichnete Symbole in \LaTeX{}-Befehle umzuwandeln.
\item Liste von mathematischen Symbolen und Befehlen (\url{en.wikibooks.org/wiki/LaTeX/Mathematics}).
\item Liste von Farben (\url{www.namsu.de/Extra/pakete/Xcolor.html}).
\item Falls noch mehr Interesse an \LaTeX{} besteht, empfehlen wir als Lektüre die ``Not So Short Introduction to \LaTeXe'' (\url{http://tug.ctan.org/info/lshort/english/lshort.pdf}). Das ist aber keinesfalls notwendig, um gute Abgaben zu erstellen.