【发布时间】:2016-10-18 11:50:58
【问题描述】:
我最近正在阅读一篇关于字符串散列的文章。我们可以通过将字符串转换为多项式来散列字符串。
H(s1s2s3 ...sn) = (s1 + s2*p + s3*(p^2) + ··· + sn*(p^n−1)) mod M.
对 p 和 M 有什么约束才能降低碰撞概率?
对字符串的哈希函数的一个很好的要求是它应该很难找到 一对不同的字符串,最好具有相同的长度 n,具有相同的指纹。这 排除了 M
类似地,如果 gcd(M, p) > 1 那么 p 模 M 的幂可以重复 小于 n 的指数。最安全的选择是将 p 设置为 群 U(ZM) 的生成器——所有整数的群 在乘法模M下与M互质。
我无法理解上述限制。选择 M 1 如何增加碰撞?有人可以用一些例子来解释这两个吗?我只需要对这些有基本的了解。
另外,如果有人能关注M的上下界,那就绰绰有余了。 以上事实摘自以下文章string hashing mit。
【问题讨论】:
标签: string hash hashmap hashtable primes