Das ist mein bfs Algorithmus. Ich möchte die Anzahl der Kanten speichern, die ich in den Feldkanten durchlaufen habe, aber ich kann nicht herausfinden, wo die Variable platziert werden soll, um für jede Kante eine hinzuzufügen. Ich bekomme immer Antworten, die zu lang sind, also denke ich, dass das schwieriger ist, als einfach die Kante zu erhöhen.Zählen der Anzahl der Kanten, die in einer breiten ersten Suche durchlaufen wurden?
Es sollte beachtet werden, dass dies nur die Kanten entlang des wahren Pfades berechnen soll, 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;
}
Alle und alle Hilfe wird geschätzt. wenn Sie mehr Klassen benötigen/Methoden mich
EDIT
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 + "";
}
}
Können Sie erklären, was Sie mit Zeiger meinen? Ich habe noch nie so etwas gemacht, vielleicht ein Code-Snippet? Vielen Dank! – Lucas
Entschuldigung, mit Zeiger meine ich nur ein Feld – ulmangt
oh! Dies kann funktionieren! Ich werde es versuchen, und wenn es du bekommst, bekommst du: D – Lucas