【发布时间】:2011-03-16 17:51:43
【问题描述】:
我们如何才能为字符串集找到最有效的哈希函数(冲突的可能性最小)。
假设我们得到了一些字符串..并且字符串的长度也没有定义。 阿杰 维杰 拉基 ....
我们知道没有的数量。可用的字符串,所以我们可以设计一个大小(可用计数)的哈希表。我们可以为此类问题设计的完美哈希函数是什么?
以增量方式将每个字符的 ascii 值乘以 31(素数)会导致哈希值大于 MAX_INT 的值,然后模数将无法正常工作...所以请提供一些有效的哈希函数构建解决方案....
我有几组字符串,假设 count = 10.... 我需要实现一个哈希函数,使所有这 10 个字符串唯一地适合哈希表....任何完美的哈希函数 O( 1)可用,针对这种问题??哈希表大小将是 10,对于这种情况...
只有 C 编程...
请在网站上解释逻辑.... http://burtleburtle.net/bob/c/perfect.c 这看起来很复杂,但对我来说很完美..!!这里使用的算法是什么... 直接读代码,很难!!
谢谢....
【问题讨论】:
-
哦,亲爱的,这些解决方案无济于事......是否存在任何解决方案可以为给定的字符串集提供完美的哈希值......没有字符串可能非常大...... . 完美的哈希解决方案!!它是否存在..?
-
@Necrolis 推荐的 gperf 程序是一个实际可用的开源程序。您可以下载并查看源代码以了解它是如何完成的。很难想象比这更好的例子了。
-
那么这个网站上的代码呢……
-
burtleburtle.net/bob/c/perfect.c这个网站看起来不错..完美的哈希函数...但我无法理解它..请帮助...
标签: c algorithm data-structures