5

所以我正在阅读有关哈希表、哈希函数等的内容。我很感兴趣地阅读了维基百科上关于“动态完美哈希”如何涉及使用第二个哈希表作为数据结构来在特定存储桶中存储多个值的信息。

然而,我迷失的地方是如何选择通用哈希函数来执行第二个哈希表的哈希。谁能解释这个通用哈希函数是如何从存储在桶中的值确定的?我模糊地遵循维基百科的“通用哈希函数”页面中的推理和逻辑,但我很难对它有任何直觉。特别是,这些函数如何保证不发生冲突?或者至少,如果它们被处理掉并在检测到冲突时生成一个新的,我们怎么知道这可以在实际的时间内完成?

请问瓢虫书的解释?

4

2 回答 2

4

完美的散列意味着即使在最坏的情况下读取访问也需要恒定的时间。

对于插入密钥,没有最坏情况的保证,时间限制仅在平均情况下是正确的(或者可能是摊销的)。

为了使插入足够快,第二级哈希表选择的键数(k 2)非常大,足够大以使冲突变得足够不可能。这不是大小问题,因为第一级散列均匀分布键,因此平均而言第二级散列表仍然很小。

二级表的散列函数是从一组参数化散列函数中随机选择的。

于 2009-07-15T14:17:24.277 回答
3

看一些麻省理工学院的讲座怎么样?:)
MIT's Introduction to Algorithms, Lectures 7 and 8: Hashing

于 2009-07-15T13:45:50.440 回答