算法及其复杂性分析.ppt
《算法及其复杂性分析.ppt》由会员分享,可在线阅读,更多相关《算法及其复杂性分析.ppt(36页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、算法设计与分析实用教程杨克昌 严权锋请用请用PowerPoint 2003PowerPoint 2003播放播放中国水利水电出版社n 课堂讲授课堂讲授课堂讲授课堂讲授 :n学时安排:学时安排:学时安排:学时安排:36363636(讲授)(讲授)(讲授)(讲授)18181818(上机)(上机)(上机)(上机)(可根据实际教学计划进行调整;第可根据实际教学计划进行调整;第9 9 章不讲授,作为章不讲授,作为“算法设计与分析课程设计算法设计与分析课程设计”题材选用题材选用)n算法设计在案例求解中的地位与应用。算法设计在案例求解中的地位与应用。n算法时间复杂度分析方法与算法优劣评价。算法时间复杂度分析
2、方法与算法优劣评价。n重点讲授重点讲授应用算法设计求解典型案例,并进行复应用算法设计求解典型案例,并进行复杂性分析,引导设计变通。杂性分析,引导设计变通。n小组讨论小组讨论与基本案例相关的拓展与引申案例求解,与基本案例相关的拓展与引申案例求解,为为“课程设计课程设计”作准备。作准备。n 上机实践:上机实践:上机实践:上机实践:n学习建议:学习建议:学习建议:学习建议:n n学会归纳、总结和提炼;学会归纳、总结和提炼;n n自觉调整学习状态:自觉调整学习状态:培养算法设计与分析的兴趣培养算法设计与分析的兴趣自觉完成布置的作业自觉完成布置的作业加深对算法应用的理解加深对算法应用的理解善于变通、拓展
3、与改进善于变通、拓展与改进n n注重算法设计,提高解决实际案例的能力。注重算法设计,提高解决实际案例的能力。上机环境:上机环境:VC+6.0VC+6.0上机通过每章指定的案例求解与习题上机通过每章指定的案例求解与习题按要求填写实验报告按要求填写实验报告 教学要求教学要求了解了解了解了解算法概念、算法特征及算法的描述算法概念、算法特征及算法的描述算法概念、算法特征及算法的描述算法概念、算法特征及算法的描述建立建立建立建立算法的复杂性概念算法的复杂性概念算法的复杂性概念算法的复杂性概念掌握结构化掌握结构化掌握结构化掌握结构化设计设计设计设计的基本方法的基本方法的基本方法的基本方法 本章重点本章重点
4、应用应用应用应用 c c c c 语言描述算法语言描述算法语言描述算法语言描述算法掌握常用算法时间复杂度分析掌握常用算法时间复杂度分析掌握常用算法时间复杂度分析掌握常用算法时间复杂度分析第第第第 1 1 1 1 章章章章 算法及其复杂必分析算法及其复杂必分析1.1 1.1 算法及其描述算法及其描述算法是程序设计的基础,是计算机科学的核心。算法是程序设计的基础,是计算机科学的核心。算法是程序设计的基础,是计算机科学的核心。算法是程序设计的基础,是计算机科学的核心。1.1.1 1.1.1 1.1.1 1.1.1 算法定义算法定义算法定义算法定义 算法是计算机解决问题的过程,是解决某一算法是计算机解
5、决问题的过程,是解决某一算法是计算机解决问题的过程,是解决某一算法是计算机解决问题的过程,是解决某一问题的运算序列。问题的运算序列。问题的运算序列。问题的运算序列。或者说算法是或者说算法是或者说算法是或者说算法是问题求解过程的运算描述问题求解过程的运算描述问题求解过程的运算描述问题求解过程的运算描述。当面临某一问题时,算法就是当面临某一问题时,算法就是当面临某一问题时,算法就是当面临某一问题时,算法就是解决这个问题解决这个问题解决这个问题解决这个问题的方法与步骤的描述的方法与步骤的描述的方法与步骤的描述的方法与步骤的描述。1.1.算法的三要素算法的三要素 n n算法由操作、控制结构与数据结构算
6、法由操作、控制结构与数据结构三者组成。三者组成。(1)(1)(1)(1)操作:算术运算,关系运算,逻辑运算;输入、操作:算术运算,关系运算,逻辑运算;输入、操作:算术运算,关系运算,逻辑运算;输入、操作:算术运算,关系运算,逻辑运算;输入、输出、赋值等操作。输出、赋值等操作。输出、赋值等操作。输出、赋值等操作。(2)(2)(2)(2)控制结构:顺序结构,选择结构,循环结构,控制结构:顺序结构,选择结构,循环结构,控制结构:顺序结构,选择结构,循环结构,控制结构:顺序结构,选择结构,循环结构,模块调用。模块调用。模块调用。模块调用。(3)(3)(3)(3)数据结构:数据之间的逻辑关系,如数组数据
7、结构:数据之间的逻辑关系,如数组数据结构:数据之间的逻辑关系,如数组数据结构:数据之间的逻辑关系,如数组 、堆栈堆栈堆栈堆栈 、队列、链表、队列、链表、队列、链表、队列、链表 、树、树、树、树 、图、图、图、图 、堆、堆、堆、堆 、散列等。、散列等。、散列等。、散列等。2.2.算法的基本特征算法的基本特征 n n一个算法由有限条可完全机械地执一个算法由有限条可完全机械地执行的、有确定结果的指令组成,具行的、有确定结果的指令组成,具有以下特性:有以下特性:n n (1)(1)确定性确定性n n(2)(2)可行性可行性n n(3)(3)有穷性有穷性n n(4)(4)算法有零个或多个输入算法有零个或
8、多个输入n n(5)(5)算法有一个或多个输出算法有一个或多个输出 1.1.2 1.1.2 算法描述算法描述 (1 1 1 1)一个问题可以设计不同的算法来求解;)一个问题可以设计不同的算法来求解;)一个问题可以设计不同的算法来求解;)一个问题可以设计不同的算法来求解;同一个算法可以采用不同的形式来描述。同一个算法可以采用不同的形式来描述。同一个算法可以采用不同的形式来描述。同一个算法可以采用不同的形式来描述。(2 2 2 2)描述算法可以有:)描述算法可以有:)描述算法可以有:)描述算法可以有:自然语言方式、流程自然语言方式、流程自然语言方式、流程自然语言方式、流程图方式、伪代码方式、计算机
9、语言表示方图方式、伪代码方式、计算机语言表示方图方式、伪代码方式、计算机语言表示方图方式、伪代码方式、计算机语言表示方式与表格方式式与表格方式式与表格方式式与表格方式等等等等。(3 3 3 3)当一个算法使用计算机程序设计语言描)当一个算法使用计算机程序设计语言描)当一个算法使用计算机程序设计语言描)当一个算法使用计算机程序设计语言描述时,就是程序。述时,就是程序。述时,就是程序。述时,就是程序。本书采用本书采用本书采用本书采用C C C C语言与自然语言相结合来描述算语言与自然语言相结合来描述算语言与自然语言相结合来描述算语言与自然语言相结合来描述算法。法。法。法。例例1-1 1-1 求两个
10、整数最大公约数的欧几里德算法求两个整数最大公约数的欧几里德算法 n n(1)(1)(1)(1)数数数数 a a a a 除以除以除以除以 b b b b 得余数得余数得余数得余数 r r r r;若;若;若;若r=0r=0r=0r=0,则,则,则,则b b b b为所求的最为所求的最为所求的最为所求的最大公约数。大公约数。大公约数。大公约数。n n(2)(2)(2)(2)若若若若 r0 r0 r0 r0,以,以,以,以b b b b为为为为a a a a,r r r r为为为为b b b b,继续,继续,继续,继续(1).(1).(1).(1).n n描述如下:描述如下:描述如下:描述如下:n
11、 nscanf(%ld,%ld,&a,&b);/scanf(%ld,%ld,&a,&b);/scanf(%ld,%ld,&a,&b);/scanf(%ld,%ld,&a,&b);/输入整数输入整数输入整数输入整数n nr=a%b;r=a%b;r=a%b;r=a%b;n nwhile(r!=0)/while(r!=0)/while(r!=0)/while(r!=0)/实施辗转相除实施辗转相除实施辗转相除实施辗转相除n n a=b;b=r;r=a%b;a=b;b=r;r=a%b;a=b;b=r;r=a%b;a=b;b=r;r=a%b;n nprintf(%ld,b);/printf(%ld,b);
12、/printf(%ld,b);/printf(%ld,b);/输出结果输出结果输出结果输出结果 1.2 1.2 算法的复杂性分析算法的复杂性分析 n n算法的复杂性越高,所需的计算机资源算法的复杂性越高,所需的计算机资源越多;反之,算法的复杂性越低,所需越多;反之,算法的复杂性越低,所需的计算机资源越少。的计算机资源越少。n n最重要的计算机资源是时间资源与空间最重要的计算机资源是时间资源与空间资源。资源。n n需要计算机时间资源的量称为时间复杂需要计算机时间资源的量称为时间复杂度,需要计算机空间资源的量称为空间度,需要计算机空间资源的量称为空间复杂度。复杂度。n n时间复杂度与空间复杂度集中
13、反映算法时间复杂度与空间复杂度集中反映算法的效率。的效率。1.2.1 1.2.1 时间复杂度时间复杂度 对算法时间复杂度的分析,通常利用对算法时间复杂度的分析,通常利用实验实验对比方法、数学方法对比方法、数学方法来分析算法来分析算法。实验对比分析很简单,两个算法相互比较实验对比分析很简单,两个算法相互比较求解时间求解时间 。数学方法能在严密的逻辑推理基础上判断数学方法能在严密的逻辑推理基础上判断算法的优劣。算法的优劣。在算法分析中,我们往往采用能近似表达在算法分析中,我们往往采用能近似表达性能的方法来展示某个算法的性能指标。性能的方法来展示某个算法的性能指标。一个算法的时间复杂度是指算法运行所
14、需的时一个算法的时间复杂度是指算法运行所需的时一个算法的时间复杂度是指算法运行所需的时一个算法的时间复杂度是指算法运行所需的时间。间。间。间。一个算法的运行时间取决于算法所需执行的语一个算法的运行时间取决于算法所需执行的语一个算法的运行时间取决于算法所需执行的语一个算法的运行时间取决于算法所需执行的语句(运算)的多少。句(运算)的多少。句(运算)的多少。句(运算)的多少。算法的时间复杂度通常用该算法执行的总语句算法的时间复杂度通常用该算法执行的总语句算法的时间复杂度通常用该算法执行的总语句算法的时间复杂度通常用该算法执行的总语句(运算)的数量级决定。(运算)的数量级决定。(运算)的数量级决定。
15、(运算)的数量级决定。n n一条语句的数量级即执行它的频数,一个算一条语句的数量级即执行它的频数,一个算一条语句的数量级即执行它的频数,一个算一条语句的数量级即执行它的频数,一个算法的数量级是指它所有语句执行频数之和。法的数量级是指它所有语句执行频数之和。法的数量级是指它所有语句执行频数之和。法的数量级是指它所有语句执行频数之和。n n在分析算法时,隐藏细节的数学表示方法为在分析算法时,隐藏细节的数学表示方法为在分析算法时,隐藏细节的数学表示方法为在分析算法时,隐藏细节的数学表示方法为大写字母大写字母大写字母大写字母“OOOO”记法,它可以帮助我们简化算记法,它可以帮助我们简化算记法,它可以帮
16、助我们简化算记法,它可以帮助我们简化算法复杂度计算的许多细节,提取主要成分法复杂度计算的许多细节,提取主要成分法复杂度计算的许多细节,提取主要成分法复杂度计算的许多细节,提取主要成分。http:/ 算法的执行频数的数量级直接决定算算法的执行频数的数量级直接决定算法的时间复杂度。法的时间复杂度。2 2 2 2个语句各执行个语句各执行个语句各执行个语句各执行1 1 1 1次,共执行次,共执行次,共执行次,共执行2 2 2 2次次次次。时间复杂度为时间复杂度为时间复杂度为时间复杂度为O(1)O(1)O(1)O(1)(1)x=x+1;s=s+x;(1)x=x+1;s=s+x;例例1-3 1-3 试计算
17、下面三个程序段的时间复杂度试计算下面三个程序段的时间复杂度n n(2)for(k=1;k=n;k+)(2)for(k=1;k=n;k+)n n x=x+y;x=x+y;n n y=x+y;y=x+y;n n s=x+y;s=x+y;“k=1”“k=1”“k=1”“k=1”执行执行执行执行1 1 1 1次;次;次;次;“k=n”“k=n”“k=n”“k=n”与与与与“k+”“k+”“k+”“k+”各执行各执行各执行各执行n n n n次;次;次;次;3 3 3 3个赋值语句,每个个赋值语句,每个个赋值语句,每个个赋值语句,每个赋值语句各执行赋值语句各执行赋值语句各执行赋值语句各执行n n n n
18、次;共执行次;共执行次;共执行次;共执行5n+15n+15n+15n+1次次次次.时间复杂度为时间复杂度为时间复杂度为时间复杂度为O(n).O(n).O(n).O(n).例例1-3 1-3 试计算下面三个程序段的执行频数试计算下面三个程序段的执行频数(3)for(t=1,k=1;k=n;k+)(3)for(t=1,k=1;k=n;k+)n t=t*2;t=t*2;n for(j=1;j=t;j+)for(j=1;j=t;j+)n s=s+j;s=s+j;“t=1”“t=1”“t=1”“t=1”与与与与“k=1”“k=1”“k=1”“k=1”各执行各执行各执行各执行1 1 1 1次;次;次;次;
19、“k=n”“k=n”“k=n”“k=n”与与与与“k+”“k+”“k+”“k+”各执各执各执各执行行行行n n n n次;次;次;次;“t=t*2”“t=t*2”“t=t*2”“t=t*2”执行执行执行执行n n n n次;次;次;次;“j=1”“j=1”“j=1”“j=1”执行执行执行执行n n n n次;次;次;次;“j=t”“j=t”“j=t”“j=t”、“j+”“j+”“j+”“j+”与内循环的赋值语句与内循环的赋值语句与内循环的赋值语句与内循环的赋值语句“s=s+j”“s=s+j”“s=s+j”“s=s+j”各执各执各执各执行频数为行频数为行频数为行频数为:总的执行频数为:总的执行频
20、数为:总的执行频数为:总的执行频数为:http:/ 时间复杂度符号时间复杂度符号OO的两个定理的两个定理:n n 在估算算法的时间复杂度时,为简单计,以后在估算算法的时间复杂度时,为简单计,以后在估算算法的时间复杂度时,为简单计,以后在估算算法的时间复杂度时,为简单计,以后只考虑内循环语句的执行频数,而不细致计算只考虑内循环语句的执行频数,而不细致计算只考虑内循环语句的执行频数,而不细致计算只考虑内循环语句的执行频数,而不细致计算各循环设计语句及其它语句的执行次数,这样各循环设计语句及其它语句的执行次数,这样各循环设计语句及其它语句的执行次数,这样各循环设计语句及其它语句的执行次数,这样简化处
21、理不影响算法的时间复杂度。简化处理不影响算法的时间复杂度。简化处理不影响算法的时间复杂度。简化处理不影响算法的时间复杂度。n n例例例例1-41-4 估算以下程序段所代表算法的时间复杂度。估算以下程序段所代表算法的时间复杂度。n nfor(k=1;k=n;k+)for(k=1;k=n;k+)n nfor(j=1;j=k;j+)for(j=1;j=k;j+)n n x=k+j;x=k+j;n n s=s+x;s=s+x;每个赋值语句执行频率为每个赋值语句执行频率为n(n+1)/2,该算法的该算法的时间复杂度为时间复杂度为:O(n2)一个算法的运行时间,与问题的规模相关,也一个算法的运行时间,与问
22、题的规模相关,也一个算法的运行时间,与问题的规模相关,也一个算法的运行时间,与问题的规模相关,也与输入的数据相关。与输入的数据相关。与输入的数据相关。与输入的数据相关。n例如对给定的例如对给定的n n个整数个整数a(1),a(2),a(n)a(1),a(2),a(n)排序:排序:n for(i=1;i=n for(i=1;i=n 1;i+)1;i+)n for(j=i+1;j=n;j+)for(j=i+1;jaj)h=ai;ai=aj;aj=h;if(aiaj)h=ai;ai=aj;aj=h;3 3个赋值语句的执行频数之和,最理想的情形下个赋值语句的执行频数之和,最理想的情形下个赋值语句的执行
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 及其 复杂性 分析
限制150内