h(k)= k mod m,其中k是以基数2 ^ p和m = 2 ^ p - 1解释的字符串。显示h(x)= h(y)

时间:2012-12-03 10:41:46

标签: algorithm hash radix

完整的问题是:

考虑哈希函数:

  

h(k) = k mod m,其中k是在基数2 p 中解释的字符串,m = 2 p - 1.通过置换字符串中的字符来表示{ {1}}我们可以将字符串yx ⇒ x哈希值导出到相同的值。

我已经决定有两种方法可以解决这个问题。我可以证明

y

  

h(x)=(x *(2 p - 1))%(2 p - 1)无论我们使用什么x,它总是等于0

我在线查找了几个解决方案,但我对此问题非常困惑。我认为我最大的问题是我不确定我应该如何使用基数信息来解决这个问题。

我可以提一下如何解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

如果m = 2^p - 1和k是radix 2^p中解释的字符串, 然后两个字符串相同,除了转置字符哈希到相同的值例如,让m = 2^3 - 1 = 7并使用字符的ASCII值:

字符串``abcd''表示为

  

k = 97。 8 ^ 3 + 98。 8 ^ 2 + 99。 8 + 100 = 56828
其中哈希56828   mod 7 = 2。

字符串``badc''表示为

  

k = 98。 8 ^ 3 + 97。 8 ^ 2 + 100。 8 + 99 = 57283
其中哈希值57283   mod 7 = 2。