“期望不等于每次高度都对数;小概率仍可形成链。若对手能预知或挑选优先级,独立排列论证失效。实际有限位优先级可能碰撞,应给出稳定的平局规则,并把碰撞概率或由此产生的分布偏差计入分析;全表检查一次…”
形式陈述
层级模型
Skip list 以随机层高实现有序字典/集合 ADT。键具有一致的全序,第 0 层含全部不同键,多层链表保存前向指针。固定常数
搜索从最高层头节点出发,能向右且不越过目标就前进,否则下降一层。每个键至多占一个节点,映射模式还在节点中保存其关联值。插入先查找已有键:若命中,映射模式覆盖旧值并保留原有层高,集合模式不作修改;只有新键才独立抽取高度并接入各层。删除在节点出现的每层断链。
时间与空间
按照随机化算法的量词,下面先固定与层高抽样独立的键集和查询。节点指针数期望为
直觉
每一层都是对下一层的独立稀疏抽样,搜索在高层跨过大段键区间,接近目标后逐层下降。几何高度让最高塔只有对数级,每层反向经过的节点数又有常数期望,因此无需全局旋转也能得到期望对数路径。
例子与边界
快车道例子
底层存放全部时间戳;较高层只保留逐级抽样的时间戳。查询某一时刻先在稀疏层跨过大片区间,接近目标后下降到底层。这与给链表额外固定步长索引不同:随机高度使任何插入位置都不需要整体重排。
边界与接口
这些不是最坏界;随机源退化或能观察结构的自适应对手可能制造更细的条件问题。工程实现常设最大层,截断概率分布后须重新写高度保证。范围报告先定位左端点再顺底层输出,期望成本是
推论与应用
插入路径与尾界
搜索时保存每层最后一个小于目标的节点 update
对
这是对最高层的高概率界;完整搜索步数还需结合每层水平移动的几何尾,不能只由“高度低”一句推出。
一条搜索路径的账
搜索键 37 时,指针可能依次经过“顶层右移到 24、下降、右移到 32、下降两层、右移到 35”。从目标位置反向看,每层连续跨过未晋升节点的步数受几何尾控制。对通常的
参考资料
- William Pugh, Skip Lists: A Probabilistic Alternative to Balanced Trees, CACM, 1990.
- Michael Mitzenmacher, Eli Upfal, Probability and Computing, 2nd ed., Cambridge University Press, 2017, randomized data structures chapters.