根据我目前的理解,通用散列是一种在运行时随机选择散列函数的方法,以保证任何类型的输入都具有合理的性能。
我知道我们这样做是为了防止有人故意选择恶意输入进行操纵(已知存在确定性散列函数的可能性)。
我的问题是:我们仍然需要保证一个键在每次散列时都映射到相同的地址,这不是真的吗?例如,如果我们想要检索信息,但散列函数是随机选择的,那么我们如何保证可以检索到数据呢?
发布于 2012-01-30 21:25:33
通用散列函数是一族不同的散列函数,它们具有这样的性质,即无论选择哪个散列函数,从宇宙中随机选择的两个元素都不会发生冲突。通常,这是通过让实现从一系列散列函数中挑选一个随机散列函数在实现中使用来实现的。一旦选择了此哈希函数,哈希表就会照常工作-您可以使用此哈希函数来计算对象的哈希码,然后将该对象放入适当的位置。哈希表必须记住它所做的哈希函数的选择,并且必须在整个程序中一致地使用它,否则(正如您已经注意到的)它将忘记它映射每个元素的位置。
希望这能有所帮助!
https://stackoverflow.com/questions/9040199
复制