高效的固定大小“有损”哈希表,具有已知的最大项目数和固定的密钥大小

本文关键字:密钥 项目数 哈希表 有损 高效 | 更新日期: 2023-09-27 17:55:25

鉴于我将始终有一个 128 位整数作为键,以及最大数量的元素,是否有可能制作一个完美的哈希函数?

我想将 guid 存储为键,并且想要一个固定大小的无链接列表解决方案。也就是说,如果发生碰撞,我将失去第二个元素。

有人可以推荐一个可以做到这一点的哈希函数吗?

高效的固定大小“有损”哈希表,具有已知的最大项目数和固定的密钥大小

鉴于我将始终有一个 128 位整数作为键,以及最大数量的元素,是否有可能制作一个完美的哈希函数?

如果键的熵(变量中包含的信息的期望值)大于哈希结果可以容纳的范围 - 答案是否定的。如果键的熵等于或低于哈希结果可以容纳的范围 - 答案是肯定的。

这意味着,例如,如果您的哈希函数生成一个 16 位结果(65536 个

可能的值),并且您的 128 键变量最多可以假设 65536 个或更少的不同值(因此 128 位密钥的熵最多为 10 位),那么存在这样的哈希函数。另一方面,如果您的密钥可以假定超过 65535 个不同的值,则无法将其哈希为 65535 或更少的存储桶。

有人可以推荐一个可以做到这一点的哈希函数吗?

在不知道密钥可以假设什么可能的值的情况下,没有人可以给你一个可以做到这一点的哈希函数,即使你知道密钥熵非常低,可以做到。