就是说你有一组函数H包含|H|个函数,把所有的关键字散列成0~m-1的哈希值。我们把H设计成有这样一个性质:对于所有的不相等关键字x和y,使x和y的散列值相等的函数h的个数等于|H|/m 那么,在不知道选择了哪个函数时,两个不相等的关键字x和y会有相同的哈希值的概率可以计算出来:在最开始时随机选一个函数hi,然后所有的值都用这个函数散列,那么P{ 还没确定函数hi时,hi(x)=hi(y)且x!=y }= 使hi(x)=hi(y)相等的函数个数 / 函数的总个数= ( |H|/m ) / |H| = 1/m正好等于随机选择散列值时,两个不同关键字散列值相等的概率/不知道大家看clrs时有没有这样的问题,感觉书里有时候表达不清楚。刚开始看的时候我还以为每次插入一个关键字时都要随机选择函数,但是这样就没法查找关键字了,想了一个晚上想不出来,怀疑智商了,看了网上的代码,发现在最初执行的时候,把函数指针固定了..../
作者:魂魄妖梦
链接:https://www.zhihu.com/question/50108837/answer/119525370
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。