计算机科学导论——基于计算思维的思想与方法(第4版) 课件 【ch07】问题求解的算法基础.pptx

计算机科学导论——基于计算思维的思想与方法(第4版) 课件 【ch07】问题求解的算法基础.pptx

  1. 1、本文档共52页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机科学导论基于计算思维的思想与方法问题求解的算法基础第七章新工科建设之路·计算机类系列教材 01算法——问题求解的核心 算法——问题求解的核心01一、算法的基本概念算法研究史上最著名的古老算法是用于求两个整数的最大公约数的欧几里得(Euclid) 算法。这个算法最早出现在大约公元前350——300年由古希腊数学家欧几里得写成的《Elements》( 《几何原本》)中,它被人们公认为是算法史上的第一个算法, 欧几里得算法的原理是重复应用等式1.算法的起源 算法——问题求解的核心01一、算法的基本概念算法是求解问题的方法和步骤,并具有完整的规则。把算法归纳为以下5个显著特征。(1)确定性;(2)有效性;(3)有穷性;(4)有零个或多个输入;(5)有一个或多个输出。2.算法的特征 算法——问题求解的核心01二、算法的设计要求1.正确性(Correctness)正确性是指对一切合法的输入, 都能在有限次的计算后产生正确的结果。算法的正确是评价一个算法优劣的 重要指标,一旦完成对算法的描述, 必须证明它是正确的。2.可读性(Readality)可读性是指算法可供人们阅读的容易程度。一个好的算法应便于阅读、理解、编码、修改等。从书写角度来说,结构上要直观、清晰、美观,并在必要的地方加上注释说明。 算法——问题求解的核心01二、算法的设计要求3.健壮性(Robustness)健壮性是指一个算法对不合理输入数据的反应能力和处理能力。程序设计时要充分考虑异常情况。健壮性体现了思维的缜密性,如果没有对算法进行仔细认真的考察,特别是极端数据、特殊数据的处理,就很可能使算法失去准确性。4.算法的运行效率算法的运行效率是指在程序执行时,所需耗用的时间和所占用的内存空间。耗用的时间和占用的空间越少,则算法的运行效率越高。算法的运行效率是评价算法好坏的重要指标。 算法——问题求解的核心01三、算法的复杂性1.时间复杂度(Time Complexity)算法的时间复杂度是指度量时间的复杂性,即算法的时间效率的指标。换言之,时间复杂度是与求解问题的规模、算法输入数据相关的函数,该函数表示算法运行所花费的时间。为了简化问题,通常用算法运行某段代码的次数来代替准确的执行时间,记为T(n)。T即Time的首字母,T(n)中的n表示问题规模的大小,一般指待 处理的数据量的大小。 算法——问题求解的核心01三、算法的复杂性2.空间复杂度(Space Complexity)算法的空间复杂度是指算法运行的存储空间,是实现算法所需的内存空间的大小。空间复杂度也是与求解问题规模、算法输入数据相关的函数,记为S(n)。 空间复杂度的分析方法与时间复杂度的分析是类似的,往往希望算法有常数数量级或多项式数量级的空间复杂度。 算法——问题求解的核心01四、算法的描述方法1.用自然语言描述算法自然语言是人们日常所使用的语言,如汉语、英语、日语等。用自然语言描述算法是最原始方法,也是最直观、通俗易懂、为人们所熟悉的方法。 算法——问题求解的核心01四、算法的描述方法2.用图形描述算法由于用自然语言描述算法的逻辑结构不是太好,对于稍复杂的算法问题很容易出错,因此常用图形描述算法。目前,用来描述算法的图形有3种:流程图(Flow Chart)、N-S图和PAD图, 它们各有其优点,人们更多地习惯用流程图描述算法,并特别适合初学者。 算法——问题求解的核心01四、算法的描述方法3.用伪代码描述算法伪代码是一种介于自然语言与高级语言之间描述方法,常用伪代码符号如表7-1所示。 算法——问题求解的核心01四、算法的描述方法4.用程序设计语言描述算法无论是用自然语言或伪代码,还是用流程图所描述的算法,都不能被机器识别,最后必须将它们转换成程序设计语言。因此,用程序设计语言来描述算法是最直接有效的方法。存在以下不足:(1)要求设计者必须熟练掌握程序设计语言和编程技巧;(2)要求描述计算步骤的细节,从而忽视了算法的本质; (3)程序设计语言基于串行,算法的逻辑流程难以遵循,逻辑较复杂时问题越显严重。 02数值数据求解——算法策略 数值数据求解——算法策略02穷举算法(Exhaustive Attack Algorithm),也称为枚举算法(Enumerate Algorithm)或称为强力算法(Brute-force Algorithm),是针对要解决的问题,列举所有可能的情况,逐个判断哪些条件符合问题所要求的约束条件,从而得到问题的解。一、穷举算法 数值数据求解——算法策略021.算法思想(1)确定范围:按照问题要求确定问题解的大致范围一一 列举,遍历所有可能的组合值。(2)条件约束:判断题解是否符合正解条件,避免解题结果错误。(3)循环运算:使可能解的范围降至最小,以便提高解题效益。一、穷举算法

您可能关注的文档

文档评论(0)

balala11 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档