ch1算法设计与分析基础.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《ch1算法设计与分析基础.ppt》由会员分享,可在线阅读,更多相关《ch1算法设计与分析基础.ppt(38页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、广东工业大学广东工业大学计算机学院计算机学院算法设计算法设计与分析与分析 The The Design and Analysis of Algorithms凌 捷广东工业大学计算机学院 2023/1/42023/1/41 1LingJie/GDUTLingJie/GDUT广东工业大学广东工业大学计算机学院计算机学院本课程的安排本课程的安排平时成绩30%(设计、作业、考勤、提问等)期末考试70%第15周周四随堂考试(考查)学习建议:1、注重算法的编程实现 2、大部分内容是了解(36学时)2023/1/42023/1/42 2LingJie/GDUTLingJie/GDUT广东工业大学广东工业大学
2、计算机学院计算机学院第第1章章 绪绪 论论主要内容:1.1 算法的概念 1.2 算法问题求解的基础 1.3 重要问题类型 1.4 基本数据结构2023/1/42023/1/43 3LingJie/GDUTLingJie/GDUT广东工业大学广东工业大学计算机学院计算机学院1.1 算法的概念1 1、算法概念、算法概念没有一个统一的严谨的定义。一般而言,对于计没有一个统一的严谨的定义。一般而言,对于计算机算法的概念是这样描述的:算法是在有限步算机算法的概念是这样描述的:算法是在有限步骤内求解某一问题所使用的一组定义明确的指令。骤内求解某一问题所使用的一组定义明确的指令。本书采用的定义:本书采用的定
3、义:An An algorithmalgorithm is a sequence of is a sequence of unambiguous instructions for solving a unambiguous instructions for solving a problem=problem=算法是求解某一问题所使用的一系列清算法是求解某一问题所使用的一系列清晰的指令。晰的指令。2023/1/42023/1/44 4LingJie/GDUTLingJie/GDUT广东工业大学广东工业大学计算机学院计算机学院2、算法的概念图、算法的概念图注意:计算机发明以前也有算法问题问题算法算
4、法“计算机计算机”输出输出输入输入2023/1/42023/1/45 5LingJie/GDUTLingJie/GDUT广东工业大学广东工业大学计算机学院计算机学院3、算法的三个要素、算法的三个要素 1).数据:运算序列中作为运算对象和结果的数据.2).运算:运算序列中的各种运算:赋值,算术和逻辑运算 3).控制和转移:运算序列中的控制和转移.2023/1/42023/1/46 6LingJie/GDUTLingJie/GDUT广东工业大学广东工业大学计算机学院计算机学院4、算法的一般特征、算法的一般特征 1).1).有穷性有穷性 finitenessfiniteness 算法必须在执行有穷步
5、后终止算法必须在执行有穷步后终止,且每一步均在有且每一步均在有限时间内完成限时间内完成 2).2).确定性确定性 definiteness definiteness 算法的每个步骤必须有明确的意义算法的每个步骤必须有明确的意义,对每种可能对每种可能的情况的情况,算法都要给出确定的操作算法都要给出确定的操作.3).3).能行性能行性effectivenesseffectiveness 算法中的每个步骤是能够实现的算法中的每个步骤是能够实现的,算法执行结果算法执行结果要达到预期目的要达到预期目的 4).4).有有0 0个或多个输入项个或多个输入项,至少有一个输出项至少有一个输出项.2023/1/4
6、2023/1/47 7LingJie/GDUTLingJie/GDUT广东工业大学广东工业大学计算机学院计算机学院举例举例举例举例:计算最大公约数的欧几里德算法计算最大公约数的欧几里德算法计算最大公约数的欧几里德算法计算最大公约数的欧几里德算法ALGORITHM EuclidALGORITHM Euclid(mm,n n)/计算两个整数计算两个整数mm、n n的最大公约数的最大公约数gcdgcd(mm,n n)/输入:非负整数输入:非负整数mm,n n,其中,其中mm,n n不同时为零不同时为零/输出:输出:mm,n n的最大公约数的最大公约数while n 0 dowhile n 0 dor
7、 r m mod n m mod nmm n nn n r rreturn mreturn m2023/1/42023/1/48 8LingJie/GDUTLingJie/GDUT广东工业大学广东工业大学计算机学院计算机学院求求求求gcd(m,ngcd(m,n)的原理:的原理:的原理:的原理:(结构化的描述)(结构化的描述)第一步:如果第一步:如果n=0,n=0,返回返回mm的值作为结果,结束;否则进入的值作为结果,结束;否则进入 第二步。第二步。第二步:用第二步:用n n除除m,m,余数赋值给余数赋值给r r,进入第三步。,进入第三步。第三步:将第三步:将n n的值赋给的值赋给mm,将,将r
8、 r的值赋给的值赋给n n,返回第一步。,返回第一步。例:例:gcd(60,24)=?gcd(60,24)=?1-1 1-1、m=60,n=24m=60,n=24 1-2 1-2、60 mod 24=12,r=12,60 mod 24=12,r=12,1-3 1-3、m=24,n=12m=24,n=12 2-1 2-1、24 mod 12=0,r=024 mod 12=0,r=0 2-2 2-2、m=12,n=0m=12,n=0 2-32-3、条件、条件“n=0”n=0”满足,返回满足,返回gcd(mgcd(m,n)=m=12,n)=m=122023/1/42023/1/49 9LingJie
9、/GDUTLingJie/GDUT广东工业大学广东工业大学计算机学院计算机学院求求求求gcd(m,ngcd(m,n)的其他算法的其他算法的其他算法的其他算法算法二:连续整数检测法算法二:连续整数检测法第一步:将第一步:将minm,nminm,n 赋值给赋值给t t。第二步:第二步:mm除以除以t t,如果余数为,如果余数为0 0,进入第三步,否则进入第四步。,进入第三步,否则进入第四步。第三步:第三步:n n除以除以t t,如果余数为,如果余数为0 0,返回,返回t t的值;否则进入第四步。的值;否则进入第四步。第四步:把第四步:把t t的值减的值减1 1,返回第三步。,返回第三步。例:例:g
10、cd(60,24)gcd(60,24)t=min60,24=24,m=60,n=24t=min60,24=24,m=60,n=24 60mod24=120,60mod24=120,t=23,24 mod 23=1 0t=23,24 mod 23=1 0t=22,24 mod 22=2 0t=22,24 mod 22=2 0t=21,24 mod 21=3 0t=21,24 mod 21=3 0.t=12,24 mod 12=0,t=12,24 mod 12=0,返回返回gcd(mgcd(m,n)=t=12,n)=t=122023/1/42023/1/41010LingJie/GDUTLingJ
11、ie/GDUT广东工业大学广东工业大学计算机学院计算机学院算法三:质因数分解法算法三:质因数分解法第一步:找出第一步:找出mm的所有质因数。的所有质因数。第二步:找出第二步:找出n n的所有质因数。的所有质因数。第三步:从第一步求得的第三步:从第一步求得的mm的质因数分解式和第二步求得的的质因数分解式和第二步求得的n n 的质因数分解式中,找出所有公因数。的质因数分解式中,找出所有公因数。第四步:将第三步找到的公因数相乘,结果为所求的第四步:将第三步找到的公因数相乘,结果为所求的 gcd(m,ngcd(m,n)例:例:m=60=m=60=22322355 n=24=2 n=24=2223223
12、 公因数为公因数为 223223 结果为结果为 gcd(m,ngcd(m,n)=12)=12存在问题:如何求所有的质因数存在问题:如何求所有的质因数/素因子?素因子?2023/1/42023/1/41111LingJie/GDUTLingJie/GDUT广东工业大学广东工业大学计算机学院计算机学院求连续素数序列的筛法求连续素数序列的筛法求连续素数序列的筛法求连续素数序列的筛法-2 23 34 45 56 67 78 89 910101111 12121313141415151616 17171818191920202121 2222232324242525问题:问题:求不大于n=25的质数 序
13、列。筛法:1、取 p=2,消去p的倍数。2、取 p=3,消去p的倍数。直至 p=?结束2023/1/42023/1/41212LingJie/GDUTLingJie/GDUT广东工业大学广东工业大学计算机学院计算机学院-2*2*3 34 45 56 67 78 89 91010111112121313141415151616171718181919202021212222232324242525-2 23*3*5 57 79 911111313151517171919212123232525-2 23 35*5*7 7111113131717191923232525-2 23 35 57 71
14、11113131717191923232023/1/42023/1/41313LingJie/GDUTLingJie/GDUT广东工业大学广东工业大学计算机学院计算机学院求连续素数序列的筛法求连续素数序列的筛法求连续素数序列的筛法求连续素数序列的筛法Sieve(nSieve(n)For p=2 to n do /For p=2 to n do /设立数组设立数组A2AnA2An ApAp=p=pFor p=2 to do /For p=2 to do /if Ap0,j=p*p if Ap0,j=p*p while j=n do while j=n do AjAj=0=0 j=j=j+pj+p
15、i=0 /i=0 /将将A A中剩余的元素复制到数组中剩余的元素复制到数组L L供连续输出供连续输出For p=2 to n doFor p=2 to n do if Ap0,if Ap0,LiLi=ApAp i=i+1 i=i+1Return L Return L 2023/1/42023/1/41414LingJie/GDUTLingJie/GDUT广东工业大学广东工业大学计算机学院计算机学院5、算法的分类、算法的分类从解法上分:从解法上分:优化算法优化算法:算法中的基本运算为逻辑运算。算法中的基本运算为逻辑运算。数值算法数值算法:算法中的基本运算为算术运算。算法中的基本运算为算术运算。从
16、处理方式上分:从处理方式上分:串行算法串行算法:串行计算机上执行的算法。串行计算机上执行的算法。并行算法并行算法:并行计算机上执行的算法。并行计算机上执行的算法。2023/1/42023/1/41515LingJie/GDUTLingJie/GDUT广东工业大学广东工业大学计算机学院计算机学院1.2 算法问题求解基础 观点观点:算法是问题的程序化解决方案算法是问题的程序化解决方案 算法设计与分析过程的典型步骤算法设计与分析过程的典型步骤:1 1、了解问题的内容、了解问题的内容 2 2、了解计算设备的性能、了解计算设备的性能 3 3、在精确解法和近似解法之间选择、在精确解法和近似解法之间选择 4
17、 4、确定适当的数据结构、确定适当的数据结构 5 5、算法设计技术、算法设计技术 6 6、详细表述算法的方法、详细表述算法的方法 7 7、证明算法的正确性、证明算法的正确性 8 8、分析算法、分析算法 9 9、为算法写代码、为算法写代码2023/1/42023/1/41616LingJie/GDUTLingJie/GDUT广东工业大学广东工业大学计算机学院计算机学院图图1.2 1.2 算法设计与分析的过程算法设计与分析的过程2023/1/42023/1/41717LingJie/GDUTLingJie/GDUT广东工业大学广东工业大学计算机学院计算机学院1.2.1 了解问题的内容当遇到一个问题
18、时,首先要清楚这个问题的所当遇到一个问题时,首先要清楚这个问题的所有内容。如果这个问题已经给出了明显的要求,有内容。如果这个问题已经给出了明显的要求,如对成绩排序,那么只需要看看它是属于那一如对成绩排序,那么只需要看看它是属于那一类的问题,然后参考相关的资料。类的问题,然后参考相关的资料。了解问题内容这个步骤是十分重要的,因为只了解问题内容这个步骤是十分重要的,因为只有知道了问题具有什么样的输入,需要得到什有知道了问题具有什么样的输入,需要得到什么样的输出,问题的解决才可能进行下去。理么样的输出,问题的解决才可能进行下去。理解了问题是问题求解的关键。解了问题是问题求解的关键。2023/1/42
19、023/1/41818LingJie/GDUTLingJie/GDUT广东工业大学广东工业大学计算机学院计算机学院1.2.2 了解计算设备的能力 在清楚了解了问题的内容之后,下一步是确定在清楚了解了问题的内容之后,下一步是确定用于解决问题的设备的能力。目前一般使用的用于解决问题的设备的能力。目前一般使用的计算机都是冯诺依曼(计算机都是冯诺依曼(von Neumannvon Neumann)体系架)体系架构的。它的一个最重要假设是,程序指令的执构的。它的一个最重要假设是,程序指令的执行是顺序的。针对这一类计算机设计的算法被行是顺序的。针对这一类计算机设计的算法被称为串行算法(称为串行算法(seq
20、uential algorithmssequential algorithms)。与)。与之相区别的是所谓的并行计算机以及并行算法之相区别的是所谓的并行计算机以及并行算法(parallel algorithmsparallel algorithms)。指令能够并行的执行,)。指令能够并行的执行,效率当然会大大提高,额外需要考虑的则是指效率当然会大大提高,额外需要考虑的则是指令执行顺序以及同步等问题。并行算法的设计令执行顺序以及同步等问题。并行算法的设计有相应的理论,这里仅考虑串行算法。有相应的理论,这里仅考虑串行算法。2023/1/42023/1/41919LingJie/GDUTLingJi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ch1 算法 设计 分析 基础
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内