我想找到一個項目的替代索引,並且該項目可以切換回其原始索引。 目前,該方案並不完美 -XOR在兩個數字之間切換,mod怎麼樣?
說,一個項目的標籤是指數1本來,我想將它移動到索引2
所以index2 = (index1^tag) % max_index
如果我想將它移回索引1
僅有index1 = (index2^tag) % max_index
時MAX_INDEX是2
功率上述等式僅保持例如:
(^123)%64 ==
(^123)%64 ==
但
(^123)%60 ==
(^123)%60 == 7(!= 15)
不知是否有其它是數學操作,允許MAX_INDEX中的任意數。
編輯:
我需要使用相同的操作來實現兩個指數之間的切換。
我的場景是 - 我有一個散列表,每個桶最多可以存儲4個項目,它只存儲項目的指紋(比如說8位)。如果桶已滿,我需要將物品的指紋移動到其替代位置,而無需知道其原始表示。一旦移動到替代位置,指紋可以使用與前一個相同的操作移回原始位置(因爲我不知道指紋的當前位置是原始位置還是替代位置)。
現在 - index = (index1^Hash(tag)) % max_index
你可能會喜歡[杜鵑哈希](https://en.wikipedia.org/wiki/Cuckoo_hashing)。這就是說,你的動機有很多不足之處:1.爲什麼只存儲指紋? 2.爲什麼需要使用相同的操作返回? 3.爲什麼只需要使用指紋移動? –
其實,它是[杜鵑過濾器]的設計(https://www.cs.cmu.edu/~dga/papers/cuckoo-conext2014.pdf)。但它需要使濾波器功率的大小爲2. – Leo
謝謝,這解釋了很多動機。我會盡力在今天下午更新我的回答,並提出一些進一步的想法。 –