最優二叉搜尋樹 動態規劃 還未寫完,尚待補充

2022-02-24 12:44:38 字數 684 閱讀 6778

1、問題描述

給定乙個由n個互異的關鍵字組成的有序序列k=和它們被查詢的概率p=,要求構造一棵二叉查詢樹t,使得查詢所有元素的平均比較次數最小。

對於乙個搜尋樹,當搜尋的元素在樹內時,表示搜尋成功。當不在樹內時,表示搜尋失敗,用乙個「虛葉子節點」來標示搜尋失敗的情況,又因為二叉樹具有左右結點,因此需要n+1個虛葉子節點,對應於di的概率序列是q=。其中d0表示搜尋元素小於k1的失敗結果,dn表示搜尋元素大於kn的失敗情況。di(0i和k(i+1)之間時的失敗情況。搜尋成功與搜尋失敗概率和為1,因此有如下公式:

由每個關鍵字和每個虛擬鍵被搜尋的概率,可以確定在一棵給定的二叉查詢樹t內一次搜尋的平均搜尋路徑長度(也即平均比較次數)。設一次搜尋的實際代價為檢查的節點個數,即在t內搜尋所發現的節點的深度加上1。所以在t內一次搜尋的期望代價為:

需要注意的是:一棵最優二叉查詢樹不一定是一棵整體高度最小的樹,也不一定總是把最大概率的關鍵字放在根部。

動態規劃 最優二叉搜尋樹

動態規劃與分治方法類似,都是通過組合子問題來求解原問題。通常用來求解最優化問題,通常按如下4個步驟設計乙個動態規劃演算法 1.刻畫乙個最優解的結構特徵 2.遞迴的定義最優解的值 3.採用自底向上的方法計算最優解的值 4.利用計算出的資訊構造乙個最優解。二叉搜尋樹 optimal binary sea...

最優二叉搜尋樹動態規劃

最優二叉搜尋樹問題是對於有序集s及其訪問概率或權值 q0,p1,q1,p2,q2,p3,q3 在所有表示有序集s的二叉搜尋樹中找出一顆具有最小平均路長的二叉搜尋樹。解決方法 使用動態規劃方法自底向上逐步構造最優二叉搜尋樹。動態規劃的兩個重要要素是 1 最優子結構。2 重疊子問題。1 所謂最優化子結構...

動態規劃最優二叉搜尋樹

前面的optimal bst還能寫出來,要去construct就不會了,也是理解不夠深刻的原因吧。以下 的construct用了兩種方法,參照了兩位博主,前乙個 風格非常暴力,能看懂以後寫不出來系列。第二種的d的輸出那我沒有看出邏輯,好像是用的輸出的相鄰兩個下標是在同乙個節點上連著?這個的理由我沒想...