收藏 分享(赏)

算法设计与分析9.pdf

上传人:精品资料 文档编号:9824815 上传时间:2019-09-09 格式:PDF 页数:70 大小:395.85KB
下载 相关 举报
算法设计与分析9.pdf_第1页
第1页 / 共70页
算法设计与分析9.pdf_第2页
第2页 / 共70页
算法设计与分析9.pdf_第3页
第3页 / 共70页
算法设计与分析9.pdf_第4页
第4页 / 共70页
算法设计与分析9.pdf_第5页
第5页 / 共70页
点击查看更多>>
资源描述

1、顺序算法分析的基本方法算法分析的原则正确性、工作量、占用空间简单性 最优性 问题复杂度、 ( )算法分析的实例搜索有序表排序选择1算法分析的原则正确性概念 在给定有效输入后 算法经过有限时间的计, 算并产生正确的答案, 就称算法是正确的.正确性证明的内容 :方法的正确性证明算法思路的正确性.证明 系列与算法的工作对象有关的引理 定一 系列与算法的工作对象有关的引理 、 定理以及公式. 程序的正确性证明 证明所给出的 系列指令 一 系列指令确实做了所要求的工作.2工作量 -时间复杂性分析计量工作量的标准: 对于给定问题,该算法所执行的基本运算的次数.基本运算的选择:根据问题选择适当的基本运算问题

2、 基本运算在表中查找 比较x实矩阵相乘 实数乘法排序 比较遍历二叉 树 置指针树两种时间复杂性 : 最坏情况下的复杂性 W(n)3平均情况下的复杂性 A(n)占用空间 空间复杂性分析-两种占用: 存储程序和输入数据的空间存储中间结果或操作单元所占用空间-额外空间影响空间的主要因素:存储程序的空间 般是常数 (和输入规模无关 )一 般是常数输入数据空间为输入规模 O(n)空间复杂性考虑的是额外空间的大小如果额外空间相对于输入规模是常数, 称为 原地工作的算法 .两种空间复杂性: 最坏情况下的复杂性 和 平均情况下的复杂性4和 .简单性含义:算法简单,程序结构简单. 好处:容易验证正确性便程序试便

3、 于 程序 调 试简单的算法效率不 一 定高 要在保证定高 . 一定效率的前提下力求得到简单的算法. 5最优性含义 指求解某个问题的算法类中效率最高的算法两种最优性最坏情况下最优 设 A 是解某个问题的算法 如果: 设 , 在解这个问题的算法类中没有其它算法在最坏情况下的时间复杂性比 A 在最坏情况下的时间复杂性低 则称 , A 是解这个问题在最坏情况下的最优算法.平均情况下最优 设 是解某个问题的算法 如果: 设 A , 在解这个问题的算法类中没有其它算法在平均情况下的时间复杂性 在 均情 的时间复杂性低 则称比 A 在 平 均情 况下 的时间复杂性低 , A 是解这个问题在平均情况下的最优

4、算法. 6寻找最优算法的途径设计算法 A, 求 W(n). 相当于给出最坏情况下的一个上界 .寻找函数 F(n) 使得对任何算法都存在 一 个规模为 n 的输, 个规模为 入并且该算法在这个输入下至少要做 F(n)次基本运算 . 相当于对问题给出最坏情况下所需基本运算次数的 一 个下界个下界 .如果 W(n)=F(n), 则 A是最优的 .如果 W(n)F(n) A不是最优的或者 F(n)的下界过低, .改进 A或设计新算法 A使得 W(n)F( )n n n .重复以上两步 ,最终得到 W(n) = F(n)为止 .7例 1 在 n个不同的数中找最大的数例 在基本运算 比较算法 findma

5、x: 输入 数组 L, 项数 n1输出 中的最大项L MAX1. MAXL(1); i2;2. while in do3. if MAXn then j0分析:设 x 在 L中每个位置和空隙的概率都是 1/(2n+1) W(n)=n14A(n)=(1+2+.+n)+n(n+1)/(2n+1)3n/4.二分法搜索算法 3 二分搜索 1. k1; mn2 while km do. while 3. j(k+m)/24ifx=L(j) then return4. if then 5. if x1 W(1) = 115()二分法最坏复杂度定理 ( ) 1 W n = logn + 1 n 1证对 n归

