如何提出潜在的总日志
让我们考虑一下BST算法,对于元素x的每次访问,它仅将x的搜索路径P中称为前路径的元素重新排列到称为后树的树中。对于任何元素a,令s (a )和s '(a )分别是在重排之前和之后均以a为根的子树的大小。所以小号(一)和小号'(一个)可以当且仅当不同一个∈ P。AxPxas(a)s′(a)as(a)s′(a)a∈P
而且,随时都只会在搜索路径中不断重新排列许多元素。我们称这种算法为“本地”算法。例如,展开树是本地的。每次最多只能按锯齿形,锯齿形和锯齿形重新排列3个元素。A
现在,在后树中创建“许多”叶子的任何本地算法(例如splay树)都具有以下不错的属性。
我们可以创建一个映射这样f:P→P
- 有许多线性,其中a∈P。s′(f(a))≤s(a)/2
- 不断有很多 ,其中 小号“(˚F (一))可以大,但平凡最多 ñ。a∈Ps′(f(a))n
- 其他元素a∈P,。s′(f(a))≤s(a)
我们可以通过展开搜索路径的变化来看到这一点。映射实际上是很自然的。本文的“发散的全局几何视图”精确地显示了如何观察上述观察的细节。
知道了这一事实之后,选择对数总和势很自然。因为我们可以使用type-1元素的潜在变化来支付整个重排。此外,对于其他类型的元素,我们必须最多以对数形式支付潜在的变化。因此,我们可以得出对数摊销成本。
我认为人们之所以认为这是“黑魔法”,是因为先前的分析并未“展开”搜索路径的整体变化,而是一步一步就能看到真正的变化。相反,它们显示了每个“局部转换”的电势变化,然后显示可以神奇地伸缩这些电势变化。
PS该文件甚至显示出对数和数潜力的某些限制。即,仅通过本地算法就可以通过对数和的对来证明访问引理的可满足性。
解释对数和的潜力
还有另一种方法可以定义Georgakopoulos和McClurkin的论文中BST的潜力,这与Sleator Tarjan论文中的对数总和潜力基本相同。但这给了我很好的直觉。
现在,我切换到论文的注释。我们为每个节点u分配一个权重。令W (u )为u的子树权重的总和。(这只是每个节点的权重为1时u的子树的大小。)w(u)uW(u)uu
现在,我们没有定义节点的等级,而是定义了边缘的等级,他们将其称为“ 进度因子”。
pf(e)=log(W(u)/W(v)).
树的潜力是S
Φ(S)=∑e∈Spf(e).
这种势能有一个自然的解释:如果在搜索过程中我们遍历边缘我们将搜索空间从u的后代减少到v的后代,则W的分式减少(u,v)uv。我们的进步因素是对这一“进步”的对数度量,因此得名。[摘自第2.4节]W(u)/W(v)
观察到这几乎等于Sleator Tarjan的潜力,并且在路径上是可加的。
编辑:事实证明,这种替代定义及其背后的直觉很早就由Kurt Mehlhorn所描述。请参阅他的书“数据结构和算法”第一卷,第三节。6.1.2展开树,第263-274页。