版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Algorithms Design Techniques and Analysis 算法设计技巧与分析Algorithms Design Techniques and Analysis教学目的、内容和形式目的:掌握算法的特性;掌握分析算法的基本方法;通过学习常用的精巧算法,掌握设计算法的基本方法.教材算法设计技巧与分析,M.H.Alsuwaiyel, 电子工业出版社.参考书: 算法设计与分析, 王晓东编著, 2003, 清华大学出版社.计算机算法基础,余详宣等编著,2003年,华中科技大学出版社学习形式:自学、讲授相结合.Algorithms Design Techniques and Ana
2、lysis本书主要内容Part 1 算法的基本概念算法分析概念数学基础数据结构堆与不相交集Part 2 基于递归的技术归纳分治动态规划Part 3 最先割技术 . 贪心算法Part 4 问题复杂性 NP完全问题Part 5 克服困难性 回溯法Algorithms Design Techniques and Analysis第一章算法分析的基本概念Algorithms Design Techniques and Analysis本章的主要内容引言搜索问题二分搜索排序问题合并两个两个有序表选择排序从底向上合并排序算法分析概念时间复杂度, 空间复杂度最优算法如何估算算法的运行时间最坏和平均情况分析A
3、lgorithms Design Techniques and Analysis 什么是算法? 算法是定义好的能够完成一定任务的有限指令集合,通常它由一个初始化状态,终止于一个对应的可识别的结束状态。算法通常由计算机程序来实现,算法设计的错误可能导致程序运行时的失败。QAAlgorithms Design Techniques and Analysis算法的5个特征有效性算法必须在有限的时间能够完成,甚至用纸和笔完成确定性算法的每一步能够清楚的定义.有限性算法能够在有限的步骤完成Input 算法有0个或者多个输入5.Output 算法有一个或者多个输出满足有效性,确定性,输入,输出特征的程序是
4、一个过程而不是算法,举例:操作系统是过程而不是算法Algorithms Design Techniques and Analysis算法的比较对于同一个问题,可能存在多个算法。那么那个算法好一点呢?解决问题所需要的时间和空间其它一些所需要的资源,例如通讯开销,处理器的数目,等等QAlgorithms Design Techniques and Analysis1.3 二分搜索搜索问题描述设A1.n 为一个包含n个元素的数组. 考虑这样的问题:判断给定元素X是否在A中。结果就是找到这个元素的下标j, 1j n,使得x=A j ;如果不存在这个元素,j=0Algorithms Design Tec
5、hniques and Analysis线性搜索 主要思想 扫描数组A,依次将每个元素和x进行比较. 如何经过j次比较,1j n,找到x, x=Aj,则返回下标 j否则返回下标0,表示搜索失败了Algorithms Design Techniques and AnalysisAlgorithm 1.1 LINEARSEARCHInput: An array A 1n of n elements and an element x. Output: j if x = A j, 1 j n, and 0 otherwise. 1. j 1 2.while (j A mid. 如何在数组A中, 那么X
6、在A mid的后面 我们进一步在子集Amid+1high中搜索x Algorithms Design Techniques and AnalysisAlgorithm 1.2 BINARYSEARCHInput: 数组A 1n包含n个非递减次序的元,查找元素x. Output: j if x = A j, 1 j n, and 0 otherwise. 1.low1; high n; j 0 2.while (low high) and (j = 0) 3. mid low+high/2 4. if x = A mid then j mid 5. else if x A mid then hi
7、gh mid 1 6. else low mid + 1 7. end while 8.return jAlgorithms Design Techniques and Analysis 例子我们在下面数组中搜索 x=22 A1.14 = 1,4,5,7,8,9,10,12,15,22,23,27,32,35.12345678910111213141457891012152223273235lowhighmid1147814118109101010success!Algorithms Design Techniques and Analysis例子在下面数组中搜索 x=21 A1.14 =1,
8、4,5,7,8,9,10,12,15,22,23,27,32,35.12345678910111213141457891012152223273235lowhighmid1147814118109101010109failure!Algorithms Design Techniques and Analysis二分搜索算法分析 定理: 规模为n的二分搜索算法中元素比较次数最多 logn+1. 什么时候达到最大的比较次数呢?Proof :p5在while循环的第j次循环时,剩余元素的数目是n/2j-1。循环最大次数是满足条件n/2j-1=1时的j值,因此, 1 n/2j-1 2 j= logn+
9、1Algorithms Design Techniques and Analysis1.5 选择排序 基本思想:设 A1.n为包含n个元素的数组首先,我们找到数组中的最小元素,将它存在A1. 接着,我们从剩下的n-1个元素中找到最小的元素,将它存在 A2.重复以上过程,知道整个数组中第二大的元素存在An-1,则算法停止.Algorithms Design Techniques and AnalysisAlgorithm 1.4 SELECTIONSORTInput: 包含n个元素的数组 A 1.n .Output: A 1.n 中的元素非递减排列 1. for i1 to n-1 2. k i
10、 3. for ji+1 to n 找到第 it个最小元素 4. if A j0) and (Ajx) 5. Aj+1Aj 6. jj-1 7. end while 8. Aj+1=x 9.end forAlgorithms Design Techniques and Analysis An exampleA1.11 = 6,10,9,5,3,11,4,8,1,2,76109531148127ix=10j99Algorithms Design Techniques and Analysis算法分析 Observation 1.4: 插入排序的元素比较次数介于n-1 和 n(n-1)/2 之间.
11、 元素赋值次数等于元素比较次数加上 n-1.Algorithms Design Techniques and Analysis1.4 合并两个有序的数组 问题描叙 假设我们有一个数组 A1m 和三个下标p, q 和 r, 其中 1pqrm. 该数组的两个子部分Apq 和 Aq+1r 都是非递减排序. 我们需要重新调整A中的元素,使得Apr 中的元素非递减排序.Algorithms Design Techniques and Analysis 例子合并两个子数组 2, 3, 66 and 7, 11, 13, 45, 57.2366711134557stk2371113455766end!Alg
12、orithms Design Techniques and Analysis Algorithm 1.3 MERGEInput:数组 A1m 和三个下标p, q 和 r, 其中 1pqrm. 该数组的两个子部分Apq 和 Aq+1r 都是非递减排序Output: Apr 中的元素非递减排序. ment: B pr 是一个辅助数组 2.sp; t q + 1; k p 3.while s q and t r 4. if A s A t then 5. B k A s; ss+1 6. else B k A t; tt+1 7. end if 8. kk+1 9. end while 10. if
13、 s = q + 1 then B kr A tr 11.else B kr A sq 12. end if 13. A pr B pr Algorithms Design Techniques and Analysis算法分析 Observation 1.1 :对于合并长度为n1 和 n2 的两个数组(n1n2,n=n1+n2),merge算法的元素比较次数介于n1 和 n-1之间. 特别的是,如果两个数组的大小为n/2, 元素比较次数介于 n/2 和 n-1之间. Observation 1.2:元素赋值次数为 2n.Algorithms Design Techniques and Ana
14、lysis1.7 从底向上合并排序 基本思想直接在数组上进行操作, 利用两个有序数组合并的算法初始化变量, s=1, 每一次循环s=2*s i+1, i + s 和 i+t 定义两个需要合并的子序列的边界. Algorithms Design Techniques and AnalysisAlgorithm 1.6 BOTTOMUPSORTInput: 包含n个元素的数组 A 1.n Output: A 1.n 按照非递减排序. 1. t1 2.while tn 3. s t; t2s; i0 4. while i + t n 5. MERGE(A, i+1, i + s, i+t) 6. i
15、i+t 7. end while 8. if i + s 0的情况下都包含在(n2)中n2+sina,n2+logn ?O符号定义1.2:把函数f(n)包含在O(g(n),记作f(n)O(g(n)。它成立的条件是:对于所有足够大的n,f(n)的上界由g(n)的常数倍所确定即,存在常数c0和一个自然数n0,使得 nn0, f(n) c g(n).例:证明100n+5 O(n2)100n+5 100n+n(当n 5)=101n 101n2 取c=101,n0=5100n+5 100n+5n(当n 1)=105n 105n2 取c=105,n0=1符号定义1.2:把函数f(n)包含在(g(n),记作
16、f(n) (g(n)。它成立的条件是:对于所有足够大的n,f(n)的下界由g(n)的常数倍所确定即,存在常数c0和一个自然数n0,使得 nn0, f(n) c g(n).例:证明n3 (n2) 当n 0时,n3 n2 取c=1,n0=1符号定义1. 3:把函数f(n)包含在(g(n),记作f(n) (g(n)。它成立的条件是:对于所有足够大的n,f(n)的下界,上界由g(n)的常数倍所确定即,存在常数c0和一个自然数n0,使得 nn0, c1g(n) f(n) c2g(n).例:证明n(n-1)/2 (n2)当n 0时,n(n-1)/2=n2/2-n/2 n2/2 证明上界n(n-1)/2=n
17、2/2-n/2 n2/2-n2/2(当n 2)=n2/4 下界 取c2 =1/2,c1=1/4及n0=2利用极限比较增长率比较两个特定函数的增长率情况意味着t(n) O(g(n)情况意味着t(n) (g(n)情况意味着t(n) (g(n)利用基于极限的方法比基于定义的方法更方便洛必达法则史特林公式利用极限比较增长率例:比较log2n和 的增长次数例:比较n!和2n的增长率Algorithms Design Techniques and Analysis1.9 空间复杂度为了求解问题的实例而执行的计算步骤所需要的内存空间,它不包括分配用来存储输入的空间.换句话说,就是算法需要的工作空间不包括输入
18、大小的原因是为了区分那些在整个计算过程中占用了少于线形空间的算法.Algorithms Design Techniques and Analysis例子在线性搜索算法中,只需要一个内存单元用来存储搜索结果.我们可以说需要的空间为(1). 二分搜索,选择排序和插入排序的情况一样.更多的例子 (see P20)Algorithms Design Techniques and Analysis1.10 最优算法定义:一般说来,如果我们能够这个证明解决问题的时间复杂度为(f(n),那么一个时间复杂度为O(f(n)的算法称为一个最优算法(这个定义没有考虑空间复杂度)Algorithms Design T
19、echniques and Analysis1.11 怎么估算算法的运行时间计算迭代的次数.计算基本操作的频度.使用递推关系Algorithms Design Techniques and Analysis1.11.1 计算迭代的次数例子:Input:n=2k, for some positive integer k.Output: count=number of times Step 4 is executed.1.count02. while n13.for j1 to n4. countcount+15.end for6.nn/27. end while8. return count A
20、lgorithms Design Techniques and Analysis 分析COUNT1包含两个嵌套循环和一个变量count,这个变量用来对算法执行的迭代次数计数, 这里 n=2k, 其中 k为正整数.while循环执行 k+1次,这里 k=logn. For循环执行n次,之后是 n/2, n/4,.,1. Algorithms Design Techniques and Analysis1.11.2计算基本运算的频度Definition 1.6:如果算法中的一个元运算具有最高频率, 所以其他元运算频率均在他的频率的常数倍内,则在这个元运算称为基本运算Example: MERGE算法
21、中的元素赋值是基本运算.注意元素比较一般意义下不是基本运算, 极端情况下可能只有一次1.11.3 使用递推关系 Input: An array A1.n of n elements sorted in nondecreasing order and an element x. Output: j if x=Aj, 1j n, and 0 otherwise. 1. binarysearch(1,n)Procedure binarysearch(low,high) 1. if lowhigh then return 0 2. else 3. mid (low+high)/2 4. if x=Amid then retur
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度个人家政服务合同范本2025年2篇
- 2025年度木方板材加工企业与经销商战略合作合同范本4篇
- 二零二四年度园林景观设计沙石材料供应合同3篇
- 2025租赁标的瑕疵与合同救济
- 2025建设工程检测委托合同模板
- 2025二线带薪管理制度(附合同)
- 2025公司不签劳动合同如何维权
- 2025【合同范本】机电设备采购合同模板
- 2025义乌市商品房预(销)售合同网上备案系统管理办法试行
- 2025合同模板合作办学合同范本
- 盐酸埃克替尼临床疗效、不良反应与药代动力学的相关性分析的开题报告
- 消防设施安全检查表
- 组合结构设计原理 第2版 课件 第6、7章 钢-混凝土组合梁、钢-混凝土组合剪力墙
- 建筑公司资质常识培训课件
- 旅居管家策划方案
- GB/T 26316-2023市场、民意和社会调查(包括洞察与数据分析)术语和服务要求
- 春节值班安全教育培训
- 带状疱疹护理查房
- 平衡计分卡-化战略为行动
- 幼儿园小班下学期期末家长会PPT模板
- 幼儿教师干预幼儿同伴冲突的行为研究 论文
评论
0/150
提交评论