カッコウハッシュが動的な完全ハッシュよりも優れている点は何ですか?


12

動的な完全ハッシュテーブルカッコウハッシュテーブルは、最悪の場合のO(1)ルックアップと予想されるO(1)時間の挿入と削除をサポートする2つの異なるデータ構造です。どちらもO(n)補助スペースと、操作のためにハッシュ関数のファミリーへのアクセスが必要です。

これらのデータ構造はどちらもそれ自体で美しく、素晴らしいと思いますが、これらのデータ構造が他のデータ構造よりもいつどのように望ましいかはわかりません。

これらのデータ構造の1つが他のデータ構造よりも明確な利点を持っている特定のコンテキストはありますか?それとも、ほとんど交換可能ですか?


これらの手法のいずれかが実際に実際に使用されているかどうかはわかりません。通常、最適な漸近境界を提供するこれらの種類のデータ構造は、表記に隠された大きな定数を持っているため、主に研究対象です。実際には、実際に大きな定数を持つより複雑なO 1 よりも、実際に小さな定数でよりシンプルで実装しやすいO log n 手法を好むかもしれません。OOログnO1
トムヴァンデルザンデン

@TomvanderZandenそれは間違いなく本当です。また、あるアプローチが他のアプローチよりも理論的に優れていることに興味があります。各アプローチが他のアプローチより優れた理論的特性を持っているのでしょうか?
templatetypedef

@templatetypedef、それを質問に追加することをお勧めします。人々はあなたの質問を理解するためにコメントを読む必要はありません-コメントは一時的なものであり、いつでも消えることがあります。
DW

はい、これらの手法は実際には、通常ニッチな分野で実際に使用されています。
仮名

1
カッコウハッシュの利点の1つは、理解と実装が簡単なことです。また、動的な完全ハッシュよりも分析がはるかに簡単です。
A.シュルツ

回答:


3

Dietzfelbingerらの意味での動的完全ハッシュ法。2個の独立したハッシュのみが必要です。カッコウハッシュテーブルの単純なハッシュにはいくつかの結果がありますが、たとえば、ツイストテーブルハッシュや「カッコウハッシュとスタッシュを使用した明示的かつ効率的なハッシュファミリで十分」など、元の動的完全ハッシュはある意味でより堅牢です。


OPからの明確なコメントを参照してください:「1つのアプローチが他のアプローチよりも理論上の利点があることにも興味があります。
jbapple

3

カッコウハッシュでは、ルックアップを並行して実行できますが、Dietzfelbingerらの元の動的完全ハッシュスキームでは、ルックアップには2つのチェーンメモリアクセスが必要で、2回目のアクセスでは最初のアクセスから取得した情報を使用します。


1

各スロットが複数のアイテムを保持できるようにすることで、カッコウハッシュのスペース効率を高めるのは比較的簡単です。サイズ4のスロットの場合、スペース効率は95%程度です。つまり、アイテムは、アイテムが移動する場所だけでなく、テーブル内のスペースの95%がアイテムの保持に使用されるまで挿入できます。

一方、Dietzfelbingerらの境界。動的な完全ハッシュに関する論文では、テーブルが3%を超えない限り、挿入操作を続行できることが証明されています。


2つの答えを一緒にしたい場合があります。:-)
templatetypedef

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.