提问者:小点点

布谷鸟散列插入如何工作?


根据Cuckoo散列插入工作原理的留档,如果要使用散列函数h1将value e1插入到table1的位置h1(key1),并且h1(key1)已经被占用,因为(key2, value e2)被插入使得h1(key2)=h1(key1),则Cuckoo散列算法计算h2(key2)并尝试在table2的位置h2(key2)插入value e2。此过程重复。

所描述的查找算法是:

function lookup(x)
    return T1[h1(x)] = x ∨ T2[h2(x)] = x
end

但是,当查找key2的值时,vale2可以在h1(key2)或h2(key2)中。如果h1(key1)=h1(key2),那么h1(key1)可以是vale1(发生驱逐)或vale2(没有驱逐)。Cuckoo哈希算法如何知道要查找哪个表来查找value e2?


共2个答案

匿名用户

代码似乎首先在T2返回值,如果失败,它会在T1返回值。

function lookup(x)
    return T1[h1(x)] = x ∨ T2[h2(x)] = x
end

匿名用户

只有一种方法可以找出答案:检查两个位置。或者一般来说,所有key2可能去过的位置。