Javaに組み込まれたプライオリティキューを使用してグラフの読み込みとソートを行うと、各繰り返しで最小エッジが削除されます。Javaプライオリティキュー
0
A
答えて
0
まず、プライオリティキューのためのコンパレータを作成します。
class MinHeapComparator implements Comparator<Integer> {
@Override
public int compare(Integer one, Integer two) {
return mDistances[one] - mDistances[two];//...
}
}
これは私が書いた最短経路アルゴリズムからです。 mDistancesは、ソースから頂点までの距離です。コンパレータを変更して、好きなように比較することができます。
コンパレータのドキュメントから:「順序の2つの引数を比較します。最初の引数が2番目の引数よりも小さい、負の整数または正の整数を返します。ここ
完全なドキュメント:http://download.oracle.com/javase/1.5.0/docs/api/java/util/Comparator.html
第二に、プライオリティキューにアイテムを追加します。私は通常、頂点オブジェクトを含む配列を持つグラフを作成します。各オブジェクトは、隣接する頂点のリストを含んでいます。だから、私の場合は、インデックスを優先度キューに追加して頂点を表現するだけです。コンパレータには、頂点に関係なく何でも行うロジックを含めることができます。 PriorityQueue.add()はアイテムを追加します。
第三に、コンパレータでプライオリティキューをインスタンス化:
PriorityQueue<Integer> minHeap = new PriorityQueue<Integer>(numberItems, new MinHeapComparator());
第四に、ヒープ上の最上位項目を抽出するためにPriorityQueue.poll()を呼び出します。コンパレータは、ヒープの先頭にあるアイテムを特定するために使用されます。
関連する問題
- 1. のJava:プライオリティキュー
- 2. Javaプライオリティキューと同等のインタフェース
- 3. プライオリティキュー
- 4. F#プライオリティキュー
- 5. C++プライオリティキュー
- 6. データベースベースのプライオリティキュー
- 7. バイナリヒープとプライオリティキュー
- 8. C++プライオリティキュー宣言
- 9. カスタムクラスのSTLプライオリティキュー
- 10. プライオリティキューVSキュー
- 11. Androidのカメラインテントとプライオリティキュー
- 12. プライオリティキューのクラス比較
- 13. プライオリティキューを持つプリムアルゴリズム
- 14. Javaプライオリティキューは変わった動作をします
- 15. Scalaの確率プライオリティキュー - 優先
- 16. Kannelでプライオリティキューを実装する
- 17. Scalaでプライオリティキューを使用するには?
- 18. 二重リンクリストを挿入したプライオリティキュー
- 19. 最小プライオリティキューの複雑さ問題
- 20. STLプライオリティキューとポインタによるオーバーロード
- 21. マイクロソフトの社内プライオリティキューのバグ<T>?
- 22. の検索と一覧でプライオリティキュー
- 23. 2つのプライオリティキューをマージする
- 24. A TTL(生存時間)立ち退きに基づくプライオリティキュー
- 25. プライマリとプライオリティキューのカフカでのデータの並べ替え
- 26. プライオリティキューが正しく比較されていないC++
- 27. プライオリティキューを使用したプリムアルゴリズムの複雑さ?
- 28. プライオリティキューの基になるコンテナのカスタムタイプのリストを使用する
- 29. プライオリティキューからの要素をピックする条件
- 30. リンクされたリストを使用するプライオリティキューの挿入方法
SOの通常の手順は、試したことを示し、わからないことについて特定の質問をすることです。これまでに行ったことを示すコードを投稿してみてください。さもなければ、あなたはdownvotesを得て、質問は "本当の質問ではない"として閉じられるかもしれません。 –