小さな質問ですが、私が試みていることを達成する方法についての良い説明を見つけることができません。ダイクストラのアルゴリズムを実装しようとしています。そして、PriorityQueueを使用する必要があります。
距離に応じて、グラフのさまざまな頂点を比較したいと思います。しかし、私はを使用したことがないので、そのような比較メソッドを作成する方法を本当に知りませんPriorityQueue
。
小さな質問ですが、私が試みていることを達成する方法についての良い説明を見つけることができません。ダイクストラのアルゴリズムを実装しようとしています。そして、PriorityQueueを使用する必要があります。
距離に応じて、グラフのさまざまな頂点を比較したいと思います。しかし、私はを使用したことがないので、そのような比較メソッドを作成する方法を本当に知りませんPriorityQueue
。
優先キューの要点は、最小の要素を最上位に保持することです。この最上位の要素は、peek()
関数を使用して取得することも、取得して関数を使用してキューから削除することもできますpop()
。
したがって、ダイクストラアルゴリズムの場合は、すべての頂点をキューに入れ、各ステップで距離が最小の頂点をポップしてから、キュー内の隣接する頂点までの距離を更新する必要があります。
CompareTo関数について:
public class Example implements Comparable<Example> {
private String test;
public String getTest() {
return test;
}
public void setTest(String test) {
this.test = test;
}
@Override
public int compareTo(Example o) {
return this.test.compareTo(o.test);
}
}