2017-03-01 7 views
0

現在、ハッシュテーブルの衝突解決戦略のオプションを検討中です。もともとハッシュテーブルの実装について教えていたとき、私は、Separate Chainingが多くの落とし穴を持つ線形プロービングに比べて好ましい選択であることを学びました。オンラインで研究した結果、Python辞書の基本的な実装では、ランダム化プロービングと呼ばれる手法を使用して、文書ストリングthis CPython fileで説明されているように衝突を解決することがわかりました。分離チェインとランダムプロービング

公式辞書の実装で使用されているとすれば、おそらくハッシュテーブルの衝突を解決する最も効率的な方法だと思われます。しかし、ランダムプロービングの実装の複雑さと、別々のチェーニングは一般に許容されるコリジョン戦略であるため、ランダムプロービングのために別々のチェーニングを使用しないでください。私は考えることができる

+0

実装の心配はなぜですか?あなたは辞書を使うことができます。 – MSeifert

+0

ランダムプロービングは実際には複雑ではありません。いくつかの算術演算があります: 'j =((5 * j)+ 1)mod 2 ** i' – user3080953

+0

@ user3080953私はちょうどその理由を理解していません別々の連鎖よりも好ましい選択肢として使用することさえできる。 – loremIpsum1771

答えて

1

つの理由:

1)プロービングが別のチェーンよりも安いですが(それは要素)

を格納するために使用されたリンクリストまたは任意のデータ構造を展開するメモリ割り当てを必要としません。

2)データ構造からのオーバーヘッドを格納する必要がないため、(リンクリストの次のポインタなど)

関連する問題