[論文レビュー] Fully De-Amortized Cuckoo Hashing for Cache-Oblivious Dictionaries and Multimaps
本稿では、キャッシュオブリビアスな辞書およびマルチマップの完全にデアモトライズドなクックー・ハッシュ構造を提示しており、すべての操作(検索、挿入、削除、マルチマップ固有の操作)について、高確率または途方もない確率で最悪計算量O(1)を達成する。この手法は、スーパー・サイズの補助スタッシュテーブルを備えたネストされたクックー・ハッシュ構造を用い、ブロックサイズ、メモリ階層、失敗閾値のパラメータチューニングなしに、無視できるほどの失敗確率を実現する。
A dictionary (or map) is a key-value store that requires all keys be unique, and a multimap is a key-value store that allows for multiple values to be associated with the same key. We design hashing-based indexing schemes for dictionaries and multimaps that achieve worst-case optimal performance for lookups and updates, with a small or negligible probability the data structure will require a rehash operation, depending on whether we are working in the the external-memory (I/O) model or one of the well-known versions of the Random Access Machine (RAM) model. One of the main features of our constructions is that they are \emph{fully de-amortized}, meaning that their performance bounds hold without one having to tune their constructions with certain performance parameters, such as the constant factors in the exponents of failure probabilities or, in the case of the external-memory model, the size of blocks or cache lines and the size of internal memory (i.e., our external-memory algorithms are cache oblivious). Our solutions are based on a fully de-amortized implementation of cuckoo hashing, which may be of independent interest. This hashing scheme uses two cuckoo hash tables, one "nested" inside the other, with one serving as a primary structure and the other serving as an auxiliary supporting queue/stash structure that is super-sized with respect to traditional auxiliary structures but nevertheless adds negligible storage to our scheme. This auxiliary structure allows the success probability for cuckoo hashing to be very high, which is useful in cryptographic or data-intensive applications.
研究の動機と目的
- すべての操作についてO(1)最悪計算量を保証する、完全にデアモトライズドなデータ構造を、辞書およびマルチマップ用に設計すること。
- 外部記憶およびRAMモデルにおけるパフォーマンスパラメータのチューニング(例:失敗確率の指数、ブロックサイズB、メモリサイズM)の必要性を排除すること。
- 失敗確率の指数に定数を事前に指定せずに、高確率(1 - 1/poly(n))または途方もない確率(1 - 1/n^ω(1))の保証を達成すること。
- 外部記憶における最適なI/O計算量を達成する、効率的なマルチマップ操作(例:getAllやremoveAll)をサポートすること。
- ブロックサイズBや内部メモリサイズMを明示的に知らなくても、さまざまなメモリ階層で良好に動作するキャッシュオブリビアスな解決策を開発すること。
提案手法
- 外側のクックー・テーブルと、内側の補助テーブル(スタッシュ/キューとして機能)の2つのテーブルを用いたネストされたクックー・ハッシュ構造を採用する。
- キーバリュー配列のリビルド技術を用いる:配列が半分以上に満タンになると、新しい2倍サイズの配列を割り当て、各アクセス時に2つの要素ずつコピーする。
- コピー進行状況を追跡するクロスオーバーインデックス i_A を維持し、次の再割り当てが必要になる前にリビルドが完了するように保証する。
- フレッドマンとウィラードのqヒープにインspiredしたアトミック・スタッシュ機構を用い、補助構造での高速かつデアモトライズドな操作を実現する。
- 挿入および削除の両方の操作に対して、デアモトライズド技術を適用し、各操作が最悪計算量O(1)で完了することを保証する。
- アルゴリズムにブロックサイズBやメモリサイズMをハードコードしないことで、外部記憶用にキャッシュオブリビアスな実装を実現する。
実験結果
リサーチクエスチョン
- RQ1失敗確率パラメータのチューニングなしに、すべての辞書およびマルチマップ操作についてO(1)最悪計算量を保証する完全にデアモトライズドなクックー・ハッシュ方式を設計可能か?
- RQ2ブロックサイズBやメモリサイズMに依存しない形で、キャッシュオブリビアスにO(1) I/O計算量を達成することは可能か?
- RQ3マルチマップ構造における配列操作をどのようにデアモトライズ化すれば、addおよびremove操作について最悪計算量O(1)を保証できるか?
- RQ4空間使用量を著しく増加させることなく、クックー・ハッシュの補助スタッシュを、無視できるほどの失敗確率を達成できるように設計可能か?
- RQ5Bの知識に依存せずに、外部記憶で効率的なgetAllおよびremoveAll操作を、I/O計算量O(1 + n_k/B)で実現可能か?
主な発見
- 提案された辞書構造は、実用的RAMモデルにおいて、すべての操作(検索、挿入、削除)について高確率でO(1)最悪計算量を達成する。
- 外部記憶、標準RAM、AC₀ RAMモデルにおいて、すべての操作について途方もない確率でO(1)最悪計算量を達成する。
- マルチマップ構造は、getAll(k)をO(1 + n_k/B) I/O、removeAll(k)をO(n_k) I/Oで実行可能であり、途方もない確率で保証され、完全にキャッシュオブリビアスである。
- デアモトライズド技術により、各add(k,v)およびremove(k,v)操作が、1回のアクセスあたり2要素ずつコピーする段階的リビルドを用いることで、最悪計算量O(1)で完了することが保証される。
- スーパー・サイズの補助テーブルを備えたネストされたクックー・ハッシュ構造により、失敗指数のチューニングなしに、無視できるほどの失敗確率が達成される。
- この方式は線形空間を用い、オンライン操作をサポートしており、シーケンス長やパフォーマンスパラメータの事前知識なしに、すべての境界が成立する。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。