算法的定义
来源:互联网 发布:淘宝流量和访客的区别 编辑:程序博客网 时间:2024/04/30 02:53
算法是解决某特定问题的一组有穷规则的集合。
算法设计的先驱者唐纳德.E.克努特(Donald E.Knuth)对算法的特征作了如下的描述:
(1)有限性。算法在执行有限步之后必须终止。
(2)确定性。算法的每一步骤都有精确的定义,要执行的每个动作都是清晰的、无歧义的。
(3)输入。一个算法有0个或多个输入,它是由外部提供的,作为算法开始执行前的初始值或初始状态。算法的输入是从特定的对象集合(可以是类、数组、链表等)中抽取的
(4)输出。一个算法有一个或多个输出,这些输出与输入有着特定的关系,实际上是输入的某种函数。不同取值的输入,产生不同结果的输出。
(5)能行性。算法的可行性指的是算法中有待实现的算法都是基本的算法,原则上可以由人们用纸和笔,在有限时间内精确地完成。
必须注意到,在实际应用中,有限性的限制是不够的。一个实用的算法,不仅要求步骤有限,同时也要求运行这些步骤所花费的时间是人可以接受的。如果一个算法需要执行数以百亿亿计的运算步骤,从理论上说,它是有限的,最终可以结束。但是,以当代计算机每秒数亿次的运算速度,也必须运行数百年以上的时间。这是人们无法接受的,因而是不实用的算法。同时也应该注意到上述的确定性,指的是算法要执行的每个动作都是确定的,并非指算法的执行结果是确定的。大多数算法不管在什么时候运行同一个实例,所得结果都一样,这种算法称为确定性算法;有些算法在不同的时间运行同一个实例,可能会得出不同的结果,这种算法称为不确定的算法或随机算法。
算法设计的整个过程,可以包含:
- 对问题需求的说明
- 数学模型的拟制
- 算法的详细设计
- 算法的正确性验证
- 算法的实现
- 算法分析
- 程序测试和文档资料的编制
0 0
- 算法的定义
- 算法的定义
- 算法的定义
- 退避算法的定义
- 算法的定义
- 算法的定义
- 各种算法的定义
- 算法的定义及算法的复杂度
- java-算法的基本定义
- 算法的数学定义的疑惑
- 【算法导论】18.1:B树的定义
- 堆(heap)的定义及其算法分析
- 栈的数据结构定义及算法
- 队列的数据结构定义及算法
- 堆(heap)的定义及其算法分析
- 使用 宏定义 实现的高级算法
- 灰度共生矩阵的定义以及算法
- 1.数据结构和算法的一些定义
- iOS 控制器View的生命周期及相关函数
- 43,指针函数具有良好的扩展性
- 解决Cannot change version of project facet Dynamic web module to 3.0
- pyqt py文件中引用多个界面
- 分布式哈希表(DHT,Distributed Hash Table
- 算法的定义
- 数据库分库分表(sharding)系列(二) 全局主键生成策略
- Java并发编程系列之三:重排序与顺序一致性
- 什么是web框架
- 决定配置完整的python ubuntu14.04 python-dev distribute
- 312 Burst Balloons
- spring初始化
- 计算机经典书籍汇总
- Android中Shape的使用范例