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

How Spurious Hits in Rabin Karp algorithm equal to O (n/q)?

我正在阅读 CLRS,因为我看到了这一行 "We can then expect that the number of spurious hits is O(n/q), since the chance that an arbitrary ts will be equivalent to p, modulo q, can be estimated as 1/q."

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

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

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

为了分析的目的,通常假设使用的散列函数是Simple Uniform Hashing。该假设表明每个键被散列的可能性相同,而与其他键的散列方式无关。

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

在您链接的示例中,他们讨论了 spurious hit 场景,当两个 different 字符串散列为相同的值时。给定一个简单的统一哈希,这个事件的概率是多少?

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

我推荐this lecture,里面讨论了Karp-Rabin算法