第1章 算法引论优秀课件.ppt
《第1章 算法引论优秀课件.ppt》由会员分享,可在线阅读,更多相关《第1章 算法引论优秀课件.ppt(37页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第1章章 算法引论算法引论2022/10/251第1页,本讲稿共37页联系方式联系方式:办公地点办公地点:信息学院二层软件工程系信息学院二层软件工程系204 办公电话办公电话:029-87091249 2022/10/252第2页,本讲稿共37页学习算法的理由:学习算法的理由:一个人接受科技教育得到的最大收获,是那些能够受一个人接受科技教育得到的最大收获,是那些能够受用一生的一般性智能工具。用一生的一般性智能工具。George Forsythe 计算机科学家到来以前计算机科学家到来以前我们做什么我们做什么1968算法是计算机科学的基石。学习算法的理由是非常充分的。没有算法,算法是计算机科学的
2、基石。学习算法的理由是非常充分的。没有算法,计算机程序将不复存在,另一个学习算法的理由是可以用它来开发人计算机程序将不复存在,另一个学习算法的理由是可以用它来开发人们的分析能力。们的分析能力。算法可以看作是解决问题的一类特殊方法算法可以看作是解决问题的一类特殊方法它虽非问题的答案,它虽非问题的答案,但它是经过准确定义的,用来获得答案的过程。但它是经过准确定义的,用来获得答案的过程。因此,无论是否涉及计算机,特定的算法设计技术都能看作是因此,无论是否涉及计算机,特定的算法设计技术都能看作是问题求解的有效策略。问题求解的有效策略。2022/10/253第3页,本讲稿共37页计算机专业的学生:计算机
3、专业的学生:程序程序=算法算法+数据结构数据结构 算法让我们上一个更高的台阶算法让我们上一个更高的台阶算法的魅力:算法的魅力:思考思考 2022/10/254第4页,本讲稿共37页对学生的要求对学生的要求:坚持坚持!坚持就是胜利坚持就是胜利!看懂每一看懂每一道讲授的题目、完成作业、完成实道讲授的题目、完成作业、完成实习题目。习题目。上课:不旷课、不迟到。上课:不旷课、不迟到。作业:每章两个算法设计题,提交作业本。作业:每章两个算法设计题,提交作业本。实习:第二章实习:第二章第六章,每章一个算法实现题目,将程序第六章,每章一个算法实现题目,将程序的源代码的压缩文件,提交到的源代码的压缩文件,提交
4、到202.117.179.110(作业管(作业管理系统理系统王湘桃王湘桃计算机计算机13班)班)2022/10/255第5页,本讲稿共37页主要内容介绍主要内容介绍第1章算法引论第2章递归与分治策略第3章动态规划第4章贪心算法第5章回溯法第6章分支限界法2022/10/256第6页,本讲稿共37页主要内容介绍(续)主要内容介绍(续)第7章概率算法第9章NP完全性理论与近似算法2022/10/257第7页,本讲稿共37页第第1 1章章 算法引论算法引论1.1 算法与程序1.2 表达算法的抽象机制1.3算法复杂性分析本章主要知识点:2022/10/258第8页,本讲稿共37页1.1 算法与程序算法
5、与程序输输 入:有零个或多个外部量作为算法的输入。入:有零个或多个外部量作为算法的输入。输输 出:算法产生至少一个量作为输出。出:算法产生至少一个量作为输出。确定性:组成算法的每条指令清晰、无歧义。确定性:组成算法的每条指令清晰、无歧义。有限性:算法中每条指令的执行次数有限,执行有限性:算法中每条指令的执行次数有限,执行每条指令的时间也有限。每条指令的时间也有限。是算法用某种程序设计语言的具体实现。是算法用某种程序设计语言的具体实现。程序可以不满足算法的性质程序可以不满足算法的性质(4)(4)即有限性。即有限性。是满足下述性质的指令序列。是满足下述性质的指令序列。算法:程序:2022/10/2
6、59第9页,本讲稿共37页1.1算法与程序算法与程序 求:非负整数求:非负整数M和和N的最大公约数,的最大公约数,记为:记为:Gcd(m,n)方法一:欧几里得算法方法一:欧几里得算法 Gcd(m,n)=Gcd(n,m mod n)Gcd(60,24)=Gcd(24,12)=Gcd(12,0)=122022/10/2510第10页,本讲稿共37页1.1算法与程序算法与程序方法二:连续整数检测算法方法二:连续整数检测算法(1)将)将 min(m,n)的值赋给的值赋给t。(2)m除以除以t,如果余数为,如果余数为0,进入第,进入第3步,步,否则,进入第否则,进入第4步。步。(3)n除以除以t,如果余
7、数为,如果余数为0,返回,返回t值,结值,结束,否则,进入第束,否则,进入第4步。步。(4)t=t-1,返回第,返回第2步。步。2022/10/2511第11页,本讲稿共37页1.1算法与程序算法与程序方法三:中学里计算方法三:中学里计算Gcd(m,n)的过程(用的过程(用数学定义的方法)数学定义的方法)(1)找到)找到m的所有质因数。的所有质因数。(2)找到)找到n的所有质因数。的所有质因数。(3)找到()找到(1),(),(2)中的公因数。)中的公因数。(4)求公因数的积,该乘积为)求公因数的积,该乘积为m、n的最的最大公约数。大公约数。2022/10/2512第12页,本讲稿共37页1.
8、1算法与程序算法与程序理解问题理解问题 在设计一个算法前,我们需要做的第一件事就是在设计一个算法前,我们需要做的第一件事就是完全理解所给出的问题,仔细阅读问题的描述,如有任完全理解所给出的问题,仔细阅读问题的描述,如有任何疑惑就把疑问提出来,手工处理一些小例子,考虑一何疑惑就把疑问提出来,手工处理一些小例子,考虑一下特殊情况,有必要的话再继续提出疑问。下特殊情况,有必要的话再继续提出疑问。严格确定算法需要处理的实例范围是非常重要严格确定算法需要处理的实例范围是非常重要的。如果不这样做,算法可能会对大多数的输入正的。如果不这样做,算法可能会对大多数的输入正确处理,但遇到某些确处理,但遇到某些“边
9、界值边界值”的时候就出错。的时候就出错。记住,一个正确的算法不仅应该能处理大多数的情况,而记住,一个正确的算法不仅应该能处理大多数的情况,而且应该能正确处理且应该能正确处理“所有所有”合法的输入。合法的输入。2022/10/2513第13页,本讲稿共37页1.1算法与程序算法与程序了解计算机设备的性能了解计算机设备的性能 今天使用的大多数算法仍然要运行于冯今天使用的大多数算法仍然要运行于冯诺依曼诺依曼计算机上。这个体系结构的重点在于随机存取机。它最计算机上。这个体系结构的重点在于随机存取机。它最主要的设想是:指令逐条运行,每次执行一步操作。相主要的设想是:指令逐条运行,每次执行一步操作。相应地
10、,设计运行于这种机器上的算法,称为顺序算法。应地,设计运行于这种机器上的算法,称为顺序算法。一些更新式的计算机可以在同一时间执行多条操作,一些更新式的计算机可以在同一时间执行多条操作,即并行计算,能够利用这种计算性能优势的算法称为并行即并行计算,能够利用这种计算性能优势的算法称为并行算法。算法。尽管如此,在可预见的未来,学习尽管如此,在可预见的未来,学习RAM模型下算模型下算法设计和分析的经典技术仍然是算法学的基石。法设计和分析的经典技术仍然是算法学的基石。2022/10/2514第14页,本讲稿共37页1.1算法与程序算法与程序在精确解法和近似解法间做选择在精确解法和近似解法间做选择 精确的
11、解法称为精确算法。精确的解法称为精确算法。近似的解法称为近似算法。(无法求得精确解近似的解法称为近似算法。(无法求得精确解求求平方根问题平方根问题或由于某些问题固有的复杂性,用或由于某些问题固有的复杂性,用已知的精确算法来解决该问题会慢得无法接受已知的精确算法来解决该问题会慢得无法接受旅行售货员问题旅行售货员问题)2022/10/2515第15页,本讲稿共37页1.1算法与程序算法与程序确定适当的数据结构确定适当的数据结构 算法和数据结构是计算机编程的重要基础。算法和数据结构是计算机编程的重要基础。程序程序=算法算法+数据结构数据结构2022/10/2516第16页,本讲稿共37页1.1算法与
12、程序算法与程序算法设计技术算法设计技术 什么是算法设计技术?是用算法解什么是算法设计技术?是用算法解题的一般性方法。用于解决不同计算领题的一般性方法。用于解决不同计算领域的多种问题。域的多种问题。在给新问题设计算法时,能够给予在给新问题设计算法时,能够给予指导,另外,算法设计技术可以按照内指导,另外,算法设计技术可以按照内在设计理念对算法进行分类,设计技术在设计理念对算法进行分类,设计技术使我们能够以一种自然的方式对算法进使我们能够以一种自然的方式对算法进行分类和研究。行分类和研究。2022/10/2517第17页,本讲稿共37页1.1算法与程序算法与程序详细表述算法的方法详细表述算法的方法
13、用文字和伪代码描述。用文字和伪代码描述。文字表述有逻辑缺陷。文字表述有逻辑缺陷。伪代码是自然语言和类编程语言组成的混合伪代码是自然语言和类编程语言组成的混合结构。结构。2022/10/2518第18页,本讲稿共37页1.1 算法与程序算法与程序证明算法的正确性证明算法的正确性 必须证明算法的正确性,就是说,我们必须证明对于必须证明算法的正确性,就是说,我们必须证明对于每一个合法的输入,该算法都会在有限的时间内输出一每一个合法的输入,该算法都会在有限的时间内输出一个满足要求的结果。个满足要求的结果。证明正确性的一般方法是使用数学归纳法。证明正确性的一般方法是使用数学归纳法。为了表明算法是不正确的
14、,只需提供一个算法为了表明算法是不正确的,只需提供一个算法不能正确处理的输入实例。不能正确处理的输入实例。对于近似算法来说,常常试图证明该算法所产对于近似算法来说,常常试图证明该算法所产生的误差不超出我们预定的范围。生的误差不超出我们预定的范围。2022/10/2519第19页,本讲稿共37页1.1算法与程序算法与程序分析算法分析算法 算法有两种效率:时间效率和空间效率。算法有两种效率:时间效率和空间效率。时间效率显示算法运行得有多快。时间效率显示算法运行得有多快。空间效率显示算法需要多少额外的存储空间。空间效率显示算法需要多少额外的存储空间。算法的另外两个特性:简单性和一般性。算法的另外两个
15、特性:简单性和一般性。一般性有两层意思:算法解决问题的一般性和算法所接一般性有两层意思:算法解决问题的一般性和算法所接受输入的一般性。受输入的一般性。2022/10/2520第20页,本讲稿共37页1.1算法与程序算法与程序为算法写代码为算法写代码 对算法进行编程既是挑战也是机遇。挑战对算法进行编程既是挑战也是机遇。挑战在于,在把算法转变为程序的过程中,可能会发在于,在把算法转变为程序的过程中,可能会发生错误或者效率非常低。(大多数计算机科学家生错误或者效率非常低。(大多数计算机科学家坚信,除非计算机程序的正确性在数学上得到了坚信,除非计算机程序的正确性在数学上得到了完全严格的证明,否则,我们
16、不能认为程序是正完全严格的证明,否则,我们不能认为程序是正确的。)确的。)运行中的程序为我们提供了一个分析它运行中的程序为我们提供了一个分析它内在算法的额外机会。这也是我们要把算法变内在算法的额外机会。这也是我们要把算法变成程序的另一个原因。成程序的另一个原因。2022/10/2521第21页,本讲稿共37页1.1算法与程序算法与程序 1理解问题理解问题、2了解计算机设备的性能了解计算机设备的性能 3在精确解和近似解间作出选择在精确解和近似解间作出选择 4描述算法的方法、描述算法的方法、5证明算法的正确性证明算法的正确性 6算法设计技术、算法设计技术、7确定适当的数据结构确定适当的数据结构 8
17、分析算法、分析算法、9为算法写代码为算法写代码 最后,让我们再强调一下算法设计与实现的主要最后,让我们再强调一下算法设计与实现的主要含义:作为一个规律,一个好的算法是反复努力和重含义:作为一个规律,一个好的算法是反复努力和重新修正的结果。新修正的结果。2022/10/2522第22页,本讲稿共37页1.从机器语言到高级语言的抽象1.2表达算法的抽象机制表达算法的抽象机制高级程序设计语言的主要好处是:高级程序设计语言的主要好处是:(4)把繁杂琐碎的事务交给编译程序,所以自动化程度高,开发周期短,程序员可以集)把繁杂琐碎的事务交给编译程序,所以自动化程度高,开发周期短,程序员可以集中时间和精力从事
18、更重要的创造性劳动,提高程序质量。中时间和精力从事更重要的创造性劳动,提高程序质量。(1)高级语言更接近算法语言,易学、易掌握,一般工程技术人员只需)高级语言更接近算法语言,易学、易掌握,一般工程技术人员只需 要要几周时间的培训就可以胜任程序员的工作;几周时间的培训就可以胜任程序员的工作;(2)高级语言为程序员提供了结构化程序设计的环境和工具,使得设计出来的)高级语言为程序员提供了结构化程序设计的环境和工具,使得设计出来的程序可读性好,可维护性强,可靠性高;程序可读性好,可维护性强,可靠性高;(3)高级语言不依赖于机器语言,与具体的计算机硬件关系不大,因而所)高级语言不依赖于机器语言,与具体的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第1章 算法引论优秀课件 算法 引论 优秀 课件
限制150内