算法是指完成一个任务所需要的具体步骤和方法。也就是说给定初始状态或输入数据,经过计算机程序的有限次运算,能够得出所要求或期望的终止状态或输出数据。
算法常常含有重复的步骤和一些比较或逻辑判断。如果一个
算法有缺陷,或不适合于某个问题,执行这个
算法将不会解决这个问题。不同的
算法可能用不同的时间、空间或效率来完成同样的任务。一个
算法的优劣可以用空间复
杂度与时间复
杂度来衡量。
算法的历史
“
算法”的中文名称出自周髀算经;而英文名称 Algorithm 来自于9世纪波斯数
学家比阿勒·霍瓦里松的名
字al-Khwarizmi,因为比阿勒·霍瓦里松在数
学上提出了
算法这个概念。“
算法”原为"algorism",意思是阿拉伯数
字的运
算法则,在18世纪演变为"algorithm"。欧几里得
算法被
人们认为是史上
第一个
算法。
第一次编写程序是Ada Byron于1842年为巴贝奇分析机编写求解解伯努利方程的程序,因此Ada Byron被大多数
人认为是世界上
第一位程序员。因为查尔斯·巴贝奇(Charles Babbage)未能完成他的巴贝奇分析机,这个
算法未能在巴贝奇分析机上执行。 因为"well-defined procedure"缺少数
学上精确的定义,19世纪和20世纪早期的数
学家、逻辑
学家在定义
算法上出现了困难。20世纪的英国数
学家图灵提出了著名的图灵论题,并提出一种假想的计算机的抽象模型,这个模型被称为图灵机。图灵机的出现解决了
算法定义的难题,图灵的思想对
算法的发展起到了重要的作用。
算法的特征
输入:一个
算法必须有零个或多个输入量。
输出:一个
算法应有一个或多个输出量,输出量是
算法计算的结果。
确定性:
算法的描述必须无歧义,以保证
算法的执行结果是确定的。
有限性:
算法必须在有限步骤内实现。注:此处“有限”不同于数
学概念的“有限”,天文数
字般的有限对于实际问题并无意义。
有效性:又称可行性。能够实现,
算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现。
形式化
算法 算法是计算机处理信息的本质,因为计算机程序本质上是一个
算法来告诉计算机确切的步骤来执行一个指定的任务,如计算职工的薪
水或打印
学生的成绩单。 一般地,当
算法在处理信息时,会从输入设备或数据的存储地址读取数据,把结果写入输出设备或某个存储地址供以后再调用。