查找具有特定属性的哈希函数

时间:2015-02-04 12:32:44

标签: algorithm hash hash-function

我的问题与这个话题有很多关系:

Hash function on list independant of order of items in it

基本上,我有一组 N 号码。 N 是固定的,通常非常大,例如。例如1000。这些数字可以是整数或浮点数。它们可以是平等的,部分或全部。没有数字可以为零。

K 数字的每个组合,其中 K 是介于1和 N 之间的任何值,导致计算散列。

让我们以3个数字为例,我将调用A,B和C.我需要计算以下组合的哈希值:

A
B
C
A+B
B+C
A+B+C
A+C

事情与秩序无关,C + A等于A + C. ' +'可以是一个真正的补充或不同的东西,如异或,但它是固定的。同样,每个值都可以首先通过函数,例如

f(A)
f(B)
f(A)+f(B)+f(C)
...

现在,我需要避免碰撞,但只能以特定方式。 每个组合都标有数字,0或1。 可能发生冲突,如果可能的话,只有标记有相同数字(0或1)的那些可能发生碰撞。在这种情况下,确实会遇到许多冲突,特别是如果这使哈希值变得紧凑。我的意思是,理想情况下,最好的哈希只有1位长! (0或1)。 标记不同数字(0和1)的组合之间的碰撞应该很少发生 - 如果可能的话 - 这就是重点。

让我们举个例子。组合 - >标签 - >计算的哈希值:

Combination  Tag  Hash
A          -> 0 -> 0
B          -> 1 -> 1
C          -> 0 -> 2
A+B        -> 0 -> 0
B+C        -> 1 -> 1
A+B+C      -> 1 -> 3
A+C        -> 0 -> 2

这里,哈希值是有效的,因为不同标签的组合之间没有冲突。例如,A与A + B相撞,但它们都被标记为' 0'。

然而,哈希总体来说不是很好,因为我需要4位,这对于4个输入数字来说似乎很多。

如何为此目的找到一个好的(足够好的)哈希函数?

感谢您的见解。

0 个答案:

没有答案