我如何验证这个哈希函数不会给两个不同的字符串给出相同的结果?

时间:2017-08-13 14:16:22

标签: python hash hash-function rabin-karp

  

考虑两个不同的字符串具有相同的长度。

我正在实施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

1 个答案:

答案 0 :(得分:3)

这是一个哈希。根据定义,不能保证不会发生冲突 - 否则,散列必须与散列值一样长,至少。

你正在做的事情背后的想法是基于数论:一个与你的有限群体的大小相互作用的数字的力量(这可能是原作者的意思是2 ^ N)可以给出你是那个有限群体中的任何一个数字,而且很难说出这是哪一个。

可悲的是,这个散列函数的有趣部分,即散列的大小限制/模运算,已被排除在此代码之外 - 这让人不知道你的代码来自哪里。据我所知,与Rabin-Karb没什么关系。