我有一位同事正在努力解决哈希问题。
需要将17字母数字值(VIN代码)转换为4字节值(也可以是字母数字)。知道这4个字节会限制密钥的数量,你会看到这个问题的完美哈希算法吗?
答案 0 :(得分:1)
快速查看Wikipedia后,我认为您可以先“压缩”密钥,换句话说,您可以分两个阶段进行哈希。
阶段1:根据标准细分各个部分的密钥,并独立进行自定义散列。
第2阶段:一起获取哈希值,并进行正常哈希。
一个天真的例子:
如果您的数据仅限于美国,则前2个字节只有27种可能,因此前2个字节可以被散列为0 - 26.(假设我们在这里得到a
。)
然后假设其他字节有N种可能性,并且可以散列为0 - N-1。 (假设我们在这里得到b
。)
组合结果可以是a * N + b
。然后做一个正常的哈希(如果26 * N> 4个字节可以表达的话)。
答案 1 :(得分:1)
你在谈论一个Hash函数,所以f(x0)== f(x1)和x0!= x1是可以的。
良好的散列函数应该具有均匀分布的散列值。 例如,您可以添加组成17位数值的4个字节组,并仅保留剩余的4个字节,其中权重最低。