Finish 3.1.2
This commit is contained in:
parent
526d15f2c7
commit
6102da73fa
2 changed files with 63 additions and 15 deletions
|
|
@ -36,7 +36,25 @@
|
|||
\end{algorithm}
|
||||
|
||||
% Erklärung des Algorithmus
|
||||
|
||||
Der Algorithmus ist in zwei Schritte aufgeteilt:
|
||||
\begin{itemize}
|
||||
\item Minimale Verbindung von allen Burgen
|
||||
\item Ästhetische Verbesserung der Kanten
|
||||
\end{itemize}
|
||||
|
||||
Die minimale Verbindung aller Burgen erfolgt, indem
|
||||
sichergestellt wird, dass jede Burg mit einer anderen
|
||||
verbunden ist und dass alle Burgen in einer gemeinsamen
|
||||
Verbindung zusammenhängen. Der Algorithmus fängt bei
|
||||
einer bestimmten Start-Burg an und verbindet diese Burg
|
||||
mit der nächstliegenden Burg, die noch nicht verbunden
|
||||
wurde. Daraufhin wird das gleiche mit der nächsten,
|
||||
übernächsten, usw. Burg getan, bis die letzte Burg erreicht
|
||||
wurde. Zu diesem Zeitpunkt sind alle Burgen durch eine
|
||||
Linie verbunden.
|
||||
|
||||
Die Ästhetische Verbesserung erfolgt, indem alle Burgen
|
||||
im Umkreis einer Burg durch eine Kante verbunden werden.
|
||||
|
||||
\subsection{Überprüfung der Erreichbarkeit aller Knoten}
|
||||
|
||||
|
|
@ -68,21 +86,30 @@
|
|||
\end{algorithmic}
|
||||
\end{algorithm}
|
||||
|
||||
Der Algorithmus verwendet zwei unterschiedliche Datentypen:
|
||||
|
||||
\begin{itemize}
|
||||
\item HashSet wird verwendet, um die bisher
|
||||
besuchten Knoten zu speichern.
|
||||
\item ArrayDeque wird verwendet, um die nächsten
|
||||
Knoten, die besucht werden, zu speichern.
|
||||
\end{itemize}
|
||||
|
||||
Der Algorithmus sammelt sozusagen alle Knoten, die
|
||||
aufgrund von momentanen Erkenntnissen erreichbar
|
||||
sind, in der Liste \texttt{nextVisitNodes}. Hingegen sind
|
||||
alle Knoten, die schon erreicht worden sind, in der Liste
|
||||
sind, in der ArrayDeque \texttt{nextVisitNodes}. Hingegen sind
|
||||
alle Knoten, die schon erreicht worden sind, in dem HashSet
|
||||
\texttt{allVisitedNodes} gespeichert.
|
||||
|
||||
Der Algorithmus geht die Liste \texttt{nextVisitNodes}
|
||||
Der Algorithmus geht die ArrayDeque \texttt{nextVisitNodes}
|
||||
solange durch, bis diese leer ist. In jeder Iteration wird
|
||||
das erste Element der Liste aus der Liste entfernt.
|
||||
Zunächst wird dieses Element der Liste \texttt{allVisitedNodes}
|
||||
Zunächst wird dieses Element dem HashSet \texttt{allVisitedNodes}
|
||||
hinzugefügt. Daraufhin
|
||||
werden die Nachbarn dieses Elements herausgefunden. Diejenigen
|
||||
Nachbarn, die schon in der Liste \texttt{allVisitedNodes}
|
||||
Nachbarn, die schon in dem HashSet \texttt{allVisitedNodes}
|
||||
vorhanden sind, werden verworfen. Die restlichen Nachbarn
|
||||
werden der Liste \texttt{nextVisitNodes} hinzugefügt.
|
||||
werden der ArrayDeque \texttt{nextVisitNodes} hinzugefügt.
|
||||
|
||||
\subsection{Wege finden}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue