在这个问题上,我得到了以下映射
U = {0, 1, 2, 3, 4, 5, 6, 7} to {0, 1}
由此,必须派生一个显式的通用哈希函数,暗示可以使用一组4个函数来完成此操作。不幸的是,尽管搜索了有关如何执行此操作的文章,但我仍然感到困惑。非常感谢您理解如何找到此哈希函数并朝着正确的方向迈进!
编辑:
经过深思熟虑,这就是我想出的;这是正确的吗?
0 1 2 3 4 5 6 7
---------------------------
h1 | 1 1 0 0 0 0 0 0
h2 | 0 0 1 1 0 0 0 0
h3 | 0 0 0 0 1 1 0 0
h4 | 0 0 0 0 0 0 1 1
答案 0 :(得分:2)
使用Wikipedia中的定义:
一个函数族H = {h:U→[m]}如果x,y∈U,x≠y:Pr h∈H [h( x)= h(y)]≤ 1 / m 。
在您的情况下,这意味着对于集合{0、1、2、3、4、5、6、7中的任意两个值 x 和 y },您的四个哈希函数中最多只有两个可以将它们映射到同一位。
您的建议:
0 1 2 3 4 5 6 7
---------------------------
h1 | 1 1 0 0 0 0 0 0
h2 | 0 0 1 1 0 0 0 0
h3 | 0 0 0 0 1 1 0 0
h4 | 0 0 0 0 0 0 1 1
不起作用,因为有四对( x , y )—即(0,1),(2,3 ),(4,5)和(6,7)—其中所有四个哈希函数将它们映射到同一位。
相反,这是一些起作用起作用的选项:
0 1 2 3 4 5 6 7
---------------------------
h1 | 0 0 0 0 1 1 1 1
h2 | 0 0 1 1 0 0 1 1
h3 | 0 1 0 1 0 1 0 1
h4 | 0 1 1 0 1 0 0 1
0 1 2 3 4 5 6 7
---------------------------
h1 | 0 0 0 1 0 1 1 1
h2 | 0 0 1 0 1 0 1 1
h3 | 0 1 0 0 1 1 0 1
h4 | 1 0 0 0 1 1 1 0