Rabin Karp算法中的Spurious Hits如何等于O(n / q)?

时间:2016-05-01 09:23:03

标签: algorithm hashmap time-complexity string-matching rabin-karp

我正在阅读CLRS,因为我遇到了这一行"我们可以预期虚假命中的数量是O(n / q),因为任意ts将等于p的几率,模数q,可估计为1 / q。"

我正在将包含完整描述的网站放在34.2主题下

请解释我们如何预期虚假命中= O(n / q)

供参考http://staff.ustc.edu.cn/~csli/graduate/algorithms/book6/chap34.htm

1 个答案:

答案 0 :(得分:0)

出于分析的目的,通常假设使用的哈希函数是Simple Uniform Hashing。该假设表明,每个键都可以被散列到,而与其他键的散列方式无关。

换句话说,给定哈希函数可以生成的q个值,每个值的概率为1/q

在您链接到的示例中,当两个不同的字符串散列到相同的值时,他们会讨论虚假命中方案。在简单统一哈希的情况下,此事件的概率是多少?

第一个字符串被散列为值x。第二个字符串也被散列到值x的概率是多少?它是1/q

我推荐this lecture,它讨论了Karp-Rabin算法。