在虚拟树中,一些边被视为实线,一些被视为虚线。通常的伸展操作只在实线树中执行。为了在虚拟树中的节点 y 上进行伸展操作,实现了以下方法。该算法查看树三次,每次遍历一次,并对其进行更改。在第一次遍历中,只在实线树中进行伸展操作,从节点 y 开始,从 y 到整个树根的路径变为虚线。通过拼接创建此路径为实线。最后在节点 y 上进行的伸展操作现在将使 y 成为树的根…… 阅读更多
静态手指定理 - 令 f 被视为一个称为手指的特定元素。则以下表达式是对伸展序列成本的限制 O(m + n log(n) + Σ Sum log (|f - i[j]| + 1))j 注意 - |f-i| 表示手指和项目 i 之间项目对称排序中的距离。其中 m 表示对最多有 n 个节点的树进行更新或访问操作的次数。观察到,至少在摊销意义上,在永远不超过 n 的树上进行前 m 次操作所花费的时间…… 阅读更多
动态最优性猜想除了伸展树已证明的性能保证外,还有一个未经证实的猜想引起了极大的兴趣。动态最优性猜想表示这个猜想。设任何二叉搜索树算法(如 B)通过遍历从根到 y 的路径来访问元素 y,其成本为 d(y)+1,并且在访问之间可以在树中进行任何旋转,每次旋转的成本为 1。设 B(s) 为 B 执行访问序列 s 的成本。则伸展树执行相同访问的成本为 O[n+B(s)]。有…… 阅读更多
在跳表中,可以从包含元素 b 的节点开始,用手指搜索元素 a,只需从此点 a 继续搜索即可。请注意,如果 a < b,则搜索向后进行,如果 a > b,则搜索向前进行。向后的情况与跳表中的普通搜索对称,但向前的情况实际上更复杂。通常,跳表中的搜索速度很快,因为列表开头的哨兵被认为是最高的节点。但是,我们的手指可能与…… 阅读更多
数据结构上的手指搜索被定义为任何搜索操作(结构支持)的扩展,其中给出了数据结构中元素的引用(手指)以及查询。虽然元素的搜索时间最常表示为数据结构中元素数量的函数,但手指搜索时间被视为元素与手指之间距离的函数。在一组 m 个元素中,两个元素 a 和 b 之间的距离 d(a, b) 是它们等级的差。如果元素 a 和…… 阅读更多