程序设计的灵魂——算法.pptVIP

  1. 1、本文档共45页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
程序设计的灵魂——算法

第二章 程序设计的灵魂——算法 清华大学 自动化系 刘连臣 2009年9月15日 主要内容 目标:以计算机能执行的算法特征为线索,了解计算机的模型与结构,掌握程序设计基本理念,为程序设计语言的学习奠定基础。 提纲 2.1 算法与计算机算法 2.2 图灵机模型 2.3 程序设计的灵魂——算法 2.4 计算机算法的表示 2.5 算法结构化分析 2.1 算法与计算机算法 程序设计的目的是什么? 从计算机解决问题的过程出发,设计出计算机能够执行的算法,并且实现该算法。 2.1 算法与计算机算法 算法:为解决一个问题而采取的方法和步骤,或者说是解题步骤的精确描述。“a set of rules that must be followed when solving a particular problem ” “算法”即演算法的中文名称最早出自《周髀算经》。 英文名称 Algorithm 来自于9世纪波斯数学家花拉子密(比阿勒·霍瓦里松)。“算法”原为“algorism”(阿拉伯数字的运算法则),18世纪演变为algorithm。 2.1 算法与计算机算法 对同一个问题,可有不同的解题方法和步骤 2.1 算法与计算机算法 计算机算法:计算机能执行的算法。 是计算机处理信息的本质,因为计算机程序本质上是一个算法来告诉计算机确切的步骤(well-defined procedure)来执行一个指定的任务。 计算机算法的特点 输入:一个算法必须有零个或以上输入量。 输出:一个算法应有一个或以上输出量,输出量是算法计算的结果。 明确性:算法的描述必须无歧义,以保证算法的实际执行结果是精确地符合要求或期望,并且要求实际执行结果是确定的。 有限性:(计算机只有有限个状态、有限个输入符号和有限个指令)规定算法必须在有限个步骤内完成任务。 有效性:又称可行性。算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现。 2.1 算法与计算机算法 2.2 图灵机模型 什么是“确切的步骤” 精确的定义? 20世纪的英国数学家图灵提出了著名的图灵论题,并提出一种假想的计算机的抽象模型,这个模型被称为图灵机。 2.2 图灵机模型 图灵的基本思想是用机器来模拟人们用纸笔进行数学运算的过程 在纸上写上或擦除某个符号; 把注意力从纸的一个位置移动到另一个位置; 而在每个阶段,人要决定下一步的动作,依赖于 (a) 此人当前所关注的纸上某个位置的符号。 (b) 此人当前思维的状态。 2.2 图灵机模型 图灵机组成 构造出一台假想的机器,该机器由以下几个部分组成: 一条无限长的纸带 TAPE。 一个读写头 HEAD。 一套控制规则 TABLE。 一个状态寄存器。 注意这个机器的每一部分都是有限的,但它有一个潜在的无限长的纸带,因此这种机器只是一个理想的设备。图灵认为这样的一台机器就能模拟人类所能进行的任何计算过程。 2.2 图灵机模型 图灵机工作原理 从读写头在纸带上读出一个方格的信息 并且根据它当前的内部状态开始对控制规则进行查寻。然后得出一个输出动作,也就是是否往纸带上写信息,还是移动读写头到下一个方格。程序也会告诉它下一时刻内部状态转移到哪一个。 具体的控制规则就是一个列表,其实就是程序,样子如右侧表。 2.2 图灵机模型 图灵机只要根据每一时刻读写头读到的信息和当前的内部状态进行查表就可以确定它下一时刻的内部状态和输出动作。 图灵机就是这么简单!而只要你变化它的程序(也就是上面的规则表),那么它就可能为你做任何计算机能够完成的工作。可以说,图灵机就是一个最简单的计算机模型! 2.3 程序设计的灵魂——算法 一个程序应包括两个方面的内容 对数据的描述:数据结构(data structure) 对操作的描述:算法(algorithm) 完整的程序设计应该是: 2.3 程序设计的灵魂——算法 例2.1: 求1×2×3×4×5 步骤1:先求1×2,得到结果2 步骤2:将步骤1得到的乘积2再乘以3,得到结果6 步骤3:将6再乘以4,得24 步骤4:将24再乘以5,得120 如果要求1×2×…×1000,则要写999个步骤 应该怎么办呢? 2.3 程序设计的灵魂——算法 可以设两个变量:一个变量代表被乘数,一个变量代表乘数。不另设变量存放乘积结果,而直接将每一步骤的乘积放在被乘数变量中。设p为被乘数,i为乘数。用循环算法来求结果, 算法可改写: S1:使p=1。 S2:使i=2。 S3:使p×i,乘积仍放在变量p中,可表示为:p×i → p S4:使i的值加1,即i+1 → i。 S5:如果i不大于5,返回重新执行步骤S3以及其后的步骤S4和S5;否则,算法结束。最后得到p的值就是5

文档评论(0)

phltaotao + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档