算法 Algorithm

算法是解题方案的准确而完整的描述,在数学和计算机科学中可以被视为具体计算步骤的一个序列,算法中的指令描述是完整的计算过程,即运行时能从一个初始状态和初始输入开始,经过一系列有限而清晰定义的状态,最终产生输出并停止于一个终态。

简单来说,所谓算法(algorithm) 就是定义良好的计算过程,它取一个或一组值作为输入,并产生出一个或一组值作为输出。亦即, 算法就是一系列的计算步骤,用来将输人数据转换成输出结果。

我们还可以将算法看作是一种工具,用来解决一个具有良好规格说明的计算问题。有关该问题的表述可以用通用的语言,来规定所需的输人/输出关系。与之对应的算法则描述了一个特定的计算过程,用于实现这一输人/输出关系。

算法特征

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

  • 有穷性:算法的有穷性是指算法必须能在执行有限个步骤之后终止;
  • 确切性:算法的每一步骤必须有确切的定义;
  • 输入项:一个算法有 0 个或多个输入,以刻画运算对象的初始情况,所谓 0 个输入是指算法本身定出了初始条件;
  • 输出项:一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的;
  • 可行性:算法中执行的任何计算步骤都是可以被分解为基本的可执行的操作步,即每个计算步都可以在有限时间内完成。

算法分类

算法可以宏泛的分为三类

  • 有限确定性算法:这类算法在有限的一段时间内终止。
  • 有限非确定算法:这类算法在有限的时间内终止。
  • 无限算法:由于没有定义终止定义条件,或定义的条件无法由输入的数据满足而不终止运行的算法。

机器学习算法方向

  • 回归算法
  • 分类算法
  • 聚类算法