【问题标题】:Seeking efficient associative bitset hash寻求有效的关联位集散列
【发布时间】:2013-01-25 09:28:37
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: performance hash bit-manipulation bitset associative


    【解决方案1】:

    XOR 是关联的,但也是可交换的。它超出了您的需要,但我想不出一个实用的纯关联变体。我想到了矩阵乘法,但我不确定如何将它与二进制哈希一起使用。

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

    一个缺点是hash(a, b) == hash(b, a)(这是交换性)。不确定如何删除该属性。

    【讨论】:

    • 是的,好点 - 在这种有序序列的情况下,交换性肯定是 XOR 的缺点。包括加法不会防止与交换的值发生冲突,因此交换性仍然存在。但是减法会起作用,因此您的“两次操作”概念是合理的。谢谢你的建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多