0
現在、私は2つの頂点の間に1対1の関係しかありません。 2つの頂点の間の複数の関係を処理したいだけです。どうやってやるの?bfs javaの2つの頂点の間のすべての辺を取得する方法
私の現在のコードは次のとおりです。
public Collection<Vertex<V, E>> bfs() {
Queue<Graph.Vertex<V, E>> queue = new ArrayBlockingQueue<>(this.getVertices().size());
Collection<Vertex<V, E>> queryVertices = new LinkedList<>();
Vertex<V, E> source = this.vertices.get(0);
Set<Vertex<V, E>> visited = new HashSet<>();
visited.add(source);
queue.add(source);
queryVertices.add(source);
while (!queue.isEmpty()) {
Graph.Vertex<V, E> v = queue.remove();
Graph.Vertex<V, E> w;
while ((w = getAdjUnvisitedVertex(v, visited)) != null) {
visited.add(w);
queue.add(w);
queryVertices.add(w);
}
}
return queryVertices;
}
private Vertex<V, E> getAdjUnvisitedVertex(Vertex<V, E> v, Set<Vertex<V, E>> visited) {
for (Graph.Edge<V, E> edge : v.edges) {
if (!visited.contains(edge.getTo())) {
return edge.getTo();
}
}
return null;
}