※ 引述《winnie48 (winnie)》之銘言:
: 想請問 binary search tree 最好的情況下 height = log (n) , 但是 worst case = n
: ,n 是元素個數。那麼要怎麼證明 random 建立的 binary search tree height = log(n
: ) ??
: 實在是不太會這種要考慮到機率的情況,拜託大家解答了!謝謝!
給定 n 個元素為插入 BST 的元素集合。
假設插入BST的順序是均勻隨機分布。
此時建出來的樹 T 本身就是一個隨機物件。
那T的高度 Height(T) 也是一個隨機變數
所以 Height(T) 的期望值就是期望高度 = E[Height(T)]
可以證明為O(lg n)。
但是這性質很弱,因為他只證明期望值,沒有提供concentration。
所以需要一個比較強的性質,像是
Pr(Height(T) > c * lg n) = o(1)
也就是,T的高度大於 c * lg n的機率很小。
不過這證明起來比較麻煩。
插入的期望深度又稍微不一樣,要看你怎麼定義插入的東西。
令D(x, T)表示把 x 插入到 T 的深度。
如果插入的元素是任意的,討論worst case。
你是在找 Max_x E[D(x, T)],注意這時候T是隨機變數。
Max_x E[D(x, T)]應該頂多比 E[Height(T)] 多一而已。
如果插入的元素是隨機的(你要先定義好隨機的意義是什麼)
你是在找 Avg_x E[D(x, T)],不過這數值不可能大於Max_x E[D(x, T)]
舉例來說,令 T 中的元素是 a1, ..., an, 且ai <ai+1,
假設隨機的意義是 x 在 ai和ai+1中間的機率是均等的 for all i。
此時Avg_x E[D(x, T)] 必定會小於 Max_x E[D(x, T)]。