算法的定义

来源:互联网 发布:淘宝流量和访客的区别 编辑:程序博客网 时间:2024/04/30 02:53
      算法是解决某特定问题的一组有穷规则的集合。

       算法设计的先驱者唐纳德.E.克努特(Donald E.Knuth)对算法的特征作了如下的描述:

     (1)有限性。算法在执行有限步之后必须终止。

     (2)确定性。算法的每一步骤都有精确的定义,要执行的每个动作都是清晰的、无歧义的。

     (3)输入。一个算法有0个或多个输入,它是由外部提供的,作为算法开始执行前的初始值或初始状态。算法的输入是从特定的对象集合(可以是类、数组、链表等)中抽取的

     (4)输出。一个算法有一个或多个输出,这些输出与输入有着特定的关系,实际上是输入的某种函数。不同取值的输入,产生不同结果的输出。

     (5)能行性。算法的可行性指的是算法中有待实现的算法都是基本的算法,原则上可以由人们用纸和笔,在有限时间内精确地完成。

        必须注意到,在实际应用中,有限性的限制是不够的。一个实用的算法,不仅要求步骤有限,同时也要求运行这些步骤所花费的时间是人可以接受的。如果一个算法需要执行数以百亿亿计的运算步骤,从理论上说,它是有限的,最终可以结束。但是,以当代计算机每秒数亿次的运算速度,也必须运行数百年以上的时间。这是人们无法接受的,因而是不实用的算法。同时也应该注意到上述的确定性,指的是算法要执行的每个动作都是确定的,并非指算法的执行结果是确定的。大多数算法不管在什么时候运行同一个实例,所得结果都一样,这种算法称为确定性算法;有些算法在不同的时间运行同一个实例,可能会得出不同的结果,这种算法称为不确定的算法或随机算法

       算法设计的整个过程,可以包含:

  • 对问题需求的说明
  • 数学模型的拟制
  • 算法的详细设计
  • 算法的正确性验证
  • 算法的实现
  • 算法分析
  • 程序测试和文档资料的编制


  

  

0 0