backyard cuckoo hashing: constant worst-case operations with a succinct representation

23
Backyard Cuckoo Hashing: Constant Worst-Case Operations with a Succinct Representation Yuriy Arbitman, Moni Naory, and Gil Segev 東東東東 東東東東東 東東東東東 B4 東東 東東 <[email protected]>

Upload: holli

Post on 23-Feb-2016

53 views

Category:

Documents


0 download

DESCRIPTION

Backyard Cuckoo Hashing: Constant Worst-Case Operations with a Succinct Representation. Yuriy Arbitman , Moni Naory , and Gil Segev 東京 大学 情報科学科 今井研究室 B4 秋葉 拓 哉 . 動的辞書. キーの集合や,キー と値の関係を管理するデータ構造 普段から皆よく使っているはず C++ → std::set, std::map, … - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Backyard Cuckoo  Hashing: Constant Worst-Case Operations with  a Succinct Representation

Backyard Cuckoo Hashing:Constant Worst-Case Operationswith a Succinct Representation

Yuriy Arbitman, Moni Naory, and Gil Segev

東京大学 情報科学科 今井研究室 B4

秋葉 拓哉<[email protected]>

Page 2: Backyard Cuckoo  Hashing: Constant Worst-Case Operations with  a Succinct Representation

動的辞書• キーの集合や,キーと値の関係を管理するデータ構造

• 普段から皆よく使っているはず– C++ → std::set, std::map, …– Java → java.util.TreeMap, java.util.HashMap, ...– Ruby → ハッシュ– Python → 辞書型

• Ruby の例 (キーを文字列とした)h[“apple”] = 150h[“banana”] = 200puts h[“apple”]

Page 3: Backyard Cuckoo  Hashing: Constant Worst-Case Operations with  a Succinct Representation

動的辞書の教科書的な実現方法平衡二分探索木

• 各種操作 O(log n) 時間• 順序に関係した操作が行える

ハッシュ表

ハッシュ値 キー0

1 Apple

2

3 Banana, Orange

4 Strawberry

5

• 各種操作 O(1) 期待時間

今日はこっち

Page 4: Backyard Cuckoo  Hashing: Constant Worst-Case Operations with  a Succinct Representation

本論文の貢献

• 今までは,片方を実現するものは知られていた• しかし,両方は同時に実現されていなかった

– ならし定数時間ですら実現されていなかった

• 例えば,チェイン法のハッシュ表は,領域効率が悪い– ポインタを陽に持つせい

• 高い確率で,全ての操作は最悪定数時間

• 領域効率が情報理論的限界に近い ( 簡潔 , Succinct)

以上を同時に実現する動的辞書を初めて提案する

Page 5: Backyard Cuckoo  Hashing: Constant Worst-Case Operations with  a Succinct Representation

意義

• コンピュータネットワークでの応用– ルーターでの IP アドレス等の表引き– ネットワークを止めてしまっては困る

• セキュリティ– システムの応答時間を利用した攻撃を防ぐ

• もちろん,ならしで構わない応用も多い

なぜ最悪定数時間?ならし定数時間ではダメ?

Page 6: Backyard Cuckoo  Hashing: Constant Worst-Case Operations with  a Succinct Representation

話の流れ

De-amortized Cuckoo Hashing[ANS09]

時間:最悪 O(1)領域: (2 + ε) n ワード

BackyardCuckoo Hashing

時間:最悪 O(1)領域: (1 + ε) n ワード

Permutation-BasedBackyard Cuckoo Hashing

時間:最悪 O(1)領域: (1 + o(1)) B ビット ( B : 情報理論的下限)

Cuckoo Hashing[PR01]

時間:ならし O(1)領域: (2 + ε) n ワード

Page 7: Backyard Cuckoo  Hashing: Constant Worst-Case Operations with  a Succinct Representation

CUCKOO HASHING時間:ならし O(1) ,領域: (2 + ε) n ワード

今ここ!

De-amortized Cuckoo Hashing[ANS09]

BackyardCuckoo Hashing

Permutation-BasedBackyard Cuckoo Hashing

Cuckoo Hashing[PR01]

Page 8: Backyard Cuckoo  Hashing: Constant Worst-Case Operations with  a Succinct Representation

Cuckoo Hashing[Pagh Rodler 2001]

2 つのテーブルと 2 つのハッシュ関数

検索

x が対応する 2 つの場所を見る

必ず 2 回のアクセスで済む → 高速

[PR01, Fig.1]

高々 n 要素が挿入されるとする

ε は小さい定数

サイズ n + ε の表

2 つのハッシュ関数 f1, f2 が示す値

y

Page 9: Backyard Cuckoo  Hashing: Constant Worst-Case Operations with  a Succinct Representation

Cuckoo Hashing[Pagh Rodler 2001]

挿入

ぐるぐると追い出す,無理なら再構築

解析を行うと,ならし O(1) 時間

[PR01, Fig.1]

Page 10: Backyard Cuckoo  Hashing: Constant Worst-Case Operations with  a Succinct Representation

DE-AMORTIZED CUCKOO HASHINGならし O(1) 時間 → 最悪 O(1) 時間

時間:最悪 O(1) ,領域: (2 + ε) n ワード

今ここ! De-amortized Cuckoo Hashing[ANS09]

BackyardCuckoo Hashing

Permutation-BasedBackyard Cuckoo Hashing

Cuckoo Hashing[PR01]

Page 11: Backyard Cuckoo  Hashing: Constant Worst-Case Operations with  a Succinct Representation

De-Amortized Cuckoo Hashing[Arbitman Naory Segev 2009]

• サイズ L ( 定数 ) のキューを用意– O(1) で検索ができる

• 挿入時の大きな仕事を避けたい

• 挿入で追い出すことを一定回数繰り返す• 解決しなければ,一度キューに挿入

