いくつかのオブジェクトへの参照を含むPriorityQueueがあります。最初に要素を優先順位キューに挿入すると、順序はデータ構造によって維持されます。削除操作の後で、私は優先度キューによって保持されている参照のいくつかを更新します。理想的には、これは優先順位キューの再調整操作を必要としますが、選択された参照を外部的に変更しているので明白ですが、再修飾はトリガーできません。だから、キュー内の任意の要素に対する変更があっても、高速抽出のようなヒープの利点を得るための最良の方法は何ですか?私はより良いデータ構造が必要ですか?要素を更新した後にjava.util.PriorityQueueを再調整する
具体的には、Javaでフィボナッチヒープのようなものを実装する必要があります。 http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm 利用可能ですか?
興味があれば、Javaでフィボナッチヒープを実装しました。オンラインで入手できます:http://www.keithschwarz.com/interesting/code/?dir=fibonacci-heap。それが役に立てば幸い! – templatetypedef
フィボナッチヒープさえ、要素の重みの帯域外変更にもかかわらず、弾力性がありません。私はあなたがそれを変更し、後でそれを挿入する前に、要素を削除する必要があると思います。 –
ヒープから任意の要素を削除するには、O(n)ヒープ構造が必要です。 –