算法设计与分析——最优二分搜索树(动态规划)

本文介绍了最优二分搜索树问题,通过动态规划的方法寻找给定序列中总耗费最小的二分搜索树。分析了最优解的结构,并给出了状态转移方程,采用自底向上的递推方式计算最优值,最后讨论了如何根据计算结果构造最优解。
摘要由CSDN通过智能技术生成

最优二分搜索树问题

对于一个给定的序列,{b0,a1,b1……an,bn},其中a1,a2……an是实节点,b0,b1,b2……bn是虚节点(就是二分搜索树最终找不到实节点的范围),如何找出并构建一个总耗费最小的二分搜索树?

问题分析

最优二分搜索树的左、右子树也一定是最优二分搜索树。该问题具有最优子结构且子问题重复性,符合动态规划的特性。
故利用动态规划的思想来解此问题。

1.描述最优解结构

目标:
虚节点{b0, b1…… ,bn}和实节点{ a1,a2 ……an }构成树T1n,找出并构建总耗费最小的二分搜索树。
分析:
虚节点{bi-1, bi…… ,bj}和实节点{ ai,ai+1 ……aj }构成以ak为根的二叉树Tij的查找总耗费最小
左子树Ti,k-1由虚节点{bi-1, bi…… ,bk-1}和实节点{ ai,ai+1 ……ak-1 }构成
右子树Tk+1,j由虚节点{bk, bk+1… ,bj}和实节点{ ak+1, ……aj }构成

2.递归地定义最优值(写出状态转移方程)

T[i][j] 由实节点a1…an 和虚节点 b0…bn构成,ak即为根结点
dp[i][j]:T[i][j]的最优查询总耗费,1<=i<=n+1,0<=j<=n,故dp[ ][ ]的长度为n&

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值