findVertexByWeight() Erster nachbarknoten der besucht wird, ist immer der mit geringstem gewicht implementiert

This commit is contained in:
2021-01-18 15:35:11 +01:00
parent 9b9c6ce867
commit 28ec0827cc
7 changed files with 69 additions and 14 deletions

View File

@@ -84,6 +84,16 @@ public class Breitensuche {
return false;
}
public List<Vertex> copyList(List<Vertex>list){
list.toFirst();
List<Vertex> copy = new List<Vertex>();
while(list.hasAccess()){
copy.append(list.getContent());
list.next();
}
return copy;
}
/**
*
* @param pVertexID
@@ -99,6 +109,7 @@ public class Breitensuche {
// Nutze dazu die Hilfsmethode getVertexFromListByID, um aus
// Liste der Nachbarknoten denjenigen, der alphabetisch als
// erstes kommt herauszusuchen.
return false;
}
@@ -106,12 +117,39 @@ public class Breitensuche {
g.setAllVertexMarks(false); // Markierungen zurücksetzen
Queue<Vertex> searchQueue = new Queue<>(); // Speicher für zu bearbeitende Knoten erstellen
// TODO: Ändere die Breitensuche so ab, dass die Knoten so abgearbeitet
// Finished: Ändere die Breitensuche so ab, dass die Knoten so abgearbeitet
// werden, dass der Nachbarknoten mit der Kante mit dem geringsten
// Gewicht zuerst besucht wird.
// Nutze dazu die Hilfsmethode getVertexFromListByWeight, um aus
// Liste der Nachbarknoten denjenigen mit dem geringsten Gewicht
// herauszusuchen.
if(g.getVertex("Köln").getID().equals(pVertexID)){
System.out.println("Köln gefunden");
return true;
} else {
g.getVertex("Köln").setMark(true);
searchQueue.enqueue(g.getVertex("Köln"));
while(!searchQueue.isEmpty()){
Vertex v = searchQueue.front();
List<Vertex> cngbrs=copyList(g.getNeighbours(v));
cngbrs.toFirst();
while(cngbrs.hasAccess()){
Vertex vs = getVertexFromListByWeight(v,cngbrs);
if(!vs.isMarked()){
System.out.println(vs.getID());
if(vs.getID().equals(pVertexID)){
System.out.println(vs.getID() +" gefunden");
return true;
}
vs.setMark(true);
searchQueue.enqueue(vs);
}
}
searchQueue.dequeue();
}
}
System.out.println(pVertexID +" Nicht gefunden");
return false;
}