1

Adjacency List で実装されたグラフの仕様で、エッジの追加は一定時間で行われると読みました。ただし、O(1) を使用したノード ルックアップが必要になります。最高のパフォーマンスをしたいと思います。ここでの問題は、どのデータ型が私にそれを与えるかということです。ハッシュマップが考慮されていますが、ハッシュマップの最悪のケースはまだ O(n) です。

これに配列を使用できますか? ノードは、任意のデータ型、ジェネリックにすることができます。これは、ノードのみに基づいてインデックス値を生成するハッシュ関数で実行できますか? それは私にO(1)を与えるでしょう。もちろん、LinkedList を indexOf で大文字にして使用することもできます。一定時間は最高です。

4

1 に答える 1

1

ハッシュステップを使用すると、衝突のリスクが発生するため、最悪の場合(可能性は低いですが)はOmega(N)です。

リストを操作するときに挿入と取得を同時に行うための可能な限り最高の保証された漸近パフォーマンスはO(log N)です。ノードをヒープやバランスの取れたツリーのようなものに格納すると、それが得られます。ソートでバインドされた証明可能なO(N log N)に違反する可能性があるため、両方の操作でこれ以上のことはできません。

于 2009-11-23T23:56:08.183 に答える