可能发生冲突的常规哈希函数以恒定时间运行:O(1)。但是,完美哈希函数的时间复杂度是多少?是1吗?
答案 0 :(得分:0)
如果打算将散列函数用于访问散列表,则完美散列函数和常规散列函数之间在复杂性方面没有区别,因为它们两者都可能在表中产生冲突。原因是与哈希表中元素相关联的索引是哈希除以表的长度(通常是质数)的余数。这就是为什么两个哈希值不同的元素如果它们的余数对(所述)素数取模时对两个元素相同,则会发生冲突。这意味着在两种情况下访问表的时间复杂度均为O(1)
。
还请注意,哈希的计算通常取决于输入的大小。例如,如果要哈希的元素是字符串,则良好的哈希值会考虑到其所有字符。因此,为了保持复杂度O(1)
,必须限制输入的大小(或长度)。同样,这适用于完美哈希和常规哈希。