第1章 算法分析基本概念.ppt
《第1章 算法分析基本概念.ppt》由会员分享,可在线阅读,更多相关《第1章 算法分析基本概念.ppt(85页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1第第1章章 算法分析基本概念算法分析基本概念20092009年年年年2 2月月月月2323日日日日2引言引言历史背景历史背景算法复杂性算法复杂性时间复杂性时间复杂性时间复杂性时间复杂性空间复杂性空间复杂性空间复杂性空间复杂性排序排序选择排序选择排序选择排序选择排序插入排序插入排序插入排序插入排序自底向上合并排序自底向上合并排序自底向上合并排序自底向上合并排序冒泡排序冒泡排序冒泡排序冒泡排序希尔排序希尔排序希尔排序希尔排序快速排序快速排序快速排序快速排序3引言引言计算机科学就是计算机科学就是算法研究算法研究4算法(算法(Algorithm)解题方案的准确完整的描述,是解题方案的准确完整的描述,
2、是在有限步骤内求解某一问题所使用在有限步骤内求解某一问题所使用的一组定义明确的规则。的一组定义明确的规则。无论是解题思路还是编写程序,无论是解题思路还是编写程序,都是在实施某种算法。前者是推理都是在实施某种算法。前者是推理实现,后者是操作实现;实现,后者是操作实现;算法不是程序,但算法是用程序算法不是程序,但算法是用程序或伪代码来描述的。或伪代码来描述的。5算法分析(算法分析(Algorithm Analysis)算法分析研究的目标为:算法一算法分析研究的目标为:算法一旦转换成某种语言的程序,该程序旦转换成某种语言的程序,该程序在计算机上运行,需要多少时间和在计算机上运行,需要多少时间和存储空
3、间才能完成解题方案。存储空间才能完成解题方案。确定一个程序的运行效率,既可确定一个程序的运行效率,既可使用数学分析方法,也可使用实验使用数学分析方法,也可使用实验测试方法,可以在理论和实践二个测试方法,可以在理论和实践二个方面作出评估。方面作出评估。算法特征算法特征一个算法应具有以下五个重要的特征:一个算法应具有以下五个重要的特征:有穷性有穷性:一个算法必须保证执行有限点之后结束;:一个算法必须保证执行有限点之后结束;确切性确切性:算法的每一步骤须有确切的定义;:算法的每一步骤须有确切的定义;输入输入:一个算法有:一个算法有0个或多个输入,以刻画运算对象个或多个输入,以刻画运算对象的初始情况,
4、这里的初始情况,这里0个输入是指算法本身定义了初始个输入是指算法本身定义了初始条件;条件;输出:输出:一个算法有一个或多个输出,以反映对输入一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法毫无意义;数据加工后的结果。没有输出的算法毫无意义;可行性可行性:算法原则上能够精确地运行,而且人们用:算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。笔和纸做有限次运算后即可完成。671.2 历史背景历史背景 2020世纪早期,能否用一种有效的过程(算法)来求解世纪早期,能否用一种有效的过程(算法)来求解世纪早期,能否用一种有效的过程(算法)来求解世纪早期,能否用一种
5、有效的过程(算法)来求解问题,受到广泛的关注。人们的注意力是放在问题的可问题,受到广泛的关注。人们的注意力是放在问题的可问题,受到广泛的关注。人们的注意力是放在问题的可问题,受到广泛的关注。人们的注意力是放在问题的可解和不可解的分类上。解和不可解的分类上。解和不可解的分类上。解和不可解的分类上。问题的可判定性和可解性的研究领域,称为问题的可判定性和可解性的研究领域,称为问题的可判定性和可解性的研究领域,称为问题的可判定性和可解性的研究领域,称为“可计算可计算可计算可计算理论理论理论理论”。数字计算机出现以后,由于有限的资源,提出了尽可数字计算机出现以后,由于有限的资源,提出了尽可数字计算机出现
6、以后,由于有限的资源,提出了尽可数字计算机出现以后,由于有限的资源,提出了尽可能少用资源的有效算法的需求,导致出现计算复杂性的能少用资源的有效算法的需求,导致出现计算复杂性的能少用资源的有效算法的需求,导致出现计算复杂性的能少用资源的有效算法的需求,导致出现计算复杂性的新领域。新领域。新领域。新领域。“计算复杂性计算复杂性计算复杂性计算复杂性”是研究可解类问题的效率。效率是用是研究可解类问题的效率。效率是用是研究可解类问题的效率。效率是用是研究可解类问题的效率。效率是用解决问题所需的时间和空间来描述的。解决问题所需的时间和空间来描述的。解决问题所需的时间和空间来描述的。解决问题所需的时间和空间
7、来描述的。历史背景历史背景要使计算机完成人们预定的工作,首先必要使计算机完成人们预定的工作,首先必须为如何完成预定的工作设计一个算法,须为如何完成预定的工作设计一个算法,然后再根据算法编写程序。计算机程序要然后再根据算法编写程序。计算机程序要对问题的每个对象和处理规则给出正确详对问题的每个对象和处理规则给出正确详尽的描述,其中程序的尽的描述,其中程序的数据结构数据结构和和变量变量用用来描述问题的对象,来描述问题的对象,程序结构程序结构,函数函数和和语语句句用来描述问题的算法、用来描述问题的算法、算法算法和和数据结构数据结构是程序的两个重要方面。是程序的两个重要方面。8算法是问题求解过程的精确描
8、述。一个算法由有算法是问题求解过程的精确描述。一个算法由有限条可完成或机械地执行的,有结果指令组成。限条可完成或机械地执行的,有结果指令组成。指令正确地描述了要完成的任务和它们所执行的指令正确地描述了要完成的任务和它们所执行的顺序。计算机按算法指令所描述的顺序使得算法顺序。计算机按算法指令所描述的顺序使得算法的指令能在有限的步骤内终止,或终止于给出问的指令能在有限的步骤内终止,或终止于给出问题的解,或终止于指出问题对此输入数据无解。题的解,或终止于指出问题对此输入数据无解。通常求解一个问题可能会有多种算法可供选择,通常求解一个问题可能会有多种算法可供选择,选择的主要标准首先是算法的选择的主要标
9、准首先是算法的正确性和可靠性,正确性和可靠性,简单性和易理解性简单性和易理解性。其次是算法所需要的。其次是算法所需要的存储空存储空间少和执行更快间少和执行更快等。等。9历史背景历史背景算法复杂性算法复杂性算法的复杂性是算法效率的质量,是评价算算法的复杂性是算法效率的质量,是评价算法优劣的重要依据。一个算法的复杂性的高法优劣的重要依据。一个算法的复杂性的高低体现在运行该算法所需要的计算机资源的低体现在运行该算法所需要的计算机资源的多少。所需的资源越多,该算法的复杂性越多少。所需的资源越多,该算法的复杂性越高;反之,所需的资源越低,该算法的复杂高;反之,所需的资源越低,该算法的复杂性越低。性越低。
10、计算机的资源。最重要的是计算机的资源。最重要的是时间和空间时间和空间(即(即存储器)资源。因而算法的复杂性有时间复存储器)资源。因而算法的复杂性有时间复杂性和空间复杂性之分。杂性和空间复杂性之分。10对于任意给定的问题,设计出复杂性尽可能低对于任意给定的问题,设计出复杂性尽可能低的算法是我们在设计算法过程中追求的一个重的算法是我们在设计算法过程中追求的一个重要目标责任制,另一方面,当给定的问题已经要目标责任制,另一方面,当给定的问题已经有多种算法时,选择其中之复杂性最低者,是有多种算法时,选择其中之复杂性最低者,是我们在选用算法适应遵循的一个重要准则,因我们在选用算法适应遵循的一个重要准则,因
11、此,算法的复杂性分析对算法的设计或选用有此,算法的复杂性分析对算法的设计或选用有着重要的指导意义和实用价值。着重要的指导意义和实用价值。关于算法的复杂性,有两个问题要弄清楚:关于算法的复杂性,有两个问题要弄清楚:用怎样的一个量表达一个算法的复杂性;用怎样的一个量表达一个算法的复杂性;对于一个对定的一个算法,怎样具体计算它的复对于一个对定的一个算法,怎样具体计算它的复杂性杂性11算法复杂性算法复杂性问题:已知不重复且已经按从小到大排好的问题:已知不重复且已经按从小到大排好的n个整数的数组个整数的数组A1.n。对于给定的整数。对于给定的整数x,要,要求寻找一个下标,使得求寻找一个下标,使得Aj=x
12、,若找不到,则,若找不到,则返回一个返回一个0.该问题的一个简单算法是:从头到尾扫描数该问题的一个简单算法是:从头到尾扫描数组组A。按照该方法,或者扫到。按照该方法,或者扫到A的第的第i个分量时个分量时发现满足发现满足Aj=x,或者扫到,或者扫到A的最后一个分量,的最后一个分量,经检测仍不满足经检测仍不满足Aj=x12算法复杂性算法复杂性13出循环分析:出循环分析:x=Aj,此时,此时jn;j等于等于n,但,但An与与x尚未比较(或相等或不相等)尚未比较(或相等或不相等)。算法算法1.1 LinearSearch(Page 3)输入:输入:n个元素的数组个元素的数组A1.n和元素和元素x输出:
13、如果输出:如果x=Aj(1jn),则输出),则输出 j,否则输,否则输出出0。1.j12.while(jAmid,如果,如果x在在A中,则它必定是中,则它必定是Amid+1,Amid+2,Ahigh中的一个,接下来只需在中的一个,接下来只需在Amid+1.high中搜索中搜索x。换句话说,换句话说,Alow.mid中的项目在后续比较中被中的项目在后续比较中被掉弃了。类似地,如果掉弃了。类似地,如果xA7xA7,可以把,可以把,可以把,可以把A1.7A1.7掉弃。掉弃。掉弃。掉弃。在剩余元素在剩余元素在剩余元素在剩余元素A8.14A8.14中搜索中搜索中搜索中搜索x=22x=22,AA (8+1
14、4)/2(8+14)/2 =A11=23=A11=23,由于由于由于由于xA11xA9xA9,可以把,可以把,可以把,可以把A8.9A8.9掉弃。掉弃。掉弃。掉弃。留在序列中仅剩一个项目留在序列中仅剩一个项目留在序列中仅剩一个项目留在序列中仅剩一个项目A10=22A10=22,最后找到,最后找到,最后找到,最后找到x=A10 x=A10,搜索,搜索,搜索,搜索成功完毕(若成功完毕(若成功完毕(若成功完毕(若xA10 xA10,则,则,则,则lowlow highhigh条件不成立,出循环)。条件不成立,出循环)。条件不成立,出循环)。条件不成立,出循环)。10101212 1515 2222A
15、8.10=A8.10=8 9 8 9 10 1018二分搜索法分析二分搜索法分析二分搜索法分析二分搜索法分析 假定每个三向比较假定每个三向比较假定每个三向比较假定每个三向比较(if-then-else)(if-then-else)计为一次比较,显然最小比较次计为一次比较,显然最小比较次计为一次比较,显然最小比较次计为一次比较,显然最小比较次数为数为数为数为1 1,即搜索元素,即搜索元素,即搜索元素,即搜索元素x x在序列中间位置。为了计算最大比较次数,在序列中间位置。为了计算最大比较次数,在序列中间位置。为了计算最大比较次数,在序列中间位置。为了计算最大比较次数,不失一般性,可假定不失一般性,
16、可假定不失一般性,可假定不失一般性,可假定xAhigh xAhigh。第第第第2 2次迭代(循环)前数组次迭代(循环)前数组次迭代(循环)前数组次迭代(循环)前数组A A中剩余元素中剩余元素中剩余元素中剩余元素若若若若n n是偶数,是偶数,是偶数,是偶数,AAmid+1mid+1.n.n共有共有共有共有n/2n/2个元素。个元素。个元素。个元素。若若若若n n是奇数,是奇数,是奇数,是奇数,AAmid+1mid+1.n.n共有共有共有共有(n-1)/2(n-1)/2个元素。个元素。个元素。个元素。二种情况都有:二种情况都有:二种情况都有:二种情况都有:AAmid+1mid+1.n=.n=n/2
17、n/2 =n/2n/22-12-1 第第第第3 3次迭代(循环)前数组次迭代(循环)前数组次迭代(循环)前数组次迭代(循环)前数组A A中剩余元素中剩余元素中剩余元素中剩余元素 n/2n/2 /2/2 =n/4n/4 =n/2n/22 2 =n/2n/23-13-1 第第第第j j次迭代(循环)前数组次迭代(循环)前数组次迭代(循环)前数组次迭代(循环)前数组A A中剩余元素中剩余元素中剩余元素中剩余元素 n/2n/2j-1j-1 不管找到与否,搜索不管找到与否,搜索不管找到与否,搜索不管找到与否,搜索x x的终止条件是余下元素仅仅为的终止条件是余下元素仅仅为的终止条件是余下元素仅仅为的终止条
18、件是余下元素仅仅为1 1个,即个,即个,即个,即 n/2n/2j-1j-1 =1=1n=10,mid=n=10,mid=(10+1)/2(10+1)/2 =5,=5,剩余元素剩余元素剩余元素剩余元素A6.10A6.10,共计,共计,共计,共计5 5个个个个(10/210/2 )。n=11,mid=n=11,mid=(11+1)/2(11+1)/2 =6,=6,剩余元素剩余元素剩余元素剩余元素A7.11A7.11,共计,共计,共计,共计5 5个个个个(11/211/2 )。19 当当当当 n/2n/2j-1j-1 =1=1,j j为最大迭代次数(或称最大循环次数、或称为最大迭代次数(或称最大循环
19、次数、或称为最大迭代次数(或称最大循环次数、或称为最大迭代次数(或称最大循环次数、或称最大比较次数)最大比较次数)最大比较次数)最大比较次数)n/2n/2j-1j-1 1 1等价于等价于等价于等价于1n/21n/2j-1j-12 2等价于等价于等价于等价于2 2j-1j-1nn2 2j j等价于(取对数)等价于(取对数)等价于(取对数)等价于(取对数)j-1Logj-1Log2 2n nj j考虑考虑考虑考虑 LogLog2 2n n LogLog2 2n n LogLog2 2n n +1+1因为因为因为因为j j是整数,故有是整数,故有是整数,故有是整数,故有j-1j-1 LogLog2
20、2n n 或或或或 j j LogLog2 2n n +1+1二者均有二者均有二者均有二者均有j j LogLog2 2n n +1+120107 7 5 23111111 18159 932 4 7 91222101027351414 可将二分搜索法的执行描述为决策树,红色的结点是与可将二分搜索法的执行描述为决策树,红色的结点是与可将二分搜索法的执行描述为决策树,红色的结点是与可将二分搜索法的执行描述为决策树,红色的结点是与x=22x=22相比较的数字。相比较的数字。相比较的数字。相比较的数字。序列:序列:序列:序列:1 4 5 7 8 9 10 12 15 22 23 27 32 351
21、4 5 7 8 9 10 12 15 22 23 27 32 35 loglog2 21414 +1+1=4=421uu比较次数是指元素比较次数,所以在比较次数是指元素比较次数,所以在比较次数是指元素比较次数,所以在比较次数是指元素比较次数,所以在whilewhile语句中的非元素比较语句中的非元素比较语句中的非元素比较语句中的非元素比较次数,通常不予计入次数,通常不予计入次数,通常不予计入次数,通常不予计入 ;uu确切讲,比较次数是指布尔表达式确切讲,比较次数是指布尔表达式确切讲,比较次数是指布尔表达式确切讲,比较次数是指布尔表达式“x=Amid”x=Amid”的执行次数;的执行次数;的执行
22、次数;的执行次数;uu由于由于由于由于if-then-elseif-then-else嵌套使用,实际元素比较最大次数应为循环(迭嵌套使用,实际元素比较最大次数应为循环(迭嵌套使用,实际元素比较最大次数应为循环(迭嵌套使用,实际元素比较最大次数应为循环(迭代)次数的代)次数的代)次数的代)次数的2 2倍,即倍,即倍,即倍,即2(2(LogLog2 2n n +1)+1)。x x首先与首先与首先与首先与1010比较,由于比较,由于比较,由于比较,由于2222比比比比1010大,故下一步在右子树中寻找;大,故下一步在右子树中寻找;大,故下一步在右子树中寻找;大,故下一步在右子树中寻找;以此类推,直至
23、;以此类推,直至;以此类推,直至;以此类推,直至2222。由于决策树的高度为。由于决策树的高度为。由于决策树的高度为。由于决策树的高度为 LogLog2 2n n ,所以,所以,所以,所以二分搜索法的最大比较次数为二分搜索法的最大比较次数为二分搜索法的最大比较次数为二分搜索法的最大比较次数为 LogLog2 2n n +1+1。定理定理1.1(Page 6)对于一个大小为对于一个大小为n的已排序数组,算法的已排序数组,算法BinarySearch 执行比较的最大次数为执行比较的最大次数为:Log2n +1容易看出,在最坏的情况下,第一个算法要检测容易看出,在最坏的情况下,第一个算法要检测A的所
24、有的所有n个分量才能判断在个分量才能判断在A中找不到等于中找不到等于x的的分量;分量;在第二个算法中,最坏的情况下最多只要测在第二个算法中,最坏的情况下最多只要测A中中的的j+1(j=log2n)个分量,就判断个分量,就判断x是否在是否在A中,第中,第一个算法和第二个算法解决的是同一个问题,但一个算法和第二个算法解决的是同一个问题,但在最坏的情况下(所给定的在最坏的情况下(所给定的x不在不在A中),两个中),两个算法所检测的分量个数却大不相同,前者要算法所检测的分量个数却大不相同,前者要n=2j个,后者只要个,后者只要j+1个,可见第二个算法比第一个个,可见第二个算法比第一个算法高效得多。算法
25、高效得多。因此,解决同一个问题,算法不同,计算的工作因此,解决同一个问题,算法不同,计算的工作量也不同,所需的计算时间随之不同,即算法的量也不同,所需的计算时间随之不同,即算法的时间复杂性不同。时间复杂性不同。2223选择排序法选择排序法选择算法选择算法 假定有一个数组假定有一个数组假定有一个数组假定有一个数组A1.nA1.n,Ai.nAi.n是它的一个子数组,是它的一个子数组,是它的一个子数组,是它的一个子数组,1i1in n。编。编。编。编写一函数,作用为:从写一函数,作用为:从写一函数,作用为:从写一函数,作用为:从Ai.n Ai.n 中选择一个最小的数中选择一个最小的数中选择一个最小的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第1章 算法分析基本概念 算法 分析 基本概念
限制150内