Das ist mein bfs-Algorithmus. Ich möchte die Anzahl der Kanten, die ich durchquert habe, im Feld Kanten speichern, aber ich kann nicht herausfinden, wo ich die Variable platzieren soll, um für jede Kante eine hinzuzufügen. Ich erhalte immer wieder Antworten, die zu lang sind, also denke ich, dass dies schwieriger ist als die einfache Inkrementierung der Kante.
Es ist zu beachten, dass damit nur die Kanten entlang des wahren Pfades berechnet werden, nicht die zusätzlichen Kanten.
public int distance(Vertex x, Vertex y){
Queue<Vertex> search = new LinkedList<Vertex>();
search.add(x);
x.visited = true;
while(!search.isEmpty()){
Vertex t = search.poll();
if(t == y){
return edges;
}
for(Vertex n: t.neighbours){
if(!n.visited){
n.visited = true;
search.add(n);
}
}
System.out.println(search + " " + t);
}
return edges;
}
Für jede Hilfe bin ich dankbar. Wenn Sie weitere Klassen/Methoden benötigen, lassen Sie es mich wissen.
EDITAR
import java.util.ArrayList;
public class Vertex {
public static char currentID = 'a';
protected ArrayList<Vertex> neighbours;
protected char id;
protected boolean visited = false;
protected Vertex cameFrom = null;
public Vertex(){
neighbours = new ArrayList<Vertex>();
id = currentID;
currentID++;
Graph.all.add(this);
}
public void addNeighbour(Vertex x){
int a;
while(x == this){
a = (int) (Math.random()*(Graph.all.size()));
x = Graph.all.get(a);
}
if(!(neighbours.contains(x))){
neighbours.add(x);
x.addNeighbour(this);
//System.out.println(this + " Linking to " + x);
}
}
public void printNeighbours(){
System.out.println("The neighbours of: " + id + " are: " + neighbours);
}
public String toString(){
return id + "";
}
}