2012-05-29 36 views
1

我在这里看到了有关使用gperf的答案,但是,我更愿意根据我为strings的域为固定长度域创建的证明推出自己的答案<= 200根据我从wolfram的计算,我得到~7.9 x 10^374总排列。因此,我的思路是如果我有一个2048位散列函数(3.2 x 10^616)我应该能够处理我需要处理的整个字符串。我的问题是,如何证明由于所有长度为200或更小的字符串的限制,我最终生成的哈希实现将是完美的?通过固定长度输入验证完美散列函数

+0

@interjay它有用的是更多的理论概念:)。所以你建议,如果我把每一个字符串,我把它转换为一个字节[]然后应用填充方案,我应该有一个没有碰撞的解决方案?如果是这种情况,我该如何证明? – Woot4Moo

回答

3

长度为200个字符的字符串只有200 * 8 = 1600位。如果2048位散列可以满足您的需要,那么您可以将字符串位用作完美散列。身份散列函数是完美的,因为它将每个输入映射到不同的散列值(显然,因为没有映射)。

+0

我选择了2048,因为它是容纳宇宙的高于1024的下一个值。这是否会产生意想不到的后果? – Woot4Moo