算法 的 基础 了解

算法 的 基础 了解

算法是程序计算机设计的基本概念。

1. 来源

algorithm(算法)这个词非常有趣,乍一看,仿佛有人想写 logarithm (对数),但是前面 4 个字母的次序弄乱了。早期的语言学家猜测,它的源自 algrios(费力的)+ arithmos(数学)的组合。还有其他说法。最终,数学史研究者找到了 algorithm 这个词的真正的来源:它出自波斯知名教科书作者的名字:略 (约公元825年),其字面意义是 “穆罕默德,阿卜杜拉之父,摩西之子,花刺子模之居民”。中亚地区的咸海在古代称为花刺子模糊,而花刺子模地区位于咸海的正南方的埃姆河盆地。这位花拉子米写就了著名的阿拉伯文教科书 略 (还原和相等的规则)。该书系统研究了线性方程和二次方程的求解,由书名又衍生出另一词 algebra (代数)。

2. 定义

algorithm 一词的形式和含义逐渐变得面目全非。正如《牛津英语词典》(Oxford English Dictionary)的解释:“(这个词)经过伪词源学多次附会曲解,如新近的词汇 algorithm (算法),有意同 arithmetic (算术)的希腊词根相混淆。” 鉴于人们已经忘记了原词的出处,从algorism (十进制计算法)到 algorithm (算法)的变化就不难理解了。一本早年出版的德国《数学大全词典》给出了 Algorithmus (算法)的定义:“该词结合了加、减、乘、除四则运算的概念。” 那时,拉丁语词组 algorithmus infinitesimalis (无穷小量的算法)用于表示戈特弗里德·莱布尼茨所建立的 “用无穷小量计算的方法”。

3. 特征

到了 1950 年,算法一词最常使人联想到欧几里得算法(辗转相除法),这是一种求解两个正整数的最大因数的过程,出自欧几里得《几何原本》(Elements)第 7 卷的命题 1 和命题 2。(辗转相除法的展示链接:https://blog.csdn.net/YKenan/article/details/89058233
由欧几里得算法得知,一个算法不仅仅是一组数量有限的规则,给出求解特定一类问题的一系列操作步骤,除此之外,它还具备如下 5 个重要特征:

  1. 有限性(有穷性)。算法必须在执行有限步之后终止。一个过程如果具备算法除有限性外的全部特征,那么可以称为计算方法。欧几里得当年介绍了求两个最大公因数的算法,而且也给出了求两条线段长度的 “最大公测度” 的非常相似的几何构造。如果两条线段长度是不可以同约的,那么这就是一个不会终止的计算方法。不终止的计算方法的另一个例子是反应式进程,这种进程不断与环境交互作用。
  2. 确定性。算法的每一个步骤都是精确定义,对于每种情况要执行的操作必须给出严格而无歧义的说明。自然语言说明,理解上会有歧义,计算机无法识别,故可以进行形式化定义(程序设计语言或者计算机语言)。用计算机语言表示的计算方法称为程序。
  3. 输入。一个算法具有 0 个或者多个输入(input):算法开始前赋给它的初始量,或者在算法程序中动态赋给它的量。这样的输入取自特定的集合。
  4. 输出。一个算法具有 1 个或者多个输出(output):与输入有着某种指定关系的量。
  5. 可行性(有效性)。通常还要求在下述意义下是可行的:它的所有操作必须足够基本,原则上人们可以用笔和纸子在有限时间没准确地执行。

4. 分析

在实践中,人们不仅需要各种算法,而且还要这些算法在广义上美学意义下是好的。好算法的一个标准是算法的执行时间,这个可以用每一步执行的次数来表示。其他标准还包括算法对于不同类型计算机的适应性,算法本身的简单和优雅,等等。
经常会遇到同一个问题有多种算法,因此需要判别哪个算法是最佳的。这种状况把我们引向了算法分析(algorithmic analysis)这个极为有趣且极为重要的领域:给定一个算法,我们要确定它的性能特征。
为了巩固上面对算法的理论的建立,有一种方法,把数学的集合论作为算法概念的坚实基础。我们把一种计算方法形式的定义为一个四元组(Q, I, Ω, f),其中 Q 是包含子集 I 和 Ω 的集合,f 是从 Q 映射到自身的函数。此外,Ω 在 f 下应保持点点不动;也就是说,对于 Ω 中的所有元素 q,f(q) 应当等于 q。四个量 Q, I, Ω, f 分别用来表示计算状态、输入、输出和计算规则。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值