我被困在尝试使用 Cormen 的每个级别的通用散列来实现完美的散列技术。具体来说,使用压缩方法(至少,我认为这是我的问题)。
我正在研究字符串,我认为是短字符串(8 到 150 之间),为此,我使用 64 位密钥(对于那些像 spookyhash 这样的散列函数我得到的是较低的 64 位),问题是在 9 个存储桶中存在只有三个唯一字符串(10 个字符中的两个和 11 个字符中的一个)的冲突。
为此,我正在使用 Cormen 的哈希压缩方法:
h_ab(k) = ((ak+b)mod p) mod m
与a = 3,p = 4294967291(最大的 32 位素数),b = 5和m = 9(因为 m_j 应该是 n_j 的平方)。作为“k”,我使用的是散列函数返回的散列值(如杂音)。
例如,如果我使用像 murmur2(64 位版本)这样的哈希函数,p数应该是最大的 64 素数?这样一来,我就涵盖了所有可能的杂音可能返回的哈希值,对吗?
存在哪些其他哈希压缩技术(除除法之外),您推荐吗?
任何参考、提示、书籍、论文、帮助都非常受欢迎。抱歉这个愚蠢的问题,我是哈希函数和哈希表的新手。
提前致谢。