アイテムの代替インデックスを探して、そのアイテムを元のインデックスに戻すことができます。 今のところ、解決策は完璧ではありません -XORは2つの数字の間で切り替わります。
は、アイテムのタグが元々index1のであると言う、と私は
をINDEX2するためにそれを移動したいのでindex2 = (index1^tag) % max_index
そして、私は戻って、それを移動したい場合
index1のジャストindex1 = (index2^tag) % max_index
MAX_INDEXは2
の力があるとき、上記の等式が成り立つのみEX:
(^123)%64 ==
(^123)%64 ==
しかし
(^123)%60 ==
(^123)%60 == 7(!= 15)
MAX_INDEXは任意の数にすることができる他の数学演算があるのだろうか。
EDIT:
私は2つのインデックス間のスイッチングを達成するために、同じ操作を使用する必要があります。
私のシナリオは次のとおりです。各バケットに最大で4つのアイテムを格納できるハッシュテーブルがあり、アイテムの指紋(たとえば8ビット)のみを格納します。バケツがいっぱいであれば、アイテムの指紋を元の状態を知らずに別の位置に移動する必要があります。一度代替位置に移動すると、指紋の元の位置に元の位置かどうかわからないため、以前の位置と同じ操作で指紋を元の位置に戻すことができます。今
- index = (index1^Hash(tag)) % max_index
[cuckoo hashing](https://en.wikipedia.org/wiki/Cuckoo_hashing)が好きかもしれません。それは、あなたのモチベーションが大いに期待しているということです。1.なぜ指紋だけを保存するのですか? 2.なぜ同じ操作で後退する必要があるのですか? 3.指紋のみを使用して移動する必要があるのはなぜですか? –
実際、それは[cuckoo filter](https://www.cs.cmu.edu/~dga/papers/cuckoo-conext2014.pdf)のデザインです。しかし、それは2のフィルタパワーのサイズを作る必要があります。 – Leo
ありがとう、それは動機の多くを説明します。私は今日の午後にいくつかのさらなる考えを持って私の答えを更新しようとします。 –