【发布时间】:2016-03-14 15:29:27
【问题描述】:
如果我们在构建哈希表之前知道输入的大小,是否可以避免哈希函数中的哈希冲突? 换句话说,我们如何在 O(1) 时间内完成最坏情况的插入?
【问题讨论】:
-
你知道输入的size,还是实际的item?
-
@AmiTavory 假设我对输入的一切都了如指掌——大小、每个项目的信息......
如果我们在构建哈希表之前知道输入的大小,是否可以避免哈希函数中的哈希冲突? 换句话说,我们如何在 O(1) 时间内完成最坏情况的插入?
【问题讨论】:
您要求的是perfect hash function。有许多已知的算法(参见this article in Dr. Dobbs' 一种这样的算法)。他们中的大多数都依赖于一些随机参数化方案,这些方案有很大的机会发现没有冲突。一旦找到这样的参数,你就有了一个完美的哈希值。请参阅 this lecture 以获得可读的介绍。
【讨论】: