WIP and fix
This commit is contained in:
parent
b53797ef75
commit
334a12cbee
2 changed files with 43 additions and 3 deletions
|
|
@ -148,12 +148,13 @@ public class Graph<T> {
|
||||||
|
|
||||||
while (nextVisitNodes.size() > 0) {
|
while (nextVisitNodes.size() > 0) {
|
||||||
|
|
||||||
|
allVisitedNodes.add(nextVisitNodes.get(0));
|
||||||
|
|
||||||
nextVisitNodes.addAll(getEdges(nextVisitNodes.get(0)).stream()
|
nextVisitNodes.addAll(getEdges(nextVisitNodes.get(0)).stream()
|
||||||
.map(x -> x.getNodeB())
|
.map(x -> x.getNodeB())
|
||||||
.filter(x -> !allVisitedNodes.contains(x))
|
.filter(x -> !allVisitedNodes.contains(x))
|
||||||
.collect(Collectors.toList()));
|
.collect(Collectors.toList()));
|
||||||
|
|
||||||
allVisitedNodes.add(nextVisitNodes.get(0));
|
|
||||||
nextVisitNodes.remove(0);
|
nextVisitNodes.remove(0);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,30 @@
|
||||||
|
|
||||||
Der Algorithmus für die Bildung der Kanten ist folgender:
|
Der Algorithmus für die Bildung der Kanten ist folgender:
|
||||||
|
|
||||||
tbc
|
\begin{algorithm}
|
||||||
|
\caption{Bildung von Kanten}\label{euclid}
|
||||||
|
\begin{algorithmic}[1]
|
||||||
|
\Procedure{generateEdges}{}
|
||||||
|
\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{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{append first element of } nextVisitNodes \text{ to } allVisitedNodes$
|
||||||
|
\State $\text{delete first element of } nextVisitNodes$
|
||||||
|
\BState \emph{end loop}
|
||||||
|
\EndProcedure
|
||||||
|
\end{algorithmic}
|
||||||
|
\end{algorithm}
|
||||||
|
|
||||||
\subsection{Überprüfung der Erreichbarkeit aller Knoten}
|
\subsection{Überprüfung der Erreichbarkeit aller Knoten}
|
||||||
|
|
||||||
|
|
@ -45,14 +68,30 @@
|
||||||
\If {$nextVisitNodes \text{ is empty}$}
|
\If {$nextVisitNodes \text{ is empty}$}
|
||||||
break
|
break
|
||||||
\EndIf
|
\EndIf
|
||||||
|
\State $\text{append first element of } nextVisitNodes \text{ to } allVisitedNodes$
|
||||||
\State $\text{neighborsOf first element of } nextVisitNodes$
|
\State $\text{neighborsOf first element of } nextVisitNodes$
|
||||||
\State $\rightarrow \text{filter out all } x \text{ where } allVisitedNodes \text{ contains } x$
|
\State $\rightarrow \text{filter out all } x \text{ where } allVisitedNodes \text{ contains } x$
|
||||||
\State $\rightarrow \text{append to } nextVisitNodes$
|
\State $\rightarrow \text{append to } nextVisitNodes$
|
||||||
\State $\text{append first element of } nextVisitNodes \text{ to } allVisitedNodes$
|
|
||||||
\State $\text{delete first element of } nextVisitNodes$
|
\State $\text{delete first element of } nextVisitNodes$
|
||||||
\BState \emph{end loop}
|
\BState \emph{end loop}
|
||||||
\EndProcedure
|
\EndProcedure
|
||||||
\end{algorithmic}
|
\end{algorithmic}
|
||||||
\end{algorithm}
|
\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.
|
||||||
|
|
||||||
\end{document}
|
\end{document}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue