算法分析:哈希与图算法的深入解析
1. 哈希算法:无序中的高效查找
1.1 哈希算法概述
在之前的搜索方法中,大多依赖于某种顺序关系。然而,哈希算法却截然不同,它不依赖于搜索空间的任何排序关系,唯一需要进行的测试是相等性测试。哈希算法主要用于插入和搜索操作,而其他操作(如删除)则相对困难,在某些情况下甚至无法实现(如查找中位数或最大值)。
1.2 哈希函数与碰撞问题
存在一个包含大量元素的集合 S,这些元素被称为键(keys),可能需要将其中的任何一个键存储起来。存储结构是一个一维数组 H,其大小为 h,且 h 远小于集合 S 的大小。哈希算法使用哈希函数 σ 将集合 S 中的元素映射到数组 H 的位置上,即对于集合 S 中的每个键 K,σ(K) 是一个介于 0 到 h - 1 之间的数字,目的是将键 K 放置在 H[σ(K)] 位置。
但由于集合 S 中的元素数量远多于数组 H 的位置数量,碰撞是不可避免的。当两个键 K1 和 K2 被哈希函数 σ 映射到数组 H 的同一个位置时,即 σ(K1) = σ(K2),就会发生碰撞。
1.3 碰撞解决策略
为了解决碰撞问题,需要应用碰撞解决策略。假设数组 H 能够指示每个位置是否已被键占用。对于每个键 K,都关联一个固定的探测序列 a0,K, a1,K, a2,K, …,其中第一个元素 a0,K 等于 σ(K)。如果前一个探测位置被除 K 以外的其他键占用,则检查该序列中的后续元素。
具体操作步骤如下:
1. 首先检查 H[a0,K]:
- 如果该位置为空(未被任何键占用),若要插入键 K,则将其放置在此
哈希与图算法详解
超级会员免费看
订阅专栏 解锁全文
455

被折叠的 条评论
为什么被折叠?



