- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第1部分算法和算法分析
第 1 部分 算法和算法分析
第 1 章 算法问题求解基础
算法是计算机学科的一个重要分支,它是计算机科学的基础,更是计算机程序的基石。算法
是计算机求解问题的特殊方法。学习算法,一方面需要学习求解计算领域中典型问题的各种有效
算法,还要学习设计新算法和分析算法性能的方法。本章给出算法的基本概念,介绍使用计算机
求解问题的过程和方法,讨论递归算法及证明递归算法正确性的归纳法。
1.1 算法概述
1.1.1 什么是算法
在学习一门计算机程序设计语言,如 C/C++或 Pascal 之后,应该对算法一词不再陌生。编写
一个程序,实际上是在实现使用计算机求解某个问题的方法。在计算机科学中,算法一词用于描
述一个可用计算机实现的问题求解 (problem-solving )方法。
什么是算法?笼统地说,算法 (algorithm )是求解一类问题的任意一种特殊的方法。较严格
的说法是,一个算法是对特定问题求解步骤的一种描述,它是指令的有限序列。此外,算法具有
下列 5 个特征。
(1)输入 (input ):算法有零个或多个输入量;
(2 )输出 (output ):算法至少产生一个输出量;
(3 )确定性 (definiteness ):算法的每一条指令都有确切的定义,没有二义性;
(4 )能行性 (effectiveness ):算法的每一条指令必须足够基本,它们可以通过已经实现的基
本运算执行有限次来实现;
(5 )有穷性 (finiteness ):算法必须总能在执行有限步之后终止。
所有算法都必须具有以上 5 个特征。算法的输入是一个算法在开始前所需的最初的量,这些
输入取自特定的值域。算法可以没有输入,但算法至少应产生一个输出,否则算法便失去了它存
在的意义。算法是一个指令序列。一方面,每条指令的作用必须是明确、无歧义的。在算法中不
允许出现诸如“计算 5+3 或计算 7−3 ”这样的指令。另一方面,算法的每条指令必须是能行的。
对一个计算机算法而言,能行性要求一条算法指令应当最终能够由执行有限条计算机指令来实
现。例如,一般的整数算术运算是能行的,但如果 1÷3 的值需由无穷的十进制展开的实数表示,
就不是能行的。因此,概括地说,算法是由一系列明确定义的基本指令序列所描述的,求解特定
问题的过程。它能够对合法的输入,在有限时间内产生所要求的输出。如果取消有穷性限制,则
只能称为计算过程 (computational procedure )。
描述一个算法有多种方法,可以用自然语言、流程图、伪代码和程序设计语言来描述。当一
个算法使用计算机程序设计语言描述时,就是程序 (program )。算法必须可终止。计算机程序并
没有这一限制,例如,一个操作系统是一个程序,却不是一个算法,一旦运行,只要计算机不关
·1 ·
机,操作系统程序就不会终止运行。所以,操作系统程序是使用计算机语言描述的一个计算过程。
算法概念并不是计算机诞生以后才有的新概念。计算两个整数的最大公约数的辗转相除法是
由古希腊欧几里得(约公元前330—275 年)在他的《几何原本》(Euclid’s Elements )中提出的,
它是算法研究最重要的早期成果。直到 1950 年左右,算法一词还经常与欧几里得算法(Euclid’s
algorithm )联系在一起。中国的珠算口诀可视为典型的算法,它将复杂的计算(如除法)描述为
一系列的算珠拨动操作。
欧几里得算法又称辗转相除法,用于计算两个整数 m 和 n (0≤m <n 的最大公约数,记为
gcd(m, n) 。其计算过程是重复应用下列等式,直到n mod m= 0 。
gcd(m, n) = gcd(n mod m, m) ,对于m >0 (1-1)
式中,n mod m 表示 n 除以 m 之后的余数。因为 gcd(0, n) = n ,n 的最后取值也就是m 和 n 的最
大公约数。例如,gcd(24, 60) = gcd(12, 24)
您可能关注的文档
- 离心力试验-atis.PDF
- 离子键和离子化合物共价键.PPT
- 离心方法差分离心.PPT
- 离心流化床中强制对流换热的试验研究.PDF
- 离散型随机变数EXxfxμVXxμfxEXμEXEX.PDF
- 离子选择电栩眯鑫特娜瞬和别协裁.PDF
- 离散数学大纲-西北师范大学在线教学系统.DOC
- 离子键共价键复习课.PPT
- 离散时间闸门式多级门限服务的两级优先级轮询排队系统分析-电子学报.PDF
- 离心涂胶过程的参数变化分析与模拟-光学精密工程.PDF
- 山东省潍坊市第一中学2012届高三阶段测试 基本能力试题.docx
- 山东省济宁市曲阜师大附中2010届九年级历史上学期期中质量检测试题人教版.docx
- 山东省济宁市2011届高三教学质量监测历史试题.docx
- 山东省枣庄市薛城实验中学2015届高三上学期期末历史试题.docx
- 山东省济宁市微山县第一中学2015-2016学年高二语文入学检测考试试题.docx
- 山东省淄博市张店区湖田中学2014-2015学年七年级英语下学期期中学业水平检测试题.docx
- 云南省玉溪市峨山彝族自治县一中2025-2026学年高三上学期期中考试物理-学生用卷.pdf
- 广东省江门市新会区创新教育集团2025-2026学年部编版九年级历史上学期期中综合素养评价(含答案).pdf
- 长沙市岳麓实验高三期中考试历史-学生用卷.pdf
- 四川省宜宾市翠屏区2025--2026学年八年级上学期期中历史试题(含答案).pdf
原创力文档


文档评论(0)