在虚拟树中,一些边被视为实线,一些被视为虚线。通常的伸展操作仅在实线树中执行。为了在虚拟树中的节点 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 和… 阅读更多