私はJavaでのフィボナッチヒープの実装に約1週間取り組んできました。これは、CLRSブックに基づいた実装です。
JavaのデフォルトのPriorityQueueと比較して、作業中のサイドプロジェクトでそれを使用してパフォーマンスが向上するかどうかを確認したかったのです。[Javaのデフォルトの実装は配列ベースであるため、はるかにローカルです。複雑さの限界が高いにもかかわらず、それでもFヒープを上回る可能性があります]。
私の問題は、min要素を削除した後のヒープの統合部分に起因しているようです。arrayindexoutofboundsexceptionsがスローされ続けます。特にwhileループでは、同じ次数を持つすべてのノードを統合します。D()関数で設定された範囲を超えています。
したがって、私のD()関数が間違っているか、そうではないと思います。または、何か他のことが起こっています。最も可能性の高い副作用関連。
コードはここにあります。私はこれを約1週間デバッグしようとしてきましたが、運が良かったです。明らかな何かが欠けていますか?