如何区分算法和方法?为什么我们不把牛顿法或福特-福尔克森方法称为算法?好的算法具有哪些属性?什么样的方法可以被称为算法?
算法会在有限步骤内终止。
一个具有算法所有特征但可能缺乏有限性的过程可称为计算方法。欧几里得最初提出了求两条线段长度的“最大公测量值”的几何构造和数字的最大公因数的算法;这是一种计算方法,如果给定的长度是不可公度的,则无法终止。——D.Knuth,《TAOCP》第1卷基本概念:算法
牛顿-拉夫森方法不能保证收敛,也不能检测收敛失败。但如果您将该方法包装起来并在有限的epsilon或在有限次数的步骤之后进行收敛检测和终止,则可以得到一个算法。
“方法”和“算法”这两个术语在技术上没有区别,比如“牛顿迭代法”和“牛顿迭代算法”是等价的。
编辑:经过深思熟虑,也许皮特是正确的,算法会终止而方法可能不会(我不能与库特争论)。但是,我认为这不是大多数人仅根据您使用的一个词或另一个词来区分的区别。
我认为,方法是一个比算法更通用的概念,可以是任何东西,例如将数据写入文件。几乎任何由事件或逻辑表达式引起的事情都可以被称为方法。此外,“方法”和“算法”这些词的含义取决于它们所处的上下文。它们可能用来描述相同的事物。
方法类似于战略,算法类似于战术。例如:在战争中,您制定了一项接管国家的战略(方法):首先占领港口,向西陆地推进,然后包围首都等。该战略被分为几个战术阶段(算法):首先,告诉士兵们他们将如何逐步占领港口;然后,告诉士兵们如何向西推进;然后,给士兵们提供确切的步骤来包围城市等。
算法就像一个公式,可以逐步解决任何特定问题,没有任何步骤的歧义,并且必须有一些结束点。方法论是任何解决方案的更一般形式。它提供了一种解决问题的方式,但在算法中,这种方式更精确地制定了解决方案。
我认为这只是因为算法的起源领域不同。如果发明者背景是计算机科学,他可能更喜欢称之为算法。在数学和其他科学领域,他们可能更喜欢称之为方法。