forked from IF-LK-2020/breitensuche
Optimisierungen aus dem Unterricht
This commit is contained in:
@@ -55,12 +55,12 @@ public class Breitensuche {
|
||||
// Erstelle Varianten, bei denen die Reihenfolge der Nachbarknoten
|
||||
// modifiziert ist. Dazu
|
||||
|
||||
if(g.getVertex("Köln").getID().equals(pVertexID)){
|
||||
System.out.println("Köln gefunden");
|
||||
if(g.getVertices().getContent().getID().equals(pVertexID)){
|
||||
System.out.println(g.getVertices().getContent().getID() + "gefunden");
|
||||
return true;
|
||||
} else {
|
||||
g.getVertex("Köln").setMark(true);
|
||||
searchQueue.enqueue(g.getVertex("Köln"));
|
||||
g.getVertices().getContent().setMark(true);
|
||||
searchQueue.enqueue(g.getVertex(g.getVertices().getContent().getID()));
|
||||
while(!searchQueue.isEmpty()){
|
||||
Vertex v = searchQueue.front();
|
||||
List<Vertex> ngbrs = g.getNeighbours(v);
|
||||
@@ -84,15 +84,6 @@ 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;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -102,22 +93,22 @@ public class Breitensuche {
|
||||
public boolean findVertexByID( String pVertexID ) {
|
||||
g.setAllVertexMarks(false); // Markierungen zurücksetzen
|
||||
Queue<Vertex> searchQueue = new Queue<>(); // Speicher für zu bearbeitende Knoten erstellen
|
||||
|
||||
//copylist entfernen
|
||||
// TODO: Ändere die Breitensuche so ab, dass die Knoten so abgearbeitet
|
||||
// werden, dass die Nachbarknoten in alphabetischer Reihenfolge
|
||||
// besucht werden.
|
||||
// Nutze dazu die Hilfsmethode getVertexFromListByID, um aus
|
||||
// Liste der Nachbarknoten denjenigen, der alphabetisch als
|
||||
// erstes kommt herauszusuchen.
|
||||
if(g.getVertex("Düsseldorf").getID().equals(pVertexID)){
|
||||
System.out.println("Köln gefunden");
|
||||
if(g.getVertices().getContent().getID().equals(pVertexID)){
|
||||
System.out.println(g.getVertices().getContent().getID() + "gefunden");
|
||||
return true;
|
||||
} else {
|
||||
g.getVertex("Düsseldorf").setMark(true);
|
||||
searchQueue.enqueue(g.getVertex("Düsseldorf"));
|
||||
g.getVertices().getContent().setMark(true);
|
||||
searchQueue.enqueue(g.getVertices().getContent());
|
||||
while(!searchQueue.isEmpty()){
|
||||
Vertex v = searchQueue.front();
|
||||
List<Vertex> cngbrs=copyList(g.getNeighbours(v));
|
||||
List<Vertex> cngbrs=g.getNeighbours(v);
|
||||
cngbrs.toFirst();
|
||||
while(cngbrs.hasAccess()){
|
||||
Vertex vs = getVertexFromListByID(cngbrs);
|
||||
@@ -150,15 +141,16 @@ public class Breitensuche {
|
||||
// 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");
|
||||
if(g.getVertices().getContent().getID().equals(pVertexID)){
|
||||
System.out.println(g.getVertices().getContent().getID() + "gefunden");
|
||||
return true;
|
||||
} else {
|
||||
g.getVertex("Köln").setMark(true);
|
||||
searchQueue.enqueue(g.getVertex("Köln"));
|
||||
g.getVertices().getContent().setMark(true);
|
||||
searchQueue.enqueue(g.getVertices().getContent());
|
||||
while(!searchQueue.isEmpty()){
|
||||
Vertex v = searchQueue.front();
|
||||
List<Vertex> cngbrs=copyList(g.getNeighbours(v));
|
||||
List<Vertex> cngbrs=g.getNeighbours(v);
|
||||
cngbrs.toFirst();
|
||||
while(cngbrs.hasAccess()){
|
||||
Vertex vs = getVertexFromListByWeight(v,cngbrs);
|
||||
cngbrs.toFirst();
|
||||
|
||||
Reference in New Issue
Block a user