算法的基本概念

  所谓算法是指解决方案的准确而完整的描述

  对于一个问题,如果可以通过一个计算机程序,在有限的存储空间内运行有限的时间,而得到正确的结果,则称这个问题是算法可解的。但算法不等于程序,也不等于计算方法。当然,程序也可以作为算法的一种描述,但程序通常还需要考虑很多与方法和分析无关的细节问题,这是因为在编写程序时要受到计算机系统运行环境的限制。通常,程序的编制不可能优于算法的设计。

  1.算法的基本特征

  (1)可行性(Effectiveness)

    针对实际问题设计算法,人们总希望能够得到满意的结果。但一个算法又总是在某个特定的计算工具上执行的,因此,算法在执行的过程中往往要受到计算工具的限制,使执行结果产生偏差。例:若某计算工具具有7位有效数字,则设:A=10^12,B=1,C=-10^12,则A+B+C=0,A+C+B=1。所以在设计一个算法的时候必须考虑他的可行性。

  (2)确定性(Definiteness)

   算法的确定性,是指算法中的每一个步骤必须是有明确定义的,不允许有模凌两可的解释,也不允许有多义性。在解决实际问题时,可能会出现这样的情况:针对某种特殊问题,数学公式是正确的,但按此数学公式设计的计算过程可能会使计算机系统无所适从。这是因为根据数学公式设计的计算过程只考虑了正常使用的情况,而当出现异常情况时,次计算过程就不能适应了。

  (3)有穷性(Finiteness)

   算法的有穷性,是指算法必须能在有限的时间内做完。算法的有穷性还应包括合理的执行时间的含义。若一个算法需要执行千万年,显然失去了使用的价值。

  (4)拥有足够的情报

    一个算法执行的结果总是与输入的初始数据有关,不同的输入将会有不同的结果输出。但输入不够或输入错误时,算法本身也就无法执行或导致执行有错。

  

  综上所述,所谓算法,是一组严谨地定义运算顺序的规则,并且每一个规则都是有效的,且是明确的,此顺序将在有限的次数下终止

  2.算法的基本要素

  一个算法通常由两种基本要素组成:一是对数据对象的运算和操作,二是算法的控制结构

(1)算法中对数据的运算和操作

  通常,计算机可执行的基本操作是以指令的形式描述的。在一般的计算机系统中,基本的运算和操作有以下四类:

  1.算术运算:主要包括加、减、乘、除等运算。

  2.逻辑运算:主要包括“与”、“或”、“非”等运算。

  3.关系运算:主要包括“大于”、“小于”、“等于”、“不等于”等运算。

  4.数据传输:主要包括赋值、输入、输出等操作。

(2)算法的控制结构

  算法中各操作之间的执行顺序称为算法的控制结构

  描述算法的工具通常有传统流程图、N-S结构化流程图、算法描述语言等。一个算法一般都可以用顺序、选择、循环三种基本控制结构组合而成。

 3.算法设计基本方法

  计算机解题的过程实际上是在实施某种算法,这种算法称为计算机算法。计算机算法不同与人工处理方法。

 (1)列举法

   基本思想:根据提出的问题,列举所有的可能,并用问题中给定的条件检验哪些是需要的,哪些是不需要的。

  (2)归纳法

   基本思想:通过列举少量的特殊情况,经过分析,最后找出一般的关系。

  (3)递推

   基本思想:所谓递推,是指从已知的初始条件出发,逐次推出所要求的各中间结果和最后结果。

  (4)递归

   基本思想:将问题逐层分解,最后归结为一些最简单的问题。这种将问题逐层分解的过程,实际上并没有对问题进行求解,而只是当解决了最后那些最简单的问题后,再沿着原来分解的逆过程逐步进行综合,这就是递归思想。

   递归分为直接递归和间接递归两种。如果一个算法P显式地调用自己则称为直接递归。如果算法P调用另一个算法Q,而算法Q 又调用算法P,则称为间接递归。

  (5)减半递推技术

   所谓“减半”,是指将问题的规模减半,而问题的性质不变;所谓“递推”,是指重复“减半”的过程。例如用二分法求函数f(x)在某区间[a,b]上的实根,这个二分法就是减半递推技术的一种表现。

  (6)回溯法

   有些实际问题很难归纳出一组简单的递推公式或直观的求解步骤,并且也不能进行无限的列举。对于这类问题,一种有效的方法是“试”。通过对问题的分析,找出一个解决问题的线索,然后沿着这个线索逐步试探,对于每一步试探,若试探成功,就得到问题的解,若试探失败,就逐步回退,换别的路线再进行试探。这种方法称为回朔法。



以上资料均出自:《全国计算机等级考试二级教程——公共基础知识(2013年版)》,高等教育出版社,2013.5,pag:1-5

  • 6
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值