【问题标题】:Hashing - Collisions on purpose散列 - 故意碰撞
【发布时间】:2016-10-28 08:52:15
【问题描述】:

有没有办法设计一个散列,使得某些键子集故意映射到相同的值(冲突)?

例如,如果我希望将某个 64 位 int A 的所有 (popcount>=4) 个子集映射到 X,并将 B 映射到 Y 等。

我想如果由于碰撞而只有足够的键,我可以节省一些内存。

【问题讨论】:

    标签: function hash collision


    【解决方案1】:

    使用取模运算符,并将您的 64 位值除以 hashKey 集的大小,如下所示:

    hashKey = _64BitValue mod popcount
    

    我不知道您使用的是什么语言,但许多现代语言使用 % 作为模运算符,有些使用“mod”。

    例如,在java中它看起来像:

    long hashKey = _64BitValue % popcount;
    

    这将在您的密钥中平均分配随机 64 位值。

    【讨论】:

      猜你喜欢
      • 2015-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-24
      • 1970-01-01
      • 1970-01-01
      • 2015-09-14
      相关资源
      最近更新 更多