最优二叉检索树

来源:互联网 发布:500万的网络大电影 编辑:程序博客网 时间:2024/06/05 23:51

题目

给定数据集
S = < x1 , x2 , …, xn>,
及S 的存取概率分布如下:
P = < a0 , b1 , a1 , b2 , a2 , … , bn, an >
求一棵最优的( 即平均比较次数最少的)二分检索树.

动态规划思路

令w[i,j]是P[i,j]中所有概率(数据与空隙)之和
设m[i,j] 是相对于输入S[i,j] 和P[i,j] 的最优二叉搜索树的平均比较次数
递推方程(k表示将第k个元素作为根来归结子问题):
m[i,j] = min{m[i,k-1] + m[k+1,j] + w[i,j]} , i=

时空复杂度

m[i,j]中,i,j 的所有组合有O(n^2)种,每种都要对不同的k进行计算,k的选取有O(n)种,每次计算为常数时间
时间复杂度:T(n) = O(n^3)
空间复杂度:即标记函数的个数S(n) = O(n^2)

0 0
原创粉丝点击