算法导论——Rabin-Karp算法求模证明(2)
上一篇算法导论——Rabin-Karp算法求模证明(1)
我们证明了Rabin-Karp算法的初始化求模部分,即
接下来,我们来证明,这一部分

公式
1.(a+b) mod p=[(a mod p)+(b mod p)] mod p
2.(a∗b) mod p=[(a mod p)∗(b mod p)] mod p
欲证
((ft−Ts∗basem−1)∗base+Ts+m)mod q=((ft−Ts∗basem−1mod q)∗base+Ts+m)mod q
证明
首先ft<q,因为mod q就是把结果ft约束在q内,因此ft mod q=ft。根据公式1,有以下递推式成立。
((ft−Ts∗basem−1mod q)∗base+Ts+m)mod q=((ft mod q−Ts∗basem−1mod q)∗base+Ts+m)mod q=((ft mod q−Ts∗basem−1mod q)∗base mod q+Ts+m mod q)mod q=(((ft mod q+(−Ts∗basem−1) mod q) mod q∗base mod q) mod q+Ts+m mod q)mod q=(((ft−Ts∗basem−1) mod q∗base mod q) mod q+Ts+m mod q)mod q=((ft−Ts∗basem−1)∗base+Ts+m)mod q
证毕。
结论
当base=10时,算法就如下图所示
