算法:最优二叉搜索树

本文介绍了如何验证最优二叉搜索树遵循四边形法则,并通过正例说明其符合该法则。同时,展示了矩阵连乘算法不满足四边形法则的反例。此外,还概述了编程实现最优二叉搜索树的动态规划方法及其递推公式。

算法设计第五次作业part2

1.纸面题:对最优二叉树和矩阵连乘两种算法验证四边形法则,如果符合四边形法则则举几个正例,如果不符合则举几个反例

四边形法则

i<i‘   j<j‘w(i,j)+w(i‘,j‘)≤w(i‘,j)+w(i,j‘) i < i^`\ \ \ j < j^` \\ w(i,j) + w(i^`,j^`) \le w(i^`,j) + w(i,j^`) i<i   j<jw(i,j)+w(i,j)w(i,j)+w(i,j)

最优二叉树

符合四边形法则,举正例

对于如下输入

节点概率表

节点 p1 p2 p3 p4 p5
概率 0.15 0.10 0.05 0.10 0.20

伪节点概率表

节点 (-无穷, p1) (p1,p2) (p2,p3) (p3,p4) (p4,p5) (p5, 无穷)
概率 0.05 0.1 0.05 0.05 0.05 0.1

根据最优二叉搜索树算法,可以得出如下的二维矩阵e[i][j]

e[i][j]表示包含关键字ki ... kj的最优二叉搜索树进行一次搜索的期望代价,最终希望计算出 e[0][n]

0.05 0.45 0.90 1.25 1.75 2.75
0 0.10 0.40 0.70 1.20 2.00
0 0 0.05 0.25 0.60 1.30
0 0 0 0.05 0.30 0.90
0 0 0 0 0.05 0.05
0 0 0 0 0 0.10

可以看到:
e[0][4]+e[1][5]≤e[0][5]+e[1][4]1.75+2.00≤1.20+2.75 e[0][4] + e[1][5] \le e[0][5] + e[1][4]\\ 1.75 + 2.00 \le 1.20 + 2.75 e[0][4]+e[1][5]e[0][5]+e[1][4]1.75+2.001.20+2.75
矩阵中其他非0元素,皆满足:
e[i][j]+e[i‘][j‘]≤e[i][j‘]+e[i‘][j] e[i][j] + e[i^`][j^`] \le e[i][j^`] + e[i^`][j] e[i][j]+e[i][j]e[i][j]+e[i<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值