web-dev-qa-db-ja.com

ハッシュのプライマリクラスタリングとセカンダリクラスタリングとは何ですか?

私が読んでいる教科書のハッシュ衝突管理のトピックでプライマリとセカンダリのクラスタリングの違いを見つけることで、ここ数日間混乱しています。

15
Rickx

プライマリクラスタリングとは、クラスターが存在し、新しいレコードの初期位置がクラスター内のどこかにある場合、クラスターサイズが増加することを意味します。線形プローブは、このタイプのクラスタリングにつながります。

2次クラスタリングはそれほど深刻ではありません。2つのレコードは、初期位置が同じ場合にのみ同じ衝突チェーンを持ちます。たとえば、二次探査はこのタイプのクラスタリングにつながります。

10
Henry
  1. 一次クラスタリングは、線形プローブなどの衝突解決スキームが、充填されたスロットの長いランを作成する傾向があることです付近キーのハッシュ位置。
  2. プライマリハッシュインデックスがxの場合、後続のプローブはx+1x+2x+3など、これによりプライマリクラスタリングが発生します。
  3. プライマリクラスターが形成されると、クラスターが大きくなるほど、成長が速くなります。また、パフォーマンスが低下します。

enter image description here


  1. 二次クラスタリングは、二次探査などの衝突解決スキームが、充填されたスロットの長いランawayキーのハッシュ位置から。
  2. プライマリハッシュインデックスがxの場合、プローブはx+1x+4x+9x+16,x+25など。これにより、セカンダリクラスタリングが発生します。
  3. 二次クラスタリングは、一次クラスタリングよりもパフォーマンスヒットの点でそれほど厳しくなく、二次探査を使用してクラスターが形成されないようにする試みです。アイデアは、プライマリハッシュサイトに隣接するセルではなく、より広く分離されたセルをプローブすることです。

enter image description here

59