Optimisierungen aus dem Unterricht

This commit is contained in:
2021-01-21 10:52:23 +01:00
parent ceeed0e97a
commit 62c0478f20
3 changed files with 26 additions and 34 deletions

Binary file not shown.

View File

@@ -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();

View File

@@ -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