1、-1-2011-20122011-20122011-20122011-2012算法设计与分析期末复习算法设计与分析期末复习一、复杂性阶高低比较一、复杂性阶高低比较例例 1 1 1 1:设2,0100,()log,1001000,1000.annT nbnnncnn=,判断对错:1.2()()T nO n=(true)2.2()()T nn=(true)3.2()()T nn=(true)4.()(log)T nO nn=(false)5.()(log)T nnn=(false)6.()(log)T nnn=(true)7.()()T nO n=(false)8.()()T nn=(false)
2、9.()()T nn=(true)10.()T n可作为时间复杂性函数(true)例例 2 2 2 2:对于下列函数)(nf和)(ng,确定)()(ngOnf=或)()(ngnf=或)()(ngnf=:1、)5(loglog5log)(,log)(22+=+=nnnngnnf2、)(log)(,log)(22nOnnngnnf=3、)(loglog)(,)(22nnnngnnf=4、)(logloglog)(,log)(nnnnnngnnnnf=+=+=5、)(logloglog)(,log)(22nOnnngnnf=6、)100(2100)(,2)(22nnngnfnn=二、分治法的基本原理
3、二、分治法的基本原理例例 3 3 3 3:简述分治法的基本原理和适用范围。答:1、分治法的基本原理:1)将问题的实例划分为几个较小的实例,最好具有相等的规模(一般是递归分成两个实例);2)对这些较小的实例求解(一般使用递归的方法,但在问题规模足够小的时候也可以采用采用其它算法(停止递归);3)合并这些较小问题的解,以得到原始问题的解(事实上,一个分治算法的精华就在于合并解的过程);2、分治法的适用范围:-2-1)该问题的规模缩小到一定的程度就可以容易地解决;2)该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质。3)利用该问题分解出的子问题的解可以合并为该问题的解;4)该问题
4、所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子子问题。例例 4 4 4 4:请利用你学过的一门编程语言写出二分查找算法程序。算法程序如下:public staticintbinarySearch(int a,int x,int n)intleft=0;intright=n-1;while(leftamiddle)left=middle+1;elseright=middle-1;return-1;三、三、动态规划基本原理动态规划基本原理例例 5 5 5 5:简述动态规划基本原理和适用范围答:1、动态规划基本原理:1)动态规划算法与分治法类似,其基本思想也是将待求解的问题分成若干个子
5、问题。与分治法不同的是,适合于用动态规划求解的问题,经分解得到的子问题往往不是相互独立的。用分治法求解时,有些子问题被重复计算多次;而动态规划利用一个表来记录所有已解决的子问题的答案,在需要的时候找出已求的答案,可以避免大量的重复计算。2)动态规划算法的设计步骤:A.分析最优解的子结构问题的最优解子结构性质是该问题可用动态规划算法求解的显著特征;B.建立递归关系递归地定义最优值;C.计算最优值以自底向上的方式计算出最优值;D.构造最优解根据计算最优值时得到的信息,构造最优解。例例 6 6 6 6:A 与 B 两支篮球队进行比赛,直到一个对赢得了 n 场比赛为止。假设 A 队赢得每场比赛的概率是
6、相同的,都为 p,而丢到比赛的概率为 q=1-p。当 A 还需要 i 场胜利才能赢得比赛,而 B 还需要 j 场胜利才能赢得比赛的时候,A 队赢球的概率为 P(i,j)。请为 P(i,j)建立一个可以在动态规划算法中使用的递推关系。解:)1,(),1(),(+=jiqPjipPjiP)0,0(ji-3-例例 7 7 7 7:有如下 0/1 背包问题:给定 n 种物品和一背包,物品 i 重量是wi,其价值为vi,背包的容量为 C。试分析该问题的最优子结构和递归关系,并写出递推方程。解:1、分析最优子结构:0/1 背包问题具有最优子结构性质。设(y1,y2,.,yn)是所给0/1 背包问题的一个最
7、优解,则(y1,y2,.,yn)是下面相应子问题的一个最优解。=niiixvy1maxCxwinii=12、建立递归关系设所给背包问题的子问题的最优值为 m(i,j),即背包容量为 j,可选择物品为i,i+1.,n 时背包问题的最优值。由背包问题的最优子结构性质,可以建立如下递推式:)0)(,1()(),1(),1(max),(iiiiwjjimwjvwjimjimjim+=)0(0)(),(nnnwjwjvjnm=四、四、贪心算法贪心算法例例 8 8 8 8:简述贪心算法的性质以及它与动态规划算法的差异。答:贪心算法是通过一系列的选择得到问题的解。它所做的每一个选择都是当前状态下局部最好的选
8、择,即贪心选择。1、贪心选择:指所求问题的整体最优解可以通过一系列局部最优的选择来达到;2、最优子结构:当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质;3、贪心算法与动态规划算法的差异:贪心法的每一步都做一个最佳选择,得到的是最优解;动态规划算法需要把每一步所得到的最优结果解出来,然后综合得到最优解。例例 9 9 9 9:已知字符 A,B,C,D,E 和 F 出现在报文中的频率如下表,试用前缀码编码法对字符进行编码(要求写出编码过程),并计算平均码长。字符ABCDEF频率301625194228解:一种编码过程如下图:-4-可知字符的编码为:A:01B:000C:100D:001E:11F:10118.016028)(26.016042)(12.016019)(16.016025)(1.016016)(19.016030)(=FfEfDfCfBfAp平均码长58.2)()()(=cdcfTBCcT
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1