寻求有效的关联bitset哈希

时间:2013-02-09 22:46:59

标签: performance hash bit-manipulation bitset associative

假设您有一个有序的位集序列b1, b2, b3, ..., bN

是否有一个有效的按位运算符哈希计算,可用于生成也是关联的哈希值?

换句话说,推荐的散列函数hash(bX, bY)是这样的:

hash(hash(b1, b2), b3) == hash(b1, hash(b2, b3))

按位异或 - XOR会提供可接受的低冲突率吗?

编辑:请注意,有一个相关问题here

1 个答案:

答案 0 :(得分:1)

XOR是关联的,但也是可交换的。它不仅仅是你需要的,但我没有想到一个实用的纯粹联想变体。我想到了矩阵乘法,但我不确定如何使用二进制哈希。

添加也是关联的,因此您可以执行组合哈希:保留两个不同的哈希值,一个与加法相结合,一个与XOR相结合。碰撞必须影响两者都是有效的碰撞。更有可能。

缺点是hash(a, b) == hash(b, a)(这是交换性)。不知道如何删除该属性。