不确定我是否应该把它放在数学堆栈交换上,但是很好。
在CLRS的第300页......
Theorem 12.4
The expected height of a randomly built binary search tree on n distinct keys is O(lgn).
他们定义了3个随机变量......
'Xn' is the height of a randomly built binary search on n keys.
'Yn' is the "exponential height", where Yn = 2^(Xn)
'Rn' is the position that the root key would occupy if the key's were sorted, its rank.
指标随机变量Zn,1 Zn,2 Zn,3 ... Zn,n
...
'Zn,i = I{Rn = i}'
所以他们继续做证明(见文),但在其中他们提出以下要求......
We claim that the indicator random variable Zn,i = I{Rn = i} is independent of the
values of Yi-1 and Yn-i. Having chosen Rn = i, the left subtree (whose exponential
height is Yi-1) is randomly built on the i-1 keys whose ranks are less than i. This
subtree is just like any other randomly built binary search tree on i-1 keys.
Other than the number of keys it contains, this subtree's structure is not affected
at all by the choice of Rn = i, and hence the random variables Yi-1 and Zn,i are
independent.
同样对于Yn-i。我的问题是那部分,除了它包含的密钥数量 ... 是的,子树的结构不受Rn的影响,但Rn影响了 子树中的键数似乎意味着由于它如何限制高度而产生的依赖性 的子树。
我显然错过了一些关键的关系。感谢任何帮助。谢谢。
答案 0 :(得分:0)
对于预期的时间证明,您可以将每个插入视为一个独立的事件。插入器不是对抗性的(即不会尝试破坏二叉树)。现在,如果这是真正随机的,那么您可以将每个其他(每个奇数或每个偶数)值视为插入为坏节点。坏节点是导致树高度增加的节点。坏节点之间有很好的节点。
如果你已经有一个高度为'h'的树(认为它有O(2 ^ h)个节点),那么它将有O(2 ^(h-1)个)节点作为叶子(大约是总节点的一半)是叶子)。新值在任何地方都有相同的概率(即作为任何这些节点的子节点)。预计它们中的一半将成为叶子的子叶(将叶节点的高度增加1),另一半将成为叶子的右子。这给出了树的预期O(log n)高度。因此,这种树上的每个操作都花费O(log n)。