Algorithm(算法

来源:互联网 发布:sd卡损坏如何恢复数据 编辑:程序博客网 时间:2024/06/05 07:25
作者:starfish starfish@vip.sina.com
算法是在有限步骤内求解某一问题所使用的一组定义明确的规则。通俗点说,就是计算机解题的过程。在这个过程中,无论是形成解题思路还是编写程序,都是在实施某种算法。前者是推理实现的算法,后者是操作实现的算法。

一个算法应该具有以下五个重要的特征:

有穷性: 一个算法必须保证执行有限步之后结束;
确切性: 算法的每一步骤必须有确切的定义;
输入:一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定除了初始条件;
输出:一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的;
可行性: 算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。
 

Did you know Algorithm 一词的由来

Algorithm(算法)一词本身就十分有趣。初看起来,这个词好像是某人打算要写“Logarithm”(对数)一词但却把头四个字母写的前后颠倒了。这个词一直到1957年之前在Webster's New World Dictionary(《韦氏新世界词典》)中还未出现,我们只能找到带有它的古代涵义的较老形式的“Algorism”(算术),指的是用阿拉伯数字进行算术运算的过程。在中世纪时,珠算家用算盘进行计算,而算术家用算术进行计算。中世纪之后,对这个词的起源已经拿不准了,早期的语言学家试图推断它的来历,认为它是从把algiros(费力的)+arithmos(数字)组合起来派生而成的,但另一些人则不同意这种说法,认为这个词是从“喀斯迪尔国王Algor”派生而来的。最后,数学史学家发现了algorism(算术)一词的真实起源:它来源于著名的Persian Textbook(《波斯教科书》)的作者的名字Abu Ja'far Mohammed ibn M?sa al-Khowarizm (约公元前825年)——从字面上看,这个名字的意思是“Ja'far 的父亲,Mohammed 和 M?sa 的儿子,Khowarizm 的本地人”。Khowarizm 是前苏联XИBA(基发) 的小城镇 。Al-Khowarizm 写了著名的书Kitab al jabr w'al-muqabala (《复原和化简的规则》);另一个词,“algebra”(代数),是从他的书的标题引出来的,尽管这本书实际上根本不是讲代数的。

逐渐地,“algorism”的形式和意义就变得面目全非了。如牛津英语字典所说明的,这个词是由于同arithmetic(算术)相混淆而形成的错拼词。由algorism又变成algorithm。一本早期的德文数学词典 Vollstandiges Mathematisches Lexicon (《数学大全辞典》) ,给出了Algorithmus (算法)一词的如下定义:“在这个名称之下,组合了四种类型的算术计算的概念,即加法、乘法、减法、除法”。拉顶短语algorithmus infinitesimalis (无限小方法) ,在当时就用来表示Leibnitz(莱布尼兹)所发明的以无限小量进行计算的微积分方法。

1950年左右,algorithm一词经常地同欧几里德算法(Euclid's algorithm)联系在一起。这个算法就是在欧几里德的《几何原本》(Euclid's Elements ,第VII卷,命题i和ii)中所阐述的求两个数的最大公约数的过程(即辗转相除法)。

常用算法


排序
内排序
排序问题的计算复杂性
比较排序算法
冒泡排序
选择排序
插入排序
快序排序
合并排序
Shell排序
堆排序
线性时间排序算法
计数排序
基数排序
桶排序
外排序
其他资料
选择
查找
串匹配
有关数论的算法
数论的基本知识
最大公约数
模运算
求解模线性方程
中国余数定理
元素的幂
RSA公开密钥加密系统
素数的测试
整数的因子分解
计算几何学
搜索算法
图论算法
图的遍历
广度优先搜索
深度优先搜索
图的连通性
无圈有向图和拓扑排序
有向图的强连通分支
无向图的割点和桥
最小生成树
Kruskal算法和Prim算法
组合数学算法
最优化问题
近似算法 

 
原创粉丝点击