【发布时间】:2014-02-21 13:35:11
【问题描述】:
哈希函数在Wikipedia上解释
它说,“a 和 n 的选择对于获得良好的散列至关重要;”并指的是感觉不相关的线性同余生成器文章。我无法弄清楚这些值是如何选择的。有什么建议吗?
【问题讨论】:
-
真的没有秘诀。您必须进行试验,或使用其他人已经证明在一般情况下或特定情况下工作良好的方法。
标签: algorithm language-agnostic
哈希函数在Wikipedia上解释
它说,“a 和 n 的选择对于获得良好的散列至关重要;”并指的是感觉不相关的线性同余生成器文章。我无法弄清楚这些值是如何选择的。有什么建议吗?
【问题讨论】:
标签: algorithm language-agnostic
该算法的基础是一个非零次数的多项式至多d有至多d个零。每个长度-k 字符串都有自己关联的次数为 k - 1 的多项式,我们通过减去相关字符串的多项式并在 一个。如果字符串相等,则结果始终为零。如果字符串不相等,则结果为零当且仅当 a 是多项式差的零之一(这是将素数要求放在 n em>,因为整数 mod n 否则不会是一个字段)。
至少在理论上,我们希望 a 是随机的,以便不经意的对手无法以任何频率制造误报。如果我们没有预料到麻烦,那么最好选择 a 以便与 a 相乘更便宜(例如,a em> 有少量的一位)。然而,一些选择在典型的字符串集上是不好的(例如,a = 1)。我们希望 n 足够大,以避免随机出现误报(概率 (k - 1)/n),但又足够小,最好的特殊形式,以便模计算是有效的。
【讨论】: