哈希函数确定

时间:2011-03-16 17:51:44

标签: c algorithm data-structures

我们如何才能找到最有效的哈希函数(碰撞的可能性最小)。

假设给出了一些字符串..并且字符串的长度也没有定义。 阿贾伊 维杰 拉祈彩 ....

我们知道没有的数量。可用的字符串,所以我们可以设计一个大小的哈希表(可用的数量)。什么可以是我们可以为这样的问题设计的完美哈希函数?

以递增方式将每个字符ascii值乘以31(素数)导致哈希值大于MAX_INT的值,然后模数将无法正常工作...所以请给出一些有效的哈希函数构建溶液....

我有很少的字符串,让我们说count = 10 ....我需要实现一个哈希函数,这样所有这10个字符串在哈希表中唯一适合....任何完美的哈希函数O( 1)可用,对于这种问题??哈希表大小将为10,对于这种情况......

只有C编程......

请解释网站上的逻辑...... http://burtleburtle.net/bob/c/perfect.c 这看起来非常复杂但对我来说很完美.. !!这里使用的算法是什么......直接读取代码非常困难!!

...谢谢

4 个答案:

答案 0 :(得分:15)

检查其中的一些,它们显然具有良好的分布

http://www.partow.net/programming/hashfunctions/#HashingMethodologies

答案 1 :(得分:3)

您可能需要查看perfect hashing.

答案 2 :(得分:2)

你可能想看一下gperf,如果你不经常这样做而你的数据设置很小,你可以在飞行中做到这一点。如果提前知道字符串,则这是 方法

答案 3 :(得分:0)

哈希表意味着能够处理动态输入。如果你只能保证一组特定的输入,并且你想保证每个输入的特定插槽,那么为什么要使用散列呢?

只需为每个已知可用输入建立一个索引数组。