6、纳 n=1时 , 左 = W(1)=1, 右 = log 1 +1 = 1. 假设对一切 k, 1kL(i)时,算法 A下一步与 x比较的项的下标 . (2) 若 xL(i) 时算法 A 停止 则 i 没有右儿子19, 则 .实例改进顺序搜索算法和二分搜索算法的判定树 , n =15, 18234 1226 10 1414151 3 5 7 9 11 13 15给定输入 算法 A将从根开始 沿一条路径前进 直到某, , , 个结点为止 . 所执行的基本运算次数是这条路径的结点个数 最坏情况下的基本运算次数是树的深度 +120. .引理引理1 在二叉树的 t 层至多有 2t 个结点(根为 0层

7、)层证 归纳法 .t = 0, 树有 1个结点 (根 ). 20=1. 命题为真 . 假设 t 层有 2t 个结点 , 则 t+1 层至多有 22t个结点 , 即 2t+1个结点 . 即 21引 ( 续 )引 理 ( 续 )引理2 深度为 d 的二叉树至多有 2d+1 1个结点 .法证归纳 法 .d=0, 树有 1个结点 (根 ). 而 20+1 1=1. 假设深度为 d 的二叉树至多有 2d+1 1个结点 , 考虑 一 棵深度为 d+1的二叉树 由引理 1 在第 d+1层棵深度为 . , 层至多有 2d+1个结点 . 故深度为 d+1的二叉树至多有2d+1 1 + 2d+1= 2d+2 1

8、个结点22引 理 ( 续 )引 理 ( 续 )引理 3 n个结点的二叉树深度至少为 logn.证假若 n个结点的二叉树深度至多为logn 1, 则由引理 2 该树的结点数至多为2logn 1+11= 2logn 1 2logn 1 = n 1 23问题的复杂度分析定理2 对于任何 一 个搜索算法存在某个规模为个搜索算法存在某个规模为n的输入使得该算法至少要做 logn +1 次比较 .证 由引理 3 n 个结点的判定树的深度 d 至少为证 , log n, 故 W(n)=d+1 = logn +1.结论: 对于有序表搜索问题 , 在以比较作为基本运算的算法类中 , 二分法在最坏情况下是最优的

9、.24快速排序与二分归并排序快速排序最坏情况 O(n2)平均情况 O(nlogn) 二分归并排序最坏情况 O( l )n ogn 平均情况 O(nlogn) 25堆排序堆的定义堆的运算堆整理 HEAPIFY(A,i)复杂度分析建堆 BUILD-HEAP(A)复杂度分析堆排序算法 HEAPSORT(A)复杂度分析26堆的定义设 T是一棵深度为 d 的二叉树,结点为 L中的元素 . 若满足 :所有内结点(可能一点除外)的度数为 2所有树叶至多在相邻的两层d1 层的所有树叶在内结点的右边d1 层最右边的内结点可能度数为 1(没有右儿子 )每个结点的元素不小于儿子的元素27堆 的 实 例堆 的 实 例

10、11614 10237 9 384 567910堆存储在数组 A2 4 18Ai:结点 i 的元素,例如 A2=14. LEFT(i) RIGHT(i) 分别表示 i 的左儿子和右儿子28, 堆的运算 整理算法 A (A i)HE PIFY ,1. l LEFT(i)2 RIGHT(i). r 3. if l heap-sizeA and Al Ai 4hl l4. then argest 5. else largest i6if h i AdA Al 6. if r eap-size and r argest 7. then largest r8ifl i8. if argest 9. then exchange Ai Alargest10 HEAPIFY(A l )29. , argestHEAPIFY 实例 实例164 1012 31614 1012 37 9 32 8 114456 789107 9 32 8 14456 78910161HEAPIFY(A 2)14 102 34,7 9 32 4 1856 7891030

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报