《算法设计方法》PPT课件.ppt
《《算法设计方法》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《算法设计方法》PPT课件.ppt(61页珍藏版)》请在三一办公上搜索。
1、第十一章 算法设计方法,11.1 分治法11.2 动态规划11.3 贪心法11.4 回朔法11.5 分枝限界法,11.1 分治法,对于一个输入规模为n的问题,用某种方法把输入分割成k个子集(1kn),从而产生k个子问题,k个子问题解决后,再用某种方法组合成原来问题的解。,分治法:分而治之,一、排序算法中的分治法,选择排序 将n个元素放在一个数组中,先通过n-1次比较选出其中的最小元素,与第1个元素交换 再在剩下的n-1个元素中选出最小的元素,与第2个元素交换.,T(n)=O(n2),归并排序,void MSort(RcdType SR,RcdType/将TR2s.m和TR2m+1.t归并到TR
2、1s.t/Msort,T(n)=n logn-n+1,快速排序,从输入序列中随机的抽取一个元素a,以a为界,把全体元素分成:S1 S2 S3 小于a 等于a 大于a 若S1、S3排好序了,则全体元素就有序了,而S1、S3的排序又可以用这种方法,void Qsort(SqList/对高子表递归排序/Qsort,T(n)=O(nlog2n),该问题的规模缩小到一定的程度就可以容易地解决;该问题可以分解为若干个规模较小的相同问题;利用该问题分解出的子问题的解可以合并为该问题的解;该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题;,分治法选用,11.2 动态规划,历史不会重演,1
3、0,F(n)=,1if n=0 or 1F(n-1)+F(n-2)if n 1,递归算法的伪代码:F(n)1if n=0 or n=1 then return 12elsereturn F(n-1)+F(n-2),考虑Fibonacci序列F(n),11,计算F(7),F7,F6,F5,F5,F4,F3,F3,F2,F1,F0,F2,F1,F0,F1,F2,F1,F0,F2,F1,F0,F2,F1,F0,F4,F4,F3,F3,F3,F2,F1,F0,F2,F1,F0,F2,F1,F0,F1,F1,F1,F1,12,计算F(7),计算F(2)重复8次!,F7,F6,F5,F5,F4,F3,F3
4、,F2,F1,F0,F2,F1,F0,F1,F2,F1,F0,F2,F1,F0,F2,F1,F0,F4,F4,F3,F3,F3,F2,F1,F0,F2,F1,F0,F2,F1,F0,F1,F1,F1,F1,13,The execution of F(7),计算 F(3)重复 5 次!,F7,F6,F5,F5,F4,F3,F3,F2,F1,F0,F2,F1,F0,F1,F2,F1,F0,F2,F1,F0,F2,F1,F0,F4,F4,F3,F3,F3,F2,F1,F0,F2,F1,F0,F2,F1,F0,F1,F1,F1,F1,14,计算 F(7),多次重复计算!如何避免?,F7,F6,F5,F
5、5,F4,F3,F3,F2,F1,F0,F2,F1,F0,F1,F2,F1,F0,F2,F1,F0,F2,F1,F0,F4,F4,F3,F3,F3,F2,F1,F0,F2,F1,F0,F2,F1,F0,F1,F1,F1,F1,15,改进的想法,备忘录 当 F1(i)被计算后,保存它的值 当再次计算F1(i)时,只需要从内存中取出即可,F1(n)1 if vn 0 then2 vn F1(n-1)+F1(n-2)3 return vn,Main()1 v0=v1 12 for i 2 to n do3 vi=-14 output F1(n),16,再计算F(7),v0v1v2v3v4v5v6v7
6、,F7,F6,F5,F5,F4,F3,F3,F2,F1,F0,F2,F1,F0,F1,F2,F1,F0,F2,F1,F0,F2,F1,F0,F4,F4,F3,F3,F3,F2,F1,F0,F2,F1,F0,F2,F1,F0,F1,F1,F1,F1,F(i)=Fi,17,再计算F(7),v0v1v2v3v4v5v6v7,F7,F6,F5,F5,F4,F3,F3,F2,F1,F0,F2,F1,F0,F1,F2,F1,F0,F2,F1,F0,F2,F1,F0,F4,F4,F3,F3,F3,F2,F1,F0,F2,F1,F0,F2,F1,F0,F1,F1,F1,F1,18,再计算F(7),v0v1v2
7、v3v4v5v6v7,F7,F6,F5,F5,F4,F3,F3,F2,F1,F0,F2,F1,F0,F1,F2,F1,F0,F2,F1,F0,F2,F1,F0,F4,F4,F3,F3,F3,F2,F1,F0,F2,F1,F0,F2,F1,F0,F1,F1,F1,F1,19,再计算F(7),v0v1v2v3v4v5v6v7,F7,F6,F5,F5,F4,F3,F3,F2,F1,F0,F2,F1,F0,F1,F2,F1,F0,F2,F1,F0,F2,F1,F0,F4,F4,F3,F3,F3,F2,F1,F0,F2,F1,F0,F2,F1,F0,F1,F1,F1,F1,20,再计算F(7),v0v1
8、v2v3v4v5v6v7,F7,F6,F5,F5,F4,F3,F3,F2,F1,F0,F2,F1,F0,F1,F2,F1,F0,F2,F1,F0,F2,F1,F0,F4,F4,F3,F3,F3,F2,F1,F0,F2,F1,F0,F2,F1,F0,F1,F1,F1,F1,21,再计算F(7),v0v1v2v3v4v5v6v7,F7,F6,F5,F5,F4,F3,F3,F2,F1,F0,F2,F1,F0,F1,F2,F1,F0,F2,F1,F0,F2,F1,F0,F4,F4,F3,F3,F3,F2,F1,F0,F2,F1,F0,F2,F1,F0,F1,F1,F1,F1,22,F1,F0,再计算F
9、(7),v0v1v2v3v4v5v6v7,F7,F6,F5,F5,F4,F3,F3,F2,F1,F0,F2,F1,F2,F1,F0,F2,F1,F0,F2,F1,F0,F4,F4,F3,F3,F3,F2,F1,F0,F2,F1,F0,F2,F1,F0,F1,F1,F1,F1,23,F1,F0,F2,F1,F0,F1,再计算F(7),F7,F6,F5,F5,F4,F3,F3,F2,F1,F0,F2,F1,F2,F1,F0,F2,F1,F0,F4,F4,F3,F3,F3,F2,F1,F0,F2,F1,F0,F2,F1,F0,F1,F1,F1,v0v1v2v3v4v5v6v7,24,F1,F0,F2
10、,F1,F0,F1,再计算F(7),F7,F6,F5,F5,F4,F3,F3,F2,F1,F0,F2,F1,F2,F1,F0,F2,F1,F0,F4,F4,F3,F3,F3,F2,F1,F0,F2,F1,F0,F2,F1,F0,F1,F1,F1,v0v1v2v3v4v5v6v7,25,F1,F0,F2,F1,F0,F2,F1,F0,F2,F1,F0,F3,F1,F1,再计算F(7),F7,F6,F5,F5,F4,F3,F3,F2,F1,F0,F2,F1,F4,F4,F3,F3,F2,F1,F0,F2,F1,F0,F2,F1,F0,F1,F1,v0v1v2v3v4v5v6v7,26,F1,F0,
11、F2,F1,F0,F2,F1,F0,F2,F1,F0,F3,F1,F1,再计算F(7),F7,F6,F5,F5,F4,F3,F3,F2,F1,F0,F2,F1,F4,F4,F3,F3,F2,F1,F0,F2,F1,F0,F2,F1,F0,F1,F1,v0v1v2v3v4v5v6v7,27,F1,F0,F2,F1,F0,F2,F1,F0,F2,F1,F0,F3,F3,F3,F2,F1,F0,F2,F1,F0,F2,F1,F0,F1,F1,F1,F1,再计算F(7),F7,F6,F5,F5,F4,F3,F3,F2,F1,F0,F2,F1,F4,F4,v0v1v2v3v4v5v6v7,28,F1,F
12、2,F1,F0,F2,F1,F0,F2,F1,F0,F4,F3,F3,F3,F2,F1,F0,F2,F1,F0,F2,F1,F0,F1,F1,F1,F1,再计算F(7),F7,F6,F5,F5,F4,F3,F3,F2,F1,F0,F2,F0,F1,F4,v0v1v2v3v4v5v6v7,29,新的实现节约了大量的时间,我们能够做得更好吗?,注意到使用备忘录虽然可以减少重复计算,但是仍然需要函数调用以及参数,这些会浪费许多时间.事实上,计算F(i),我们只需要计算F(i-1)&F(i-2)改进的想法以自底向上的方式,即由简单到复杂开始计算依次计算F(2)(已知F(0)=F(1)=1),F(3),
13、F(4),F2(n)1 F0 12 F1 13 for i 2 to n do4Fi Fi-1+Fi-25 return Fn,30,递归 vs 动态规划,递归:F(n)1if n=0 or n=1 then return 12elsereturn F(n-1)+F(n-2),动态规划:F2(n)1 F0 12 F1 13 for i 2 to n do4Fi Fi-1+Fi-25 return Fn,太慢!,有效!时间复杂度仅为O(n),31,方法的总结,写出一个递归公式,这个公式给出了问题与其子问题的解之间的关系E.g.F(n)=F(n-1)+F(n-2).用表(通常用数组)记录子问题的解
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法设计方法 算法 设计 方法 PPT 课件
链接地址:https://www.31ppt.com/p-5588756.html