91 lines
2.7 KiB
TeX
91 lines
2.7 KiB
TeX
\documentclass{article}
|
|
|
|
\usepackage{amsmath}
|
|
\usepackage{algorithm}
|
|
\usepackage[noend]{algpseudocode}
|
|
|
|
\usepackage[utf8]{inputenc}
|
|
|
|
\makeatletter
|
|
\def\BState{\State\hskip-\ALG@thistlm}
|
|
\makeatother
|
|
|
|
\title{FOP Projektgruppe 175}
|
|
\author{Steffen Wagner\\
|
|
Dennis Weinberger\\
|
|
Jonas Süß\\
|
|
Joachim Schmidt}
|
|
|
|
\begin{document}
|
|
\maketitle
|
|
|
|
\tableofcontents
|
|
|
|
\section{Der Graph}
|
|
|
|
\subsection{Bildung der Kanten}
|
|
|
|
Der Algorithmus für die Bildung der Kanten ist folgender:
|
|
|
|
\begin{algorithm}
|
|
\caption{Bildung von Kanten}\label{euclid}
|
|
\begin{algorithmic}[1]
|
|
\Procedure{generateEdges}{}
|
|
\EndProcedure
|
|
\end{algorithmic}
|
|
\end{algorithm}
|
|
|
|
% Erklärung des Algorithmus
|
|
|
|
|
|
\subsection{Überprüfung der Erreichbarkeit aller Knoten}
|
|
|
|
Der Algorithmus, der prüft, ob alle Knoten erreichbar sind, ist
|
|
folgender:
|
|
|
|
\begin{algorithm}
|
|
\caption{Erreichbarkeit aller Knoten}\label{euclid}
|
|
\begin{algorithmic}[1]
|
|
\Procedure{allNodesConnected}{}
|
|
\State $\textit{firstNode} \gets \text{first element of }\textit{nodes}$
|
|
\State $allVisitedNodes \gets \textit{empty}$
|
|
\State $nextVisitNodes \gets empty$
|
|
\State $\text{append } firstNode \text{ to } allVisitedNodes$
|
|
\State $\text{neighborsOf } firstNode$
|
|
\State $\rightarrow \text{filter out all } x \text{ where } allVisitedNodes \text{ contains } x$
|
|
\State $\rightarrow \text{append to } nextVisitNodes$
|
|
\BState \emph{loop}
|
|
\If {$nextVisitNodes \text{ is empty}$}
|
|
break
|
|
\EndIf
|
|
\State $\text{append first element of } nextVisitNodes \text{ to } allVisitedNodes$
|
|
\State $\text{neighborsOf first element of } nextVisitNodes$
|
|
\State $\rightarrow \text{filter out all } x \text{ where } allVisitedNodes \text{ contains } x$
|
|
\State $\rightarrow \text{append to } nextVisitNodes$
|
|
\State $\text{delete first element of } nextVisitNodes$
|
|
\BState \emph{end loop}
|
|
\EndProcedure
|
|
\end{algorithmic}
|
|
\end{algorithm}
|
|
|
|
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
|
|
\texttt{allVisitedNodes} gespeichert.
|
|
|
|
Der Algorithmus geht die Liste \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}
|
|
hinzugefügt. Daraufhin
|
|
werden die Nachbarn dieses Elements herausgefunden. Diejenigen
|
|
Nachbarn, die schon in der Liste \texttt{allVisitedNodes}
|
|
vorhanden sind, werden verworfen. Die restlichen Nachbarn
|
|
werden der Liste \texttt{nextVisitNodes} hinzugefügt.
|
|
|
|
\subsection{Wege finden}
|
|
|
|
\subsection{Kürzester Pfad zu allen Knoten}
|
|
|
|
\end{document}
|