最近、私はDijkstraのアルゴリズムの実行時間をJavaベースのPriorityQueue(バイナリヒープに基づいて、私は間違っていない)、フィボナッチヒープ。私はJavaのcurrentTimeMillis()を使って計算しました。私が結んだ結果はかなり面白いです。これは私のテストケースの一つのために出力されます:、Dijkstra on Java:フィボナッチヒープとPriorityQueueを使用した面白い結果の取得
Running Dijkstra's with 8 nodes and 27 links
- Execution time with binary heap: 1 miliseconds
- Execution time with Fibonacci heap: 4 miliseconds
確かに私は、上のグラフは、(私はもっとすぐにする予定)私の最大のもので、現時点ではデータセットに短いです。しかし、これは意味をなさないでしょうか?フィボナッチヒープは、他のデータ構造と比較して実行時間が償却されるため、他のデータ構造よりも速いと私は常に考えてきました。私はこの3ミリ秒の違いがどこから来ているのか本当に分かりません。
注:フィボナッチヒープの理由についてはまだわかりませんが、私はthis threadを見つけました。バージョンが長くかかります。そのスレッドによれば、私のグラフは十分に密ではないので、フィボナッチヒープのパフォーマンスが実際に輝くためには、キー操作の減少回数が十分ではないためです。これは唯一のもっともらしい結論ですか、それとも私が行方不明のものがありますか?
意味のあるベンチマークを得るには、8ノードと27リンクよりも数桁大きいデータセットが必要です。 – EJP
うん、私は今それを得る。私はそれを調べて、私ができることを見なければならないでしょう。ありがとう。 –