算法可以用自然语言描述。算法可以有三种不同的描述:自然语言,程序框图,程序语言。算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。
也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。
形式化算法的概念部分源自尝试解决希尔伯特提出的判定问题,并在其后尝试定义有效计算性或者有效方法中成形。这些尝试包括库尔特・哥德尔、Jacques Herbrand和斯蒂芬・科尔・克莱尼分别于1930年、1934年和1935年提出的递归函数,阿隆佐・邱奇于1936年提出的λ演算,1936年Emil Leon Post的Formulation 1和艾伦・图灵1937年提出的图灵机。即使在当前,依然常有直觉想法难以定义为形式化算法的情况。