一、算法在计算机中的作用

算法在计算机中的作用

算法

算法的定义

非形式的说,算法 就是任何 良定义 的计算过程,该过程取某个值或值的集合作为 输入 并产生某个值或值的集合作为输出。这样算法就是把 输入 转化为输出的计算步骤的一个 序列

我们也可以把算法看成是用于求解良说明的计算问题的工具。一般来说,问题陈述说明了期望的 输入/输出关系。算法则是描述一个特定的计算过程来实在输入/输出关系

例如,我们可能需要把一个数列排列成非递减序。实际上,这个问题经常出现,并且为引入许多标准的设计技术和分析工具提供了足够的理由。下面是我们关于排序问题的形式定义。
输入:n个数的一个序列<a1,a2, ... an>。
输出:输出序列的一个排序,满足 a1' <= a2' <=...<= an'。
例如,给定输入的序列<1, 3, 2, 1, 4>,排序算法将返回序列<1, 1, 2, 3, 4>作为输出。这样输入的序列称为排序问题的一个实例(instance)。一般来说,问题实例由计算该问题解所 必须 (满足问题陈述中强加的各种约束) 的输入组成。

算法的特征

  1. 输入:一个算法必须有零个或以上输入量。
  2. 输出:一个算法应有一个或以上输出量,输出量是算法计算的结果。
  3. 明确性:算法的描述必须无歧义,以保证算法的实际执行结果是精确地匹配要求或期望,通常要求实际运行结果是确定的。
  4. 有限性:依据图灵的定义,一个算法是能够被任何图灵完全系统模拟的一串运算,而图灵机只有有限个状态、有限个输入符号和有限个转移函数(指令)。而一些定义更规定算法必须在有限个步骤内完成任务。
  5. 有效性:又称可行性。能够实现,算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现。

算法的基本要素

算法的核心是创建问题抽象的模型和明确求解目标,之后可以根据具体的问题选择不同的模式和方法完成算法的设计。

常用设计模式

完全遍历法和不完全遍历法:在问题的解是有限离散解空间,且可以验证正确性和最优性时,最简单的算法就是把解空间的所有元素完全遍历一遍,逐个检测元素是否是我们要的解。这是最直接的算法,实现往往最简单。但是当解空间特别庞大时,这种算法很可能导致工程上无法承受的计算量。这时候可以利用不完全遍历方法——例如各种搜索法和规划法——来减少计算量。

分治法:把一个问题分割成互相独立的多个部分分别求解的思路。这种求解思路带来的好处之一是便于进行并行计算。

动态规划法:当问题的整体最优解就是由局部最优解组成的时候,经常采用的一种方法。

贪心算法:常见的近似求解思路。当问题的整体最优解不是(或无法证明是)由局部最优解组成,且对解的最优性没有要求的时候,可以采用的一种方法。

线性规划法:在数学中,线性规划(Linear Programming,简称LP)特指目标函数和约束条件皆为线性的最优化问题。

简并法:把一个问题通过逻辑或数学推理,简化成与之等价或者近似的、相对简单的模型,进而求解的方法。

常用实现方法

递归方法迭代方法

顺序计算、并行计算和分布式计算:顺序计算就是把形式化算法用编程语言进行单线程序列化后执行。

确定性算法和非确定性算法

精确求解和近似求解

参考资料

  1. 维基百科-算法
  2. 《算法导论·第三版》(第一章节)
posted @ 2019-06-26 11:42  余农场主  阅读(1895)  评论(0)    收藏  举报