考虑两个不同的字符串具有相同的长度。
我正在实施robin-karp算法并使用下面的哈希函数:
def hs(pat):
l = len(pat)
pathash = 0
for x in range(l):
pathash += ord(pat[x])*prime**x # prime is global variable equal to 101
return pathash
答案 0 :(得分:3)
这是一个哈希。根据定义,不能保证不会发生冲突 - 否则,散列必须与散列值一样长,至少。
你正在做的事情背后的想法是基于数论:一个与你的有限群体的大小相互作用的数字的力量(这可能是原作者的意思是2 ^ N)可以给出你是那个有限群体中的任何一个数字,而且很难说出这是哪一个。
可悲的是,这个散列函数的有趣部分,即散列的大小限制/模运算,已被排除在此代码之外 - 这让人不知道你的代码来自哪里。据我所知,与Rabin-Karb没什么关系。