完美哈希函数的大O是多少?

时间:2018-12-21 19:18:22

标签: hash time-complexity big-o perfect-hash

可能发生冲突的常规哈希函数以恒定时间运行:O(1)。但是,完美哈希函数的时间复杂度是多少?是1吗?

1 个答案:

答案 0 :(得分:0)

如果打算将散列函数用于访问散列表,则完美散列函数和常规散列函数之间在复杂性方面没有区别,因为它们两者都可能在表中产生冲突。原因是与哈希表中元素相关联的索引是哈希除以表的长度(通常是质数)的余数。这就是为什么两个哈希值不同的元素如果它们的余数对(所述)素数取模时对两个元素相同,则会发生冲突。这意味着在两种情况下访问表的时间复杂度均为O(1)

还请注意,哈希的计算通常取决于输入的大小。例如,如果要哈希的元素是字符串,则良好的哈希值会考虑到其所有字符。因此,为了保持复杂度O(1),必须限制输入的大小(或长度)。同样,这适用于完美哈希和常规哈希。