This commit is contained in:
joachimschmidt557 2019-03-24 21:00:27 +01:00
parent 3e5e48898f
commit 738e9c44fd

View file

@ -3,6 +3,7 @@
\usepackage{amsmath} \usepackage{amsmath}
\usepackage{algorithm} \usepackage{algorithm}
\usepackage[noend]{algpseudocode} \usepackage[noend]{algpseudocode}
\usepackage{hyperref}
\usepackage[utf8]{inputenc} \usepackage[utf8]{inputenc}
@ -17,11 +18,14 @@
\tableofcontents \tableofcontents
\pagebreak
\section{Der Graph} \section{Der Graph}
\subsection{Bildung der Kanten} \subsection{Bildung der Kanten}
Der Algorithmus für die Bildung der Kanten ist folgender: Der Algorithmus für die Bildung der Kanten ist eine
Version des \href{https://de.wikipedia.org/wiki/Algorithmus_von_Prim}{Algorithmus von Prim}:
\begin{algorithm} \begin{algorithm}
\caption{Bildung von Kanten}\label{generate} \caption{Bildung von Kanten}\label{generate}
@ -30,12 +34,13 @@ Der Algorithmus für die Bildung der Kanten ist folgender:
\If{nodes is empty} return \EndIf \If{nodes is empty} return \EndIf
\State $castle \gets allCastles[0]$ \State $castle \gets allCastles[0]$
\State $remainingCastles \gets allCastles$ \State $remainingCastles \gets allCastles$
\State $connectedCastles \gets empty$
\Loop \Loop
\If{$remainingCastles$ is empty} break \If{$remainingCastles$ is empty} break
\EndIf \EndIf
\State connect $castle$ to nearest castle \State connect $castle$ to nearest castle
\State $castle \gets nearest castle$
\State remove $castle$ from $remainingCastles$ \State remove $castle$ from $remainingCastles$
\State add $castle$ to $connectedCastles$
\EndLoop \EndLoop
\ForAll{castle in allCastles} \ForAll{castle in allCastles}
\ForAll{nearCastle in allCastlesInRadius(castle)} \ForAll{nearCastle in allCastlesInRadius(castle)}
@ -61,8 +66,8 @@ einer bestimmten Start-Burg an und verbindet diese Burg
mit der nächstliegenden Burg, die noch nicht verbunden mit der nächstliegenden Burg, die noch nicht verbunden
wurde. Daraufhin wird das gleiche mit der nächsten, wurde. Daraufhin wird das gleiche mit der nächsten,
übernächsten, usw. Burg getan, bis die letzte Burg erreicht übernächsten, usw. Burg getan, bis die letzte Burg erreicht
wurde. Zu diesem Zeitpunkt sind alle Burgen durch eine wurde. Zu diesem Zeitpunkt sind alle Burgen durch einen
Linie verbunden. Graph verbunden.
Die Ästhetische Verbesserung erfolgt, indem alle Burgen Die Ästhetische Verbesserung erfolgt, indem alle Burgen
im Umkreis einer Burg durch eine Kante verbunden werden. im Umkreis einer Burg durch eine Kante verbunden werden.
@ -127,6 +132,8 @@ werden der ArrayDeque \texttt{nextVisitNodes} hinzugefügt.
\subsection{Wege finden} \subsection{Wege finden}
\subsubsection{Teil (a)} \subsubsection{Teil (a)}
Eine pseudocode-Darstellung des Algorithmus:
\begin{algorithm} \begin{algorithm}
\caption{Berechnung der Distanzen}\label{path} \caption{Berechnung der Distanzen}\label{path}
\begin{algorithmic}[1] \begin{algorithmic}[1]
@ -150,6 +157,7 @@ werden der ArrayDeque \texttt{nextVisitNodes} hinzugefügt.
\end{algorithmic} \end{algorithmic}
\end{algorithm} \end{algorithm}
Die algorithmische Komplexität im worst-case ist:
$$O(n^2)$$ $$O(n^2)$$
@ -190,7 +198,7 @@ $$O(n)$$
Sei $n$ die Anzahl an Knoten. Sei $n$ die Anzahl an Knoten.
Invariante: Nach $h \geq 0$ Durchläufen gilt: \textbf{Invariante}: Nach $h \geq 0$ Durchläufen gilt:
\texttt{availableNodes}, die Liste von Knoten, die \texttt{availableNodes}, die Liste von Knoten, die
noch nicht bearbeitet wurden enthält $n - h$ Elemente. noch nicht bearbeitet wurden enthält $n - h$ Elemente.
@ -199,10 +207,16 @@ Knoten, also alle $n - h$ größten Knoten.
Für alle noch nicht abgearbeiteten Knoten gilt: Für alle noch nicht abgearbeiteten Knoten gilt:
Für alle abgearbeiteten Knoten gilt: Für alle abgearbeiteten Knoten gilt:
\subsection{Kürzester Pfad zu allen Knoten} \subsection{Kürzester Pfad zu allen Knoten}
\subsubsection{Teil (a)}
\subsubsection{Teil (b)}
\section{Weitergestaltung des Spiels} \section{Weitergestaltung des Spiels}
\subsection{Computergegner} \subsection{Computergegner}