私は別のクラスを作成できなかったので、Dijkstraのアルゴリズムの優先キューの実装に関して質問があります。したがって、優先度キューにノード(整数)を追加する方法を見つけようとしていますが、キューは、ノード内の重みをソートしますが、ノード自体はソートしません。例えばDijkstraのアルゴリズムでPriorityQueueを実装するにはどうすればよいですか?
、私は3つのノード(0,1,2)を有し、ノード0は、10の重量を有し、ノード1 15を有し、ノード2は、これは私を与えるべきである5
Queue<Integer> queue = new PriorityQueue<Integer>();
queue.add(0);
queue.add(1);
queue.add(2);
while(!queue.isEmpty()){
System.out.println(queue.poll());
}
有します2,0,1の出力。 これは別のクラスを作成せずに可能ですか?それとも、プライオリティキューの他に私が使用できる別のアプローチがありますか?
ありがとうございます!!!!!!どんな助けも大いにありがとう!
私が考えることができる1つの解決策は、ノードを追加するたびに通常のキューをソートすることです。したがって、ノード2,0,1がキューにあり、8の重みを持つノード3を追加したい場合キューに収まるまでキューの最上位要素とウェイトを比較する必要があります。したがって、キュー内に2,3,0,1となるでしょうが、これは非効率的です。
ありがとうございます!!それらを得た –