首页 . 理学 . 计算机科学技术 . 计算机科学理论 . 算法

算法

/algorithm/
条目作者许可

许可

最后更新 2022-06-16
浏览 648
最后更新 2022-06-16
浏览 648
0 意见反馈 条目引用

解决给定问题的确定的计算机指令序列,用以系统地描述解决问题的步骤。计算机科学的核心内容之一。

英文名称
algorithm
所属学科
计算机科学技术

直观地说,一个算法(algorithm)就是有限条规则或指令的集合,在给定的输入上应用这些规则,在有限步之内可以得到正确的输出。算法可以是确定的,即每步之后的下一步是唯一确定的;也可以是非确定的,即每步之后的下一步可以有多种选择;也可以是随机的,即按照一定的概率分布选择下一步。算法的每条规则或指令必须是能行的(effective),即可用有限的硬件在有限的时间和空间内实现。算法的严格定义由丘奇-图灵论题(Church-Turing Thesis)来界定,该论题说,一个问题有算法,当且仅当该问题可用处处停机的图灵机来计算,处处停机是指在所有输入上都在有限步之内停机,图灵机计算一个问题是指在所有输入上都给出正确答案。已知图灵机与λ-演算和广义递归函数都是等价的,因此都可以作为算法的数学模型。

算法的英文algorithm源于9世纪数学家花拉子米的名字Al-Khwarizmi,该名字的拉丁文为Algoritmi,后形成英文的algorism,最终变成algorithm一词。西方有记载的最早算法包括古希腊人埃拉托色尼(Eratosthenes)计算素数的筛法和欧几里得(Euclid)求最大公约数的辗转相除法等。近代对于算法概念的研究起源于希尔伯特第10问题和判定问题(Entscheidungsproblem)的研究。D.希尔伯特在1900年提出希尔伯特第10问题:是否存在机械过程判断整系数多项式方程是否有解?在1928年提出了判定问题:是否存在机械过程判断一阶逻辑公式永真?为了澄清什么叫机械过程,A.丘奇(Church)、K.哥德尔(Godel)、A.M.图灵(Turing)等人在20世纪30年代先后提出了λ-演算、广义递归函数、图灵机等计算模型,最终形成了丘奇-图灵论题,给出了算法的严格数学定义,并最终在20世纪30年代末期和20世纪70年代分别对判定问题和希尔伯特第10问题给出了否定回答。中文的算法一词来源于天文和数学专著《周髀算经》,算法在台湾地区被称为演算法。中国古代数学著作如《周髀算经》、《九章算术》等都含有大量算法,包括高次开方算法、解高次方程算法、辗转相除算法等。重视算法是中国古代数学的一大特征。

算法与计算复杂性密切相关。算法的时间复杂性是算法在输入上的运行步数,空间复杂性是算法所需存储空间的大小。人们在意识到多项式时间算法与指数时间算法的区别之后,把确定型多项式时间算法称为有效算法。能用有效算法解决的问题类记作多项式时间P类。另有一类问题,可用非确定型多项式时间算法解决,把这类问题记作非确定多项式时间NP类。NP类与P类是否相等的问题,就是P与NP问题,这是计算机科学和当代数学的核心问题之一,也是整个科学的核心问题之一。

从不同的角度出发,可以把算法划分为不同的大类,例如串行算法、并行算法、分布式算法在线算法、精确算法、近似算法参数算法、启发式算法、随机算法量子算法组合算法、代数算法、计算几何算法、推荐算法、拍卖算法,等等。

相关条目

阅读历史

    意见反馈

    提 交

    感谢您的反馈

    我们会尽快处理您的反馈!
    您可以进入个人中心的反馈栏目查看反馈详情。
    谢谢!