原问题是给出各个节点和各个节点的被查找概率,然后构造一棵各个节点平均被查找比较次数最小的树,则该问题可以用动态规划来解决 示例如下 推广到一般的情况,并设T(i, j)是由记录{ri, …, rj}(1≤i≤j≤n)构成的二叉查找树,C(i, j)是这棵二叉查找树的平均比较次数,有下列分析 观察这个 ...
分类:
其他好文 时间:
2018-12-06 01:26:45
阅读次数:
233
动态规划师通过组合子问题的解而解决整个问题,将问题划分成子问题,递归地求解各子问题,然后合并子问题的解而得到原问题的解。和分治算法思想一致,不同的是分治算法适合独立的子问题,而对于非独立的子问题,即各子问题中包含公共的子子问题,若采用分治法会重复求解,动态规划将子问题结果保存在一张表中,避免重复子问题重复求解。
动态规划在多值中选择一个最优解,其算法设计一般分为4个步骤:描述最优解的结构;递归定...
分类:
编程语言 时间:
2016-07-06 15:04:10
阅读次数:
297
最优二叉查找树的一道思考习题同最优二叉查找树一样,矩阵连乘问题也是一个卡特兰数问题(其动态规划的构造过程都很像)分析解答:a,铺垫的数学知识首先要搞清楚矩阵相乘是怎么乘的:1)对于连续的n个矩阵相乘 A1 * A2 *A3.........An,其乘法顺序可以是任意的,可以在上面加括号,改变做乘法的...
分类:
其他好文 时间:
2015-04-29 16:51:36
阅读次数:
197
转载请注明出处:http://blog.csdn.net/Lizo_Is_Me/article/details/43735509问题描述:一个监狱里有P个并排着的牢房,从左往右一次编号为1,2,…,P。最初所有牢房里面都住着一个囚犯。现在要释放一些囚犯。如果释放某个牢房里的囚犯,必须要贿赂两边所有的囚犯一个金币,直到监狱的两端或者空牢房为止。现在要释放a1,a2,...,aQa_1,a_2,...,...
分类:
其他好文 时间:
2015-02-11 18:45:51
阅读次数:
514
背景铺垫假设我们正在设计一个翻译程序,讲英语翻译成法语,需要用一棵BST存储文章中出现的单词及等价的法语。因为要频繁地查找这棵树,所以我们希望查找时间越短越好。当然我们可以考虑使用红黑树,或者可能更适用的伸展树,来实现这一操作。但是这仍然不能满足我们的需要:由于单词出现频率不同,如果mycophag...
分类:
其他好文 时间:
2014-12-06 12:49:23
阅读次数:
279
一、什么是最优二叉查找树最优二叉查找树:给定n个互异的关键字组成的序列K=,且关键字有序(k1= i时,需要从ki,...,kj中选择一个根kr,然后分别构造其左子树和右子树。下面需要计算以kr为根的树的期望搜索代价。然后选择导致最小期望搜索代价的kr做根。现在需要考虑的是,当一棵树成为一个节点的子...
分类:
Web程序 时间:
2014-09-04 14:43:09
阅读次数:
290