本文主要是对 算法导论P154定理11.6的证明分析以及对开放寻址法的性能优异的本质进行分析
• 【本定理证明的依据是什么?】
§ 开放寻址表特殊的插入和查找规则
§ 均匀散列假设
• 对定理11.6的证明分析非常非常困难,请你务必找到证明步骤中体现开放寻址法独特性的关键步骤。以及想想看如果是普通数组,进行类似11.6定理证明为什么不行。
• 【开放寻址法的性能与结构关联分析】
○ 开放寻址法散列表和链表法散列表的本质极其相似。他们都是将同一类别的关键字映射到一组相同或相似的散列值上(链表法是映射到同一散列值,而开放寻址法则映射到一类散列值);这样的处理方式和聚类算法非常相似,他们都试图将对象分类并避免群集(群集和聚类是某种程度上的反义词,线性探查和二次探查都会出现群集现象,因此其性能不如双重散列),分类好了自然就方便进行查找了。
○ 本质上,开放寻址法查找迅速的本质原因
§ 开放寻址法的插入和查找规则+均匀散列假设,使得其上的元素近乎完美的被分类了。而均匀散列假设是通过特殊的散列函数来实现的,双重散列是最接近均匀散列的一种散列函数。
○ 直观上来看,开放寻址表和数组非常相似,但是为何插入操作的时间会差异如此之大呢?
§ 数组没有分类,因此插入操作要移动很多元素非常愚蠢。而开放寻址则有一定程度上的分类和目录
• 【证明结果的意义】定理11.8和推论11.7都是通过11.6的结论直接推导出的,11.8和11.7并没有分析的价值,一切的核心和精髓都在定理11.6。
下面是 算法导论 定理11.6的证明