Java の Priority Queue が ChangePriority をサポートしていないのはなぜだろうと思っていました。ChangePriority を削除すると、より効率的な実装を使用できるようになることをどこかで (詳細なしで) 読みましたが、それがどのように可能になるかわかりません。バイナリ ヒープは非常に単純で効率的なデータ構造のようです。改善の余地はありません。もう 1 つの手がかりは、どの要素 (おそらくヒープ内の位置) が優先度を変更するかを PQ に示すのにぎこちないインターフェイスが必要になる可能性があることですが、それでも結論を出すには Java の初心者です。
編集: なぜこれは無意味な質問ではないのでしょうか? Java を初めて使用する場合 (特に C/C++ のバックグラウンドを持っている場合)、すべてのポインターがどこにあるのか、または Java で Dijkstra をどのように実装するのかなどについて疑問に思うようになります。
最初の質問には何度も回答がありましたが、2 番目の質問には、私が理解している限り、単純な回答がありません。Java のような言語では、すぐに使える通常のプログラミング ツールがすべて手元にあり、素敵なクラス ラッパーにカプセル化されていると期待できます。しかし、突然、キーを減らすメソッドを使用して PQ を自分で実装する必要があります。これは、おそらく C/C++ よりも Java で行う方が厄介なことです。この質問では、ダイクストラの実装方法を尋ねているわけではありません (これは他のスレッドで適切に回答されています)。キー/プリオの減少方法なしでは分類できない PQ の多くのアプリケーションがまだ存在する可能性があります。PQ のアイテムよりもはるかに多くの優先度の更新がある場合。ダイクストラでは、最大で V
したがって、Java の PQ に変更の優先度がないのには、いくつかの深刻な理由があると考える人もいるかもしれません。その理由は、実際の Java の PQ インターフェイスに関係なく、おそらく興味深いものです。