Dijkstraの優先順位キューをminヒープとして実装するのが最善の場合はどのような場合ですか?最小ヒープと通常配列の通常の配列の実装
実行時間はO(V^2 + E)
で、もう1つはO((V+E)logV)
です。ときE< V
ので、ヒープの実装が良いと再び思えるときV< E
、O(V^2 + E)= O(E^2)
とO((V+E)logV) = O(ElogV)
、その後、 O(V^2+E) = O(V^2)
、それはO((V+E)logV)=O(2VlogV)=O(VlogV)
よりも悪いです。
これらは同じスペースの複雑さも持っています。つまり、O(n)
です。
Dijkstraの最小優先度キューの単純な配列実装が優れているが、実際にはケースを考えることができない場合があると仮定します。
「普通の配列」として優先度キューを実装するのが最善であるとは思えません。あなたのやり方にかかわらず、あなたはO(1)挿入かO(1)のいずれかの削除を持つでしょう。キューサイズが3つのアイテムであっても、それは大きな違いになります。バイナリミニヒープを使用します。 –
上記の意味は、O(1)挿入とO(n)削除、またはO(1)削除とO(n)挿入のいずれかを持つということです。いずれにせよ、それは準最適ではないだろう。 –