算法设计第五次作业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<j‘w(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.00≤1.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‘<

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

4万+

被折叠的 条评论
为什么被折叠?



