動的セットのフィンガープリント


10

次の問題について、操作ごとにO(1)時間のwビットワードRAMデータ構造が存在しますか?:操作をサポートする一連のwビット非負整数を維持します

  • add(x):セットにxを追加します
  • remove(x):セットからxを削除します
  • finger():セットのフィンガープリントを返します。このwビットフィンガープリントには、同一の2つのセットに同じフィンガープリントがあり、異なる2つのセットにはおそらく異なるフィンガープリントがあるという特性があります。

すべての操作は一定の時間で実行する必要があります。

Rabin-Karpフィンガープリント法は、ここで、pはランダムなwビット素数です。2 x mod pの計算には一定以上の時間がかかるため、問題は更新時間にあります。繰り返し二乗を使用すると、これはO(log w)時間で実行できます。私が見つけた最速のモジュラー指数アルゴリズムは、(log w)/(loglog w)算術演算のようなものを実行します。

f(S)=(xS2x)modp
2xmodp

3
同様の質問がすでにここ投稿されているようですが、一定時間の解決策はありませんでした。
Pat Morin

回答:


1

この答えは少し手波です。

h

  1. 空のセットのフィンガープリントは0です。
  2. ffh(x)

STSTST2w


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