为什么Rabin Karp算法需要2个哈希函数用于模式字符串? (以及子串)

时间:2015-01-28 00:23:38

标签: algorithm rabin-karp

例如,我们有string1:“AB”必须在string2中找到:“CABA”。 对于string1 h1 =('A'* 27 +'B')和h2 =('A'* 29 +'B'),对于string2,我们计算hash1和hash2函数(h2.1 ='C'* 27 +'A',h2.2 ='C'* 29 +'C')我们将结果与string1的哈希函数进行比较。

我不明白为什么我们需要为每个字符串或子字符串使用不同基数的2个哈希函数。

1 个答案:

答案 0 :(得分:1)

有两个不同的散列函数可以降低碰撞的概率,但是带有一个散列函数的版本也可以工作(我们并不总是需要第二个函数)。