单独链接与随机探测

时间:2017-03-01 03:15:50

标签: python dictionary hashtable

我目前正在考虑哈希表的冲突解决策略的选项。当我最初被教导哈希表的实现时,我了解到,与具有很多陷阱的线性探测相比,单独链接是首选。在线研究之后,我发现python字典的底层实现使用一种称为随机探测的技术来解决冲突,如this CPython file中的文档字符串所述。

鉴于它在官方字典实现中使用,似乎它可能是解决哈希表冲突的最有效方法。但考虑到实现随机探测的复杂性,并且由于单独的链接通常是一种可接受的碰撞策略,我是否有任何理由不使用单独的链接来支持随机探测?

1 个答案:

答案 0 :(得分:1)

我能想到的两个原因:

1)探测比单独链接更便宜(它不需要内存分配来扩展链表或用于存储元素的任何数据结构)

2)探测比链接(稍微)更节省空间,因为你不需要存储数据结构的开销,(例如链接列表的下一个指针)