我正在浏览MIT Open courseware 6.006
,它有以下问题,
Alyssa决定为她的哈希表实现冲突解决和动态调整大小。但是,她不想做更多必要的工作,所以她想知道。如果她需要两者来保持她所期望的正确性和表现。毕竟,如果她有动态调整大小,她可以调整大小以避免碰撞;如果她有冲突解决,碰撞不会导致正确性问题。关于这两个属性的哪个陈述是真的?
正确答案在解决方案中给出为4,
"没有冲突解决,没有正确性:可能有实际的哈希冲突,然后没有任何数量的调整将让两者都进入表格。"
如果我们继续增加表大小并且我们的哈希函数是简单的统一哈希值,那么我就会感到困惑,那么哈希值最终会不会改变?
if h(k1) = h(k2) => k1 mod size1 = k2 mod size1
if k1, k2 are unique, then
for some size x
h(k1) != h(k2)
正确?
答案 0 :(得分:1)
散列函数已经计算出散列的大小的上限。哈希函数将从某个可能的可变长度值计算固定长度值,即无论您的哈希表有多大,总会有冲突的可能性。
仅仅因为您将较大数量的值映射到较少数量的插槽,插槽将分配多个项目。那是一次碰撞,这是不可避免的。