forked from IF-LK-2020/breitensuche
Optimisierungen aus dem Unterricht
This commit is contained in:
Binary file not shown.
@@ -55,12 +55,12 @@ public class Breitensuche {
|
|||||||
// Erstelle Varianten, bei denen die Reihenfolge der Nachbarknoten
|
// Erstelle Varianten, bei denen die Reihenfolge der Nachbarknoten
|
||||||
// modifiziert ist. Dazu
|
// modifiziert ist. Dazu
|
||||||
|
|
||||||
if(g.getVertex("Köln").getID().equals(pVertexID)){
|
if(g.getVertices().getContent().getID().equals(pVertexID)){
|
||||||
System.out.println("Köln gefunden");
|
System.out.println(g.getVertices().getContent().getID() + "gefunden");
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
g.getVertex("Köln").setMark(true);
|
g.getVertices().getContent().setMark(true);
|
||||||
searchQueue.enqueue(g.getVertex("Köln"));
|
searchQueue.enqueue(g.getVertex(g.getVertices().getContent().getID()));
|
||||||
while(!searchQueue.isEmpty()){
|
while(!searchQueue.isEmpty()){
|
||||||
Vertex v = searchQueue.front();
|
Vertex v = searchQueue.front();
|
||||||
List<Vertex> ngbrs = g.getNeighbours(v);
|
List<Vertex> ngbrs = g.getNeighbours(v);
|
||||||
@@ -84,15 +84,6 @@ public class Breitensuche {
|
|||||||
return false;
|
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 ) {
|
public boolean findVertexByID( String pVertexID ) {
|
||||||
g.setAllVertexMarks(false); // Markierungen zurücksetzen
|
g.setAllVertexMarks(false); // Markierungen zurücksetzen
|
||||||
Queue<Vertex> searchQueue = new Queue<>(); // Speicher für zu bearbeitende Knoten erstellen
|
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
|
// TODO: Ändere die Breitensuche so ab, dass die Knoten so abgearbeitet
|
||||||
// werden, dass die Nachbarknoten in alphabetischer Reihenfolge
|
// werden, dass die Nachbarknoten in alphabetischer Reihenfolge
|
||||||
// besucht werden.
|
// besucht werden.
|
||||||
// Nutze dazu die Hilfsmethode getVertexFromListByID, um aus
|
// Nutze dazu die Hilfsmethode getVertexFromListByID, um aus
|
||||||
// Liste der Nachbarknoten denjenigen, der alphabetisch als
|
// Liste der Nachbarknoten denjenigen, der alphabetisch als
|
||||||
// erstes kommt herauszusuchen.
|
// erstes kommt herauszusuchen.
|
||||||
if(g.getVertex("Düsseldorf").getID().equals(pVertexID)){
|
if(g.getVertices().getContent().getID().equals(pVertexID)){
|
||||||
System.out.println("Köln gefunden");
|
System.out.println(g.getVertices().getContent().getID() + "gefunden");
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
g.getVertex("Düsseldorf").setMark(true);
|
g.getVertices().getContent().setMark(true);
|
||||||
searchQueue.enqueue(g.getVertex("Düsseldorf"));
|
searchQueue.enqueue(g.getVertices().getContent());
|
||||||
while(!searchQueue.isEmpty()){
|
while(!searchQueue.isEmpty()){
|
||||||
Vertex v = searchQueue.front();
|
Vertex v = searchQueue.front();
|
||||||
List<Vertex> cngbrs=copyList(g.getNeighbours(v));
|
List<Vertex> cngbrs=g.getNeighbours(v);
|
||||||
cngbrs.toFirst();
|
cngbrs.toFirst();
|
||||||
while(cngbrs.hasAccess()){
|
while(cngbrs.hasAccess()){
|
||||||
Vertex vs = getVertexFromListByID(cngbrs);
|
Vertex vs = getVertexFromListByID(cngbrs);
|
||||||
@@ -150,15 +141,16 @@ public class Breitensuche {
|
|||||||
// Nutze dazu die Hilfsmethode getVertexFromListByWeight, um aus
|
// Nutze dazu die Hilfsmethode getVertexFromListByWeight, um aus
|
||||||
// Liste der Nachbarknoten denjenigen mit dem geringsten Gewicht
|
// Liste der Nachbarknoten denjenigen mit dem geringsten Gewicht
|
||||||
// herauszusuchen.
|
// herauszusuchen.
|
||||||
if(g.getVertex("Köln").getID().equals(pVertexID)){
|
if(g.getVertices().getContent().getID().equals(pVertexID)){
|
||||||
System.out.println("Köln gefunden");
|
System.out.println(g.getVertices().getContent().getID() + "gefunden");
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
g.getVertex("Köln").setMark(true);
|
g.getVertices().getContent().setMark(true);
|
||||||
searchQueue.enqueue(g.getVertex("Köln"));
|
searchQueue.enqueue(g.getVertices().getContent());
|
||||||
while(!searchQueue.isEmpty()){
|
while(!searchQueue.isEmpty()){
|
||||||
Vertex v = searchQueue.front();
|
Vertex v = searchQueue.front();
|
||||||
List<Vertex> cngbrs=copyList(g.getNeighbours(v));
|
List<Vertex> cngbrs=g.getNeighbours(v);
|
||||||
|
cngbrs.toFirst();
|
||||||
while(cngbrs.hasAccess()){
|
while(cngbrs.hasAccess()){
|
||||||
Vertex vs = getVertexFromListByWeight(v,cngbrs);
|
Vertex vs = getVertexFromListByWeight(v,cngbrs);
|
||||||
cngbrs.toFirst();
|
cngbrs.toFirst();
|
||||||
|
|||||||
@@ -1,21 +1,21 @@
|
|||||||
#BlueJ package file
|
#BlueJ package file
|
||||||
dependency1.from=BreitensucheTest
|
dependency1.from=Graph
|
||||||
dependency1.to=Breitensuche
|
dependency1.to=List
|
||||||
dependency1.type=UsesDependency
|
dependency1.type=UsesDependency
|
||||||
dependency10.from=Breitensuche
|
dependency10.from=Breitensuche
|
||||||
dependency10.to=List
|
dependency10.to=List
|
||||||
dependency10.type=UsesDependency
|
dependency10.type=UsesDependency
|
||||||
dependency2.from=Graph
|
dependency2.from=Graph
|
||||||
dependency2.to=List
|
dependency2.to=Vertex
|
||||||
dependency2.type=UsesDependency
|
dependency2.type=UsesDependency
|
||||||
dependency3.from=Graph
|
dependency3.from=Graph
|
||||||
dependency3.to=Vertex
|
dependency3.to=Edge
|
||||||
dependency3.type=UsesDependency
|
dependency3.type=UsesDependency
|
||||||
dependency4.from=Graph
|
dependency4.from=Edge
|
||||||
dependency4.to=Edge
|
dependency4.to=Vertex
|
||||||
dependency4.type=UsesDependency
|
dependency4.type=UsesDependency
|
||||||
dependency5.from=Edge
|
dependency5.from=BreitensucheTest
|
||||||
dependency5.to=Vertex
|
dependency5.to=Breitensuche
|
||||||
dependency5.type=UsesDependency
|
dependency5.type=UsesDependency
|
||||||
dependency6.from=Breitensuche
|
dependency6.from=Breitensuche
|
||||||
dependency6.to=Graph
|
dependency6.to=Graph
|
||||||
@@ -39,8 +39,8 @@ package.divider.horizontal=0.6
|
|||||||
package.divider.vertical=0.8477777777777777
|
package.divider.vertical=0.8477777777777777
|
||||||
package.editor.height=756
|
package.editor.height=756
|
||||||
package.editor.width=1145
|
package.editor.width=1145
|
||||||
package.editor.x=17
|
package.editor.x=579
|
||||||
package.editor.y=171
|
package.editor.y=292
|
||||||
package.frame.height=1000
|
package.frame.height=1000
|
||||||
package.frame.width=1296
|
package.frame.width=1296
|
||||||
package.numDependencies=10
|
package.numDependencies=10
|
||||||
|
|||||||
Reference in New Issue
Block a user