第四章主要介绍了如何解递归式,总共三种方法,代换法,递归树法,主方法。
1.代换法(Substitution method)(P38~P40)
定义:即在归纳假设时,用所猜测的值去代替函数的解。
用途:确定一个递归式的上界或下界。
缺点:只能用于解的形式很容易猜的情形。
总结:这种方法需要经验的积累,可以通过转换为先前见过的类似递归式来求解。
2.递归树方法(Recursion-tree method)
起因:代换法有时很难得到一个正确的好的猜测值。
用途:画出一个递归树是一种得到好猜测的直接方法。
分析(重点):在递归树中,每一个结点都代表递归函数调用集合中一个子问题的代价。将递归树中每一层内的代价相加得到一个每层代价的集合,再将每层的代价相加得到递归式所有层次的总代价。
总结:递归树最适合用来产生好的猜测,然后用代换法加以验证。
递归树扩展过程:①.第二章2.3.2节分析分治法时图2-5(P21~P22)的构造递归树过程;②.第四章P41图4-1的递归树构造过程;这两个图需要好好分析。
3.主方法(Master method)
优点:针对形如T(n) = aT(n/b) + f(n)的递归式
缺点:并不能解所有形如上式的递归式的解。
具体分析:
T(n) = aT(n/b) + f(n)描述了将规模为n的问题划分为a个子问题的算法的运行时间,每个子问题的规模为n/b。
在这里可以看到,分治法就相当于a=2, b=2, f(n) = O(n).
主方法主要运用主定理。
第五章
主要围绕一个雇佣问题展开,介绍了概率分析和随机算法。
5.2节的指示器随机变量就是用的高中学的期望,用期望来表示概率。
随机发生在算法上,而不是发生在输入分布上。这就是概率分析与随机算法之间的区别。
随机化算法
3.《随机化算法(3) — 舍伍德(Sherwood)算法》
4.《随机化算法(4) — 拉斯维加斯(Las Vegas)算法》
5.《随机化算法(5) — 蒙特卡罗(Monte Carlo)算法》
没有看,暂时还不知道这玩意有什么用