计算思维导论第3章课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《计算思维导论第3章课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算 思维 导论 课件
- 资源描述:
-
1、3-1/603-2/601974年图灵奖获得者年图灵奖获得者Donald Ervin Knuth: 计算机科学就是算法的研究计算机科学就是算法的研究The Art of Computer Programming计算机计算机输入输入输出输出算法算法问题问题算法与计算机之间的关系算法与计算机之间的关系3-3/60一、算法的起源一、算法的起源公元前公元前300300年:古希腊著名数学家欧几里得提出求最大年:古希腊著名数学家欧几里得提出求最大公约数的一种算法公约数的一种算法, ,即辗转相除法又称即辗转相除法又称欧几里得算法。欧几里得算法。公元公元263263年:三国魏人刘徽注释年:三国魏人刘徽注释九章
2、算术九章算术中不仅对中不仅对原书的方法、公式和定理进行一般的解释和推导,而原书的方法、公式和定理进行一般的解释和推导,而且在其论述中多有创造。如他运用割圆术得出圆周率且在其论述中多有创造。如他运用割圆术得出圆周率的近似值的近似值3927/12503927/12503.14163.1416。公元公元825825年:波斯数学家年:波斯数学家al-al-KhwarizmiKhwarizmi撰写了著名的撰写了著名的Persian TextbookPersian Textbook中概括了进行四则算术运算的法则。中概括了进行四则算术运算的法则。Algorithm(Algorithm(算法算法) )一词就来
3、源于这位数学家的名字。一词就来源于这位数学家的名字。3-4/60二、算法的定义二、算法的定义 算法算法3.13.1欧几里得算法。欧几里得算法。输入:正整数输入:正整数m m、n n输出:输出:m m、n n的最大公约数的最大公约数 r rm mod nm mod n 若若r r0 0,输出最大公约数,输出最大公约数n n 若若r0r0,令,令m mn n,n nr r,转继续,转继续 算法算法:是解决某一特定问题的一组有穷规则的集合。:是解决某一特定问题的一组有穷规则的集合。算法算法:对特定问题求解步骤的一种描述,是由若干条:对特定问题求解步骤的一种描述,是由若干条指令组成的有穷集合。指令组成
4、的有穷集合。3-5/60三、算法的特征三、算法的特征确定性确定性:算法中每一个步骤都是清晰的、无歧义:算法中每一个步骤都是清晰的、无歧义有穷性有穷性:算法必须在有限步内终止:算法必须在有限步内终止输输 入入:有零个或多个输入,作为初始状态:有零个或多个输入,作为初始状态输输 出出:有一个或多个输出,作为计算结果:有一个或多个输出,作为计算结果可行性可行性:算法中的操作可通过有限次基本运算来实现:算法中的操作可通过有限次基本运算来实现判断一个算法的好坏主要依据如下标准判断一个算法的好坏主要依据如下标准:正确性正确性:在合理输入下能在有限时间内得出正确结果:在合理输入下能在有限时间内得出正确结果可
5、读性可读性:算法主要是为了人的阅读与交流,其次执行:算法主要是为了人的阅读与交流,其次执行健壮性健壮性:算法应具备检查错误和对错误进行处理能力:算法应具备检查错误和对错误进行处理能力效效 率率:算法执行时所需计算机资源的多少:算法执行时所需计算机资源的多少3-6/60算法的描述目的算法的描述目的记录算法思想记录算法思想方便他人理解算法方便他人理解算法算法的描述方法算法的描述方法自然语言自然语言流程图流程图伪代码伪代码程序设计语言程序设计语言3-7/60一、自然语言一、自然语言自然语言自然语言是人们日常进行交流的语言,如汉语、英语等是人们日常进行交流的语言,如汉语、英语等优点优点:通俗易懂,即使
6、没有学过算法也能看懂算法执行:通俗易懂,即使没有学过算法也能看懂算法执行缺点缺点:不够严谨,容易出现歧义和错误:不够严谨,容易出现歧义和错误 例题例题 利用自然语言描述欧几里得算法。利用自然语言描述欧几里得算法。 输入输入m m、n n 判断判断n n是否为是否为0 0,如果不为,如果不为0 0,转步骤,否则转,转步骤,否则转 m m对对n n取余,其结果赋值给取余,其结果赋值给r r,n n赋给赋给m m,r r赋给赋给n n,转,转 输出输出m m,算法结束,算法结束3-8/60二、流程图二、流程图 常用来描述算法的图形工具有常用来描述算法的图形工具有:流程图或程序框图、:流程图或程序框图
7、、N-SN-S图和图和PADPAD图。图。 优点优点:直观形象,简洁明了。:直观形象,简洁明了。 缺点缺点:画起来费事,不易修改。:画起来费事,不易修改。常用的流程图符号常用的流程图符号:3-9/60 例题例题 利用流程图描述欧几里得算法。利用流程图描述欧几里得算法。3-10/60三、伪代码三、伪代码 伪代码是由带标号的指令构成,但是它不是伪代码是由带标号的指令构成,但是它不是C C、C+C+、JavaJava等通常使用的程序设计语言,而是算法步骤的描述。等通常使用的程序设计语言,而是算法步骤的描述。 伪代码介于自然语言和程序设计语言之间。伪代码介于自然语言和程序设计语言之间。伪代码的具体表示
8、伪代码的具体表示:赋值语言:赋值语言:分支语句:分支语句:ifthenelseifthenelse循环语句:循环语句:while, for, repeat untilwhile, for, repeat until转向语句:转向语句:gotogoto输出语句:输出语句:returnreturn调用:调用:注释:注释:/3-11/60 例题例题 利用伪代码描述欧几里得算法。利用伪代码描述欧几里得算法。输入:正整数输入:正整数m m、n n输出:输出:m m、n n的最大公约数的最大公约数1 repeat1 repeat2 r m mod n2 r m mod n3 m 3 m n n4 n 4
9、n r r5 until r=05 until r=06 return m6 return m 3-12/60四、程序设计语言四、程序设计语言 程序设计语言是一个能完整、准确和规则程序设计语言是一个能完整、准确和规则地表达人们的意图,并用以指挥或控制计算机地表达人们的意图,并用以指挥或控制计算机工作的工作的符号系统符号系统,如,如C C、C+C+、JavaJava等程序设计等程序设计语言可以描述算法。语言可以描述算法。 优点优点:描述的算法能在计算机上直接执行:描述的算法能在计算机上直接执行 缺点缺点:抽象性差、不易理解且有严格的语:抽象性差、不易理解且有严格的语法限制等。法限制等。3-13/
10、60输入:正整数输入:正整数m m、n n输出:输出:m m、n n的最大公约数的最大公约数intint gcd(intgcd(int m, m, intint n) n) intint r;r; do do r = m % n; r = m % n; m = n; m = n; n = r; n = r; while(r)while(r); ; return m; return m; 例题例题 利用利用C C语言描述欧几里得算法。语言描述欧几里得算法。3-14/60 算法是解决问题的方案,由于实际问题千奇算法是解决问题的方案,由于实际问题千奇百怪,因而制定出的解决方案也将千差万别。百怪,因而
11、制定出的解决方案也将千差万别。 算法设计的一般步骤算法设计的一般步骤: 理解待求解问题理解待求解问题 解决问题是设计算法的最终目标。除了需要分析问题的解决问题是设计算法的最终目标。除了需要分析问题的求解目标、输入数据和限制条件外,还要判断清楚待求解问求解目标、输入数据和限制条件外,还要判断清楚待求解问题的种类,是否有现成的算法可以直接应用。题的种类,是否有现成的算法可以直接应用。 确定算法运行的环境确定算法运行的环境 了解算法的运行环境,才能设计出可行且高效的算法。了解算法的运行环境,才能设计出可行且高效的算法。比如在小型的嵌入式环境中只能运行需要较小内存的算法,比如在小型的嵌入式环境中只能运
12、行需要较小内存的算法,而对于并行分布式的运行环境,则要设计高效的并行算法。而对于并行分布式的运行环境,则要设计高效的并行算法。3-15/60 设计算法设计算法 设计算法是将算法具体化,即设计出算法的详细规格说明。设计算法是将算法具体化,即设计出算法的详细规格说明。也就是,首先确定算法所需要的数据结构,然后结合具体问题的也就是,首先确定算法所需要的数据结构,然后结合具体问题的特性来选择算法的设计策略,最后根据算法设计技术的原理描述特性来选择算法的设计策略,最后根据算法设计技术的原理描述算法的具体流程算法的具体流程( (流程图、伪代码和程序设计语言等流程图、伪代码和程序设计语言等) )。 分析算法
13、分析算法 对所设计出的算法进行复杂性分析,考察其在时间和空间方对所设计出的算法进行复杂性分析,考察其在时间和空间方面的计算开销。若算法在某些环节的计算开销较大,可有针对性面的计算开销。若算法在某些环节的计算开销较大,可有针对性地改进该环节,若整个算法的计算开销太大,则需要返回第步地改进该环节,若整个算法的计算开销太大,则需要返回第步重新考虑采用新的算法设计技术来求解该问题。重新考虑采用新的算法设计技术来求解该问题。 编程实现编程实现 采用某种程序设计语言将设计好的算法实现出来。采用某种程序设计语言将设计好的算法实现出来。3-16/60 算法分类算法分类: 数值算法数值算法 求解线性方程组、数值
14、积分等,有特定的计算步骤求解线性方程组、数值积分等,有特定的计算步骤 数值数值计算方法计算方法课程课程 非数值算法非数值算法 求解判定问题、最优化问题求解判定问题、最优化问题等等,需需要要掌握算法设计掌握算法设计技术技术 算法设计与分析算法设计与分析课程课程 软计算方法软计算方法 遗传算法、遗传算法、粒子群粒子群算法、蚁群算法、人工算法、蚁群算法、人工神经网络等神经网络等 计算智能计算智能课程课程3-17/60一、穷举法一、穷举法( (又称蛮力算法又称蛮力算法) ) 穷举法穷举法指在问题的解空间范围内逐一测试,指在问题的解空间范围内逐一测试,找出问题的解。找出问题的解。它它是一种简单而有效的算
15、法设计是一种简单而有效的算法设计策略同时也是一种很容易应用的方法。策略同时也是一种很容易应用的方法。 穷举法的应用穷举法的应用 国王的婚姻中国王使用的算法国王的婚姻中国王使用的算法 旅行商问题旅行商问题中中逐条路线计算逐条路线计算 密码学中的暴力破解法密码学中的暴力破解法 图论中四色定理的证明图论中四色定理的证明 百钱买百钱买百鸡问题百鸡问题 3-18/60 案例一案例一 暴力破解法是一种用穷举法实现的密码暴力破解法是一种用穷举法实现的密码破译方法。破译方法。最原始、最基本的攻击方式,对密码进行逐一最原始、最基本的攻击方式,对密码进行逐一测试直到找到真正的密码。测试直到找到真正的密码。原则上可
16、以破译所有密码,但费时费力。原则上可以破译所有密码,但费时费力。密码暴力破解软件:密码暴力破解软件:89Winrar89Winrar QQ QQ密码暴力破解软件密码暴力破解软件3-19/60 案例二案例二 四色定理四色定理( (又称四色问题或四色猜想又称四色问题或四色猜想) )。四色问题描述四色问题描述:任何一张地图只用四种颜色就能使具有共同边:任何一张地图只用四种颜色就能使具有共同边界的国家着上不同的颜色。界的国家着上不同的颜色。数学语言表示数学语言表示:将平面任意地细分为不相重叠的区域,每一个:将平面任意地细分为不相重叠的区域,每一个区域总可以用区域总可以用1 1、2 2、3 3、4 4这
17、四个数字之一来标记,而不会使相这四个数字之一来标记,而不会使相邻的有公共边界的两个区域得到相同的数字。邻的有公共边界的两个区域得到相同的数字。证明四色定理证明四色定理( (穷举法穷举法) ):利用数学理论推出证明所有例子可以归约到证明有限个特例利用数学理论推出证明所有例子可以归约到证明有限个特例上;上;利用计算机程序产生了所有特例利用计算机程序产生了所有特例( (大约大约17001700个例子个例子) ),通过穷,通过穷举发现所有特例都是四着色的。举发现所有特例都是四着色的。3-20/60 案例三案例三 百钱买百鸡问题百钱买百鸡问题 百钱买百鸡:鸡翁一,值钱五百钱买百鸡:鸡翁一,值钱五 鸡母一
18、,值钱三鸡母一,值钱三 鸡雏三,值钱一鸡雏三,值钱一问翁、母、雏各几何?问翁、母、雏各几何?意思是:公鸡每只意思是:公鸡每只5 5元、母鸡每只元、母鸡每只3 3元、小鸡元、小鸡3 3只只1 1元,元,用用100100元钱买元钱买100100只鸡,求公鸡、母鸡、小鸡的只数。只鸡,求公鸡、母鸡、小鸡的只数。3-21/60 设鸡翁、鸡母、鸡雏的个数分别为设鸡翁、鸡母、鸡雏的个数分别为x x、y y、z z,根据题意可得,根据题意可得如下方程如下方程组组: 5x5x3y3yz/3z/3100100 x xy yz z100100 1x 1x20, 1y20, 1y33, 3z33, 3z100, z
19、mod 3100, z mod 30 0 测试集合:测试集合:1 1x x20, 120, 1y y3333,z=3,6,9,.,99z=3,6,9,.,99测试条件:测试条件:5x5x3y3yz/3z/3100100 x xy yz z1001003-22/60 巧妙和高效的算法很少来自于穷举法,但基于以下巧妙和高效的算法很少来自于穷举法,但基于以下因素,穷举法仍是一种重要的算法设计策略:因素,穷举法仍是一种重要的算法设计策略: 穷举法几乎可以通用于任何领域的问题求解,可穷举法几乎可以通用于任何领域的问题求解,可能是唯一一种解决所有问题的一般性方法;能是唯一一种解决所有问题的一般性方法; 即
20、使效率低下,仍可用穷举法求解一些小规模的即使效率低下,仍可用穷举法求解一些小规模的问题实例;问题实例; 如果解决的问题实例不多,而穷举法可用一种可如果解决的问题实例不多,而穷举法可用一种可接受的速度对问题求解,那么花时间去设计一个更高效接受的速度对问题求解,那么花时间去设计一个更高效地算法是得不偿失的。地算法是得不偿失的。 思考题思考题 举例说明生活中的穷举法应用。举例说明生活中的穷举法应用。3-23/60二、回溯法二、回溯法 回溯回溯法法是一种选优搜索法,按选优条件向前是一种选优搜索法,按选优条件向前搜索,以达到目标。搜索,以达到目标。在搜索过程中,能进则进,在搜索过程中,能进则进,不能进则
21、退回来,换一条路再试,通过此种方式不能进则退回来,换一条路再试,通过此种方式提高搜索效率,减少不必要的测试。提高搜索效率,减少不必要的测试。回溯法的应用回溯法的应用 迷宫问题迷宫问题 搜索引擎中的网络爬虫搜索引擎中的网络爬虫 八皇后问题八皇后问题3-24/60 案例一案例一 老鼠走迷宫老鼠走迷宫老鼠从迷宫入口出发,任老鼠从迷宫入口出发,任选一条路线向前走,在到选一条路线向前走,在到达一个岔路口时,任选一达一个岔路口时,任选一个路线走下去个路线走下去,如此继,如此继续,直到前面没有路可走续,直到前面没有路可走时,老鼠退回到上一个岔时,老鼠退回到上一个岔路口,重新在没有走过的路口,重新在没有走过的
22、路线中任选一条路线往前路线中任选一条路线往前走。按这种方式走下去,走。按这种方式走下去,直到走出迷宫。直到走出迷宫。 3-25/60 案例二案例二 搜索引擎中的网络爬虫。搜索引擎中的网络爬虫。 搜索引擎搜索引擎是指根据一定的策略、运用特定的计算机程序从是指根据一定的策略、运用特定的计算机程序从互联网上搜集信息,在对信息进行组织和处理后,为用户提供互联网上搜集信息,在对信息进行组织和处理后,为用户提供检索服务,将用户检索相关的信息展示给用户的系统。百度和检索服务,将用户检索相关的信息展示给用户的系统。百度和谷歌等是搜索引擎的代表。谷歌等是搜索引擎的代表。 搜索引擎的组成搜索引擎的组成:下载、索引
23、和查询。:下载、索引和查询。3-26/60网络爬虫网络爬虫:自动下载互联网所有网页。:自动下载互联网所有网页。 网络爬虫原理网络爬虫原理:图的遍历,从图中某一顶点出发访遍图中所有顶图的遍历,从图中某一顶点出发访遍图中所有顶点,且使每个顶点仅被访问一次。点,且使每个顶点仅被访问一次。回溯算法回溯算法:图的深度优先遍历:图的深度优先遍历(广度优先遍历)。广度优先遍历)。深度优先遍历顺序:深度优先遍历顺序:V V1 1,V,V2 2,V,V4 4,V,V8 8,V,V5 5,V,V3 3,V,V6 6,V,V7 73-27/60 案例三案例三 八皇后问题八皇后问题。在。在8 88 8格国际象棋的棋盘
24、格国际象棋的棋盘上摆放八个皇后,使其不能互相攻击,即任意两上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上个皇后都不能处于同一行、同一列或同一斜线上问有多少种摆法?问有多少种摆法?3-28/60 回溯法解八皇后问题思路回溯法解八皇后问题思路:逐行摆放皇后。初始第:逐行摆放皇后。初始第1 1行皇后行皇后放第放第1 1列;摆放第列;摆放第i i行皇后时,从第行皇后时,从第1 1列开始,逐列判定是否与前列开始,逐列判定是否与前i-1i-1行皇后攻击,直到找到一个不攻击的位置,继续第行皇后攻击,直到找到一个不攻击的位置,继续第i+1i+1行的摆行的摆放;若第放;若第
25、i i行无摆放位置,则拿掉该行皇后,回溯至第行无摆放位置,则拿掉该行皇后,回溯至第i-1i-1行,第行,第i-1i-1行皇后从当前位置的下一列开始判定,继续搜索。当第行皇后从当前位置的下一列开始判定,继续搜索。当第1 1行皇行皇后的摆放位置超出棋盘时,全部求解过程结束。后的摆放位置超出棋盘时,全部求解过程结束。(92(92种种) ) 3-29/60 回溯法有通用解法之称,当一个问题没有显而易见的解法回溯法有通用解法之称,当一个问题没有显而易见的解法时,可尝试使用回溯法求解,这实际是与穷举法一致的,因其时,可尝试使用回溯法求解,这实际是与穷举法一致的,因其本质仍是穷举。需要注意,回溯和穷举虽然能
展开阅读全文