有没有解决方案可以为非有限输入创建完美的哈希表



所以哈希表对于集合中数据的常量时间查找来说真的很酷,但据我所知,它们受到可能的哈希冲突的限制,这会导致少量的时间复杂度增加。

在我看来,任何支持非有限输入范围的哈希函数实际上都是减少冲突的启发式方法。为任何范围的输入创建完美的哈希表是否有任何绝对的限制,或者它只是还没有人弄清楚的事情?

我认为这取决于您所说的"任何输入范围"是什么意思。

如果你的目标是创建一个可以接受任何东西并且永远不会产生冲突的哈希函数,那么就没有办法按照你的要求去做。这是鸽子洞原则的结果 - 如果你有 n 个可以散列的对象,你的散列函数至少需要 n 个不同的输出,否则你被迫得到至少一个散列冲突。如果有无限多个可能的输入对象,则无法构建始终避免冲突的有限哈希表。

另一方面,如果您的目标是构建一个哈希表,其中查找是最坏情况 O(1)(也就是说,您只需查看固定数量的位置即可查找任何元素),那么有许多不同的选项可用。您可以使用动态完美哈希表或布谷鸟哈希表,它支持最坏情况 O(1) 查找和预期的 O(1) 插入和删除。这些哈希表通过使用各种不同的哈希函数而不是任何一个固定的哈希函数来工作,这有助于规避上述限制。

希望这有帮助!

最新更新