1
グラフの2つの頂点間の最短経路を返そうとしています。 breadthFirstSearchを見つけるために書かれたコードがありますが、最短パスを返すように修正する方法はわかりません。以下は私の幅ですFirstSearch関数ShortestPath with BFS(BreadthFirstSearch)
private void breadthFirstSearch(T start,T end){
Queue<T> queue = new LinkedList<>();
Set<T> visited = new HashSet<>();
visited.add(start);
queue.add(start);
while(!queue.isEmpty()){
T v = queue.poll();
for(int i =0;i<this.keyToVertex.get(v).successors.size();i++){ if(visited.contains(this.keyToVertex.get(v).successors.get(i).key)){
continue;
}
visited.add(this.keyToVertex.get(v).successors.get(i).key);
queue.add(this.keyToVertex.get(v).successors.get(i).key);
}
}
}
私はそれをどのように変更して最短経路を返すことができますか?
たくさん助け、ありがとう!将来の参照のために、私はそれを終点頂点と比較しているので、最初の要素ではなくLinkedListの最後の要素を取得したいと考えています。 – Hussein
@Hussein私は 'getLast()'の代わりに 'peek()'を使ったということです。私は 'peek()'が最後のもの(ドキュメントをチェックせずに)を返すという印象を受けていました。明らかに間違っていました。訂正されました、指摘ありがとう! – janos