【问题标题】:Dynamic perfect hashing and universal hash functions - explanation please?动态完美散列和通用散列函数 - 请解释一下?
【发布时间】:2010-11-11 00:17:35
【问题描述】:

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

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

请解释一下瓢虫的书?

【问题讨论】:

    标签: hash hashtable hashcode hash-code-uniqueness hash-function


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

      • 谢谢 - 有助于了解插入性能没有“保证”。这是你最后一句触及我想要理解的东西 - 参数化哈希函数的自动/随机选择过程 - 你知道一个例子/你能解释一下维基百科吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-03
      • 1970-01-01
      • 2015-11-16
      • 1970-01-01
      相关资源
      最近更新 更多