• 仕事が小さかった際は,キューから取り出す

...Queue

T1

T2

Newelements

Head

Back

...

...

Page 12: Backyard Cuckoo  Hashing: Constant Worst-Case Operations with  a Succinct Representation

BACKYARD CUCKOO HASHING(2+Ε) ワード → (1+Ε) ワード

時間:最悪 O(1) ,領域: (1 + ε) n ワード

De-amortized Cuckoo Hashing[ANS09]

BackyardCuckoo Hashing

Permutation-BasedBackyard Cuckoo Hashing

Cuckoo Hashing[PR01]

今ここ!

Page 13: Backyard Cuckoo  Hashing: Constant Worst-Case Operations with  a Succinct Representation

Backyard Cuckoo Hashing の概要

• 2 レベルに分かれている– レベル 1 :バケツを並べておく– レベル 2 : De-amortized Cuckoo Hash

• レベル 1 から溢れた要素をレベル 2 に格納

[ANS10, Fig.1]

Page 14: Backyard Cuckoo  Hashing: Constant Worst-Case Operations with  a Succinct Representation

レベル 1 の詳細• バケツサイズ d = 1/ε2

• バケツ個数 m = (1+ε) n/d– レベル 1 には d×m = (1+ε)n ワード

• 各要素をどのバケツに入れる?– 値域が [0, m) のハッシュ関数を用意

• レベル 1 からあふれるのは?– 高い確率で εn 個以下– de-amortized cuckoo hashing で管理

[ANS10, Fig.1]

高々 n 要素が挿入される

ε は任意の小さい定数

Page 15: Backyard Cuckoo  Hashing: Constant Worst-Case Operations with  a Succinct Representation

改善

現状• 領域: (1 + ε’) n ワード  (ε’ は ε の定数倍 )• 操作: O(d) = O(1/ε2) 時間  ( バケツ内を全部見る )

さらに

操作の時間が ε によらないようにできる

Page 16: Backyard Cuckoo  Hashing: Constant Worst-Case Operations with  a Succinct Representation

ε への依存を断ち切る• バケツの中も効率的に管理したい

• バケツ内で完全ハッシュ関数を利用– 完全ハッシュ関数 = 単射のハッシュ関数– “2 つの条件” を満たすハッシュなら何でも利用可– De-amortize のため,キューを用意– キューは,全バケツで共通

• ただし, ε の値に制限をした上での構成のみを議論していた– ε = θ(√(log log n / log n))

Page 17: Backyard Cuckoo  Hashing: Constant Worst-Case Operations with  a Succinct Representation

PERMUTATION-BASEDBACKYARD CUCKOO HASHING(1+Ε) ワード → (1+o(1))B ビット

時間:最悪 O(1) ,領域: (1 + o(1)) B ビット

De-amortized Cuckoo Hashing[ANS09]

BackyardCuckoo Hashing

Permutation-BasedBackyard Cuckoo Hashing

Cuckoo Hashing[PR01]

今ここ!

Page 18: Backyard Cuckoo  Hashing: Constant Worst-Case Operations with  a Succinct Representation

情報理論的限界

• 先ほどは (1+ε)n ワードの領域を使っていた– これも今までの物より遥かに効率的

• でも, u 個の物から n 個を選ぶのは u C n 通り– キーの定義域が u 個からなるとした

• よって,情報理論的な領域の限界は

B = log(u C n) ≒ n log(u / n) ビット

これに近づくことを目指したい

Page 19: Backyard Cuckoo  Hashing: Constant Worst-Case Operations with  a Succinct Representation

簡潔データ構造

• (1 + o(1)) B ビットに収まるデータ構造–漸近的に領域が最善–それでして,効率的な操作を提供

• ハッシュ法に限らずよく研究されている–ビットベクトル–ツリー

Page 20: Backyard Cuckoo  Hashing: Constant Worst-Case Operations with  a Succinct Representation

鍵となるアイディア• ハッシュ関数の代わりに,ランダムな置換を用いる

– [0, u) への全単射– かつ,逆変換ができるものとする

• 自分が入っているバケツの情報を利用する

もともとのキー1010101010

置換を適用001011011

バケツ001

011011

Page 21: Backyard Cuckoo  Hashing: Constant Worst-Case Operations with  a Succinct Representation

置換の活用

• バケツの番号を活用– バケツ番号がキー情報の一部となる– n log (n / d) ビットを保存すれば OK となる

• レベル 2 の Cukcoo Hashing でも置換を利用– やはり場所の情報をキー情報の一部とする

Page 22: Backyard Cuckoo  Hashing: Constant Worst-Case Operations with  a Succinct Representation

今日話さなかったこと

• ハッシュ関数・置換のランダム性に関する議論– 完全にランダムなハッシュ関数を効率的に得ることは容易でない

– 条件を緩めたハッシュ関数等で解析を行なっている

• ハッシュ関数・置換の構成に関する議論– 解析に用いた条件を満たすハッシュ関数の実現に関して

も議論している

• 複雑な解析– 実際にはもっと変数が入り乱れた議論になる

Page 23: Backyard Cuckoo  Hashing: Constant Worst-Case Operations with  a Succinct Representation

まとめ

De-amortized Cuckoo Hashing[ANS09]

時間:最悪 O(1)領域: (2 + ε) n ワード

BackyardCuckoo Hashing

時間:最悪 O(1)領域: (1 + ε) n ワード

Permutation-BasedBackyard Cuckoo Hashing

時間:最悪 O(1)領域: (1 + o(1)) B ビット ( B : 情報理論的下限)

Cuckoo Hashing[PR01]

時間:ならし O(1)領域: (2 + ε) n ワード

キュー

バケツ & 2 レベル

ハッシュ関数 → 置換