算法导论第15章 最优二叉树
2013-12-19 16:15
162 查看
又出bug了,w的值是对的,为啥e数组的值一直不对?
逻辑错了吗?
#include <iostream> #include <climits> #include <cmath> using namespace std; #define EPSILON 0.0000000001 const int m = 7; const int n = 6; struct twoArray { float e[m] ; float root ; }; /**************************************************************/ /* w[i][j];对于一棵由ki,...kj的子树,定义的概率总和,辅助e[i][j]的计算 if j = i-1: w[i][j] = qi-1; if j >= i; w[i][j] = w[i][j-1]+pj+qj; e[i][j]:为搜索一棵包含关键字ki,....kj的最优二叉查找树的期望代价 最终计算e[1, n] if j = i-1: e[i][j] = q[i-1]; if i <= j: e[i][j] = min{e[i][j-1]+e[r+1, j]+w[i][j]}; (i =< r <= j) root[i][j];为kr的下标r, kr为选择的根 */ /**************************************************************/ twoArray *OptimalBST(float *p, float *q) { float w[m] ; twoArray *ta = new twoArray; //for (int i = 0; i < m; i++) //{ // for (int j = 0; j < n; j++) // { // w[i][j] = 0.0; // (ta->e)[i][j] = 0.0; // } //} for (int i = 1; i <= n; i++) //if j = i-1: e[i][j] = q[i-1]; { (ta->e)[i][i-1] = q[i-1]; w[i][i-1] = q[i-1]; } for (int len = 1; len < n; len++) for (int i = 1; i < n-len+1; i++) { int j = i+len-1; (ta->e)[i][j] = _I32_MAX; w[i][j] = w[i][j-1]+p[j]+q[j]; //if i <= j: e[i][j] = min{e[i][j-1]+e[r+1, j]+w[i][j]}; (i =< r <= j) for (int r = i; r <= j; r++) { int t = (ta->e)[i][r-1]+(ta->e)[r+1][j]+w[i][j]; if (((ta->e)[i][j] - t) > EPSILON) { (ta->e)[i][j] = t; (ta->root)[i][j] = r; } } } return ta; } int main() { float p[] = {0.0, 0.15, 0.10, 0.05, 0.10, 0.20}; float q[] = {0.05, 0.10, 0.05, 0.05, 0.05, 0.10}; twoArray *ta = OptimalBST(p, q); system("pause"); return 0; }
逻辑错了吗?
相关文章推荐
- 《算法导论》第15章 动态规划 (1)装配线调度
- 算法导论:第15章 动态规划_1钢条切割
- 算法导论第15章习题15.1-4
- 《算法导论》第15章 动态规划 个人笔记
- 《算法导论》第15章 动态规划 (1)装配线调度
- 算法导论第15章习题15.3-3最大矩阵链乘法
- 算法导论习题解-第15章动态规划
- 《算法导论》第15章-动态规划之0-1背包问题
- 算法导论:第15章 动态规划_1_2钢条切割_动态规划的两种解法
- 《算法导论》学习总结 — 16.第15章 动态规划(1) 基本入门
- 《算法导论》第15章 动态规划 (1)装配线调度
- 《算法导论》读书笔记之第15章 动态规划—装配线调度
- 算法导论:第15章 动态规划_2矩阵链乘法
- 《算法导论》读书笔记之第15章 动态规划—矩阵链乘法
- 《算法导论》读书笔记之第15章 动态规划[总结]
- 算法导论第15章 最长公共子序列问题(LCS)
- 《算法导论》笔记 第15章 15.1 装配线调度
- 《算法导论》学习总结 — 18.第15章 动态规划(3) 基础入门2
- 《算法导论》笔记 第15章 15.2 矩阵链乘法
- 算法导论第15章练习题 15.4-4