【问题标题】:How to find the value for a given key if a hash function is chosen randomly from Universal family of hash functions?如果从通用哈希函数族中随机选择哈希函数,如何找到给定键的值?
【发布时间】:2016-02-18 16:07:36
【问题描述】:

我正在 coursera 中学习数据结构课程,最近我读到了有关通用哈希函数系列的内容。如果我从一个通用的哈希函数族中随机选择一个哈希函数,我将如何准确地重新映射它以查找一个值。如果我必须记住为每个键选择的功能,那么我应该为它维护一个列表。并且这种为密钥本身找到正确哈希函数的评估将花费线性时间,这违反了哈希表的恒定时间查找。我应该如何着手实施它?

【问题讨论】:

    标签: algorithm data-structures hashtable


    【解决方案1】:

    在制作一个哈希映射时,您使用了该系列中的一个函数。当您重新散列整个地图(通常是因为容量不足或冲突过多)或创建单独的地图时,您可以从系列中选择不同的散列函数。您不会使用两个不同的函数来尝试创建相同的哈希映射。

    【讨论】:

    • 对于每个条目,从通用哈希函数族中随机选择一个哈希函数。它以这种方式工作对吗?还是我错了?请参阅此维基百科页面en.wikipedia.org/wiki/Universal_hashing
    • 在那篇文章中,提到“几个哈希表实现基于通用哈希。在这样的应用程序中,通常软件只有在注意到“太多”键具有碰撞;在此之前,相同的散列函数将继续一遍又一遍地使用。” - 对于哈希映射,需要对整个映射使用相同的函数。
    • 所以你的意思是所有的哈希表都是使用确定性哈希函数实现的,没有什么是随机的?
    • @J.Selva:因此,最初在哈希表实现开始时,您有一个哈希函数族,在插入第一个元素之前,您从该族中随机选择一个哈希函数并使用此哈希所有进一步插入的功能。所以本质上它是一个哈希表,其中哈希函数最初是从哈希函数族中选择的,除了最初的选择没有随机化,我们在以后的所有操作中都使用选定的哈希函数:stackoverflow.com/questions/35237721/…
    • @Aravind 知道了,谢谢!
    猜你喜欢
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-19
    • 2011-01-16
    • 2017-03-17
    • 1970-01-01
    • 2021-04-06
    相关资源
    最近更新 更多