Algorithm 在Rabin-Karp算法中如何选择模值?
我有一个关于选择q和d来搜索字符串的问题。该算法使用q值作为模,d值作为哈希函数 如果我选择q作为2的幂数,d=q-1或d=q+1Algorithm 在Rabin-Karp算法中如何选择模值?,algorithm,math,string-matching,rabin-karp,Algorithm,Math,String Matching,Rabin Karp,我有一个关于选择q和d来搜索字符串的问题。该算法使用q值作为模,d值作为哈希函数 如果我选择q作为2的幂数,d=q-1或d=q+1 这些选择如何影响虚假点击 在d=q+1和d=q-1的情况下,什么样的模式可以确保假命中 X模(2^n+1)可以描述为交替和/差,例如 X=0x11223344,n=8,X模257==0x44-0x33+0x22-0x11模257。 这里的问题是,任何重复的字母都会自动取消——不太实际——当然n不必是8 X mod(2^n-1)将是所有n位模式的总和,例如 X=0x
- 这些选择如何影响虚假点击
- 在d=q+1和d=q-1的情况下,什么样的模式可以确保假命中 X模(2^n+1)可以描述为交替和/差,例如 X=0x11223344,n=8,X模257==0x44-0x33+0x22-0x11模257。 这里的问题是,任何重复的字母都会自动取消——不太实际——当然n不必是8 X mod(2^n-1)将是所有n位模式的总和,例如 X=0x11223344,n=8,X模255==(0x44+0x33+0x22+0x11)模255 这里的问题是切换字节会自动取消:
Hash('ab')=Hash('ba')。你能更具体地说明
q
和d
代表什么吗。这些与哈希函数相关吗?我编辑了这个问题,tnx。