2009-05-18 387 views
18

如何区分算法和方法?为什么我们不称牛顿法或福特 - 福克森法算法?什么是一个好算法的特性,以及什么是一种算法的方法?算法和方法有什么区别

+0

你问在(软件)专利的背景下? – zvrba 2009-05-18 18:33:26

+0

不,只是一个普遍的问题。但是,您是否也可以在专利的背景下回答它? – unj2 2009-05-18 18:36:18

回答

-1

关于福特Faulkerson方法,CLRS称之为方法而不是算法,因为“它包含几个实施具有不同的运行时间” [PP 651第二的Editon]

7

术语“方法”与“牛顿法”和“算法”没有技术上的区别。

编辑:在反思,也许皮特是正确的,算法终止和方法可能不会(我是谁与克努特争论?)但是,我不认为这是一个区别,大多数人只会根据您的使用一个字或另一个字。

+0

您是否建议我们可以互换使用这些术语。我可以将任何方法称为算法? – unj2 2009-05-18 18:15:33

+0

我相信你可以将这些数学方法中的任何一种称为“算法”,并且在技术上是正确的,并且被数学家理解。 – mquander 2009-05-18 18:31:50

+2

这些术语对某些人来说可能是可以互换的 - 使用*算法*来引用一个非有限的步骤序列,并且他们不会注意或关心。不过,其他*将会关心,所以我建议*不要*交替使用这些术语。将算法视为方法的一个子集是比较安全的。这样,你就可以有效地与每个人进行交流,而不仅仅是那些没有任何区别的人。 – 2009-10-22 05:42:23

1

我认为这只是因为算法的原点域。如果发明人在计算机科学背景下,他可能更喜欢被称为算法。在数学和其他科学领域,他们可能更喜欢被称为方法。

1

在上下文中,您陈述了(牛顿的方法等),算法和方法之间没有本质区别。两者都提供解决问题的分步指导。在维基百科有关牛顿方法的文章中,它指出:“该算法是Householder方法中的第一个,由哈雷方法成功”。最好的界限是模糊的。

在计算机科学中,算法仍然是解决问题的一步一步方式 - 一个与实现无关的步骤。一种方法通常是指与执行某项任务的类或对象相关联的一段代码 - 它可以实现许多算法。

3

在我看来,一种方法是比算法更普遍的概念,可以是或多或少的东西,例如,将数据写入文件。几乎所有因事件或某种逻辑表达而发生的事情。而且,“方法”和“算法”这些词的含义可以根据它们在什么情况下使用而变化。他们可能被用来描述同样的事情。

+2

+1:算法必须是“有限”,“确定”和“有效”。牛顿的方法符合所有这些;所以这些术语是可以互换的。然而,计算我的美国所得税似乎并不明确 - 有些术语似乎没有明确定义 - 所以它不能成为一个合适的算法。 – 2009-05-18 18:14:23

+0

我不同意算法必须有效。我可以构建一个自己的算法,其性能非常差。除非你说它会变成这种情况下的方法:) – ralphtheninja 2009-05-18 19:41:19

+1

有效并不意味着高效。这意味着这些步骤会朝着最终状态或目标迈进。这意味着算法没有填充无法实现目标的无意义步骤。 – 2009-05-19 02:41:07

3

在一般的程序设计中,算法是任务完成的步骤。据Wikipedia

的算法的指令的有限序列,用于解决一个问题,通常用于计算和数据处理的明确的,一步一步的过程。它在形式上是一种有效的方法,其中用于完成任务的明确指令列表将在给定初始状态时,通过一系列明确的连续状态进行,最终终止于最终状态。从一个州到另一个州的过渡不一定是确定性的;一些称为概率算法的算法结合了随机性。 <

在计算机科学中,方法或函数是面向对象的理念,以编程,其中程序被做出来的,它包含方法/函数来执行特定任务类的一部分。再次,引述Wikipedia

在面向对象的编程中,方法是只用任一个类(称为类方法或静态方法),或与物体(称为实例方法)相关联的子程序。就像过程式编程语言中的过程一样,一个方法通常由一系列执行动作的语句,一组用于自定义这些动作的输入参数以及一些输出值(称为返回值)组成。方法可以提供一种机制来访问(读取和写入)存储在对象或类中的封装数据。<

总之,该算法是由我们做一些事情的步骤,例如在打开一个灯泡:

1)步行切换 2)翻转开关 3)电子流 4)生成的光

方法是我们在类中实际编写动作的地方。

+2

我说的是一种不同的方法。请阅读这个问题。 – unj2 2009-05-18 18:14:21

+0

在CS中,算法是步骤,方法是我们执行操作的方式。所有的数学公式都是算法,因为它们给我们指示如何找到或做些什么 - 即使它们在数学中被称为方法。我们必须在程序中编写方法来实现它们的实现。 – FloppyDisk 2009-05-18 18:20:36

22

算法在有限数量的步骤终止。

除了可能缺乏有限性之外,具有算法所有特性的过程可以称为计算方法。 Euclid最初不仅提供了数字最大公约数的算法,而且还提供了两条线段长度的“最常用测量”非常相似的几何结构;这是一种计算方法,如果给定的长度是不可比较的,它不会终止。 - D.Knuth,TAOCP第1卷,基本概念:算法

牛顿拉夫森方法不保证收敛,不检测收敛失败。如果您将方法用收敛检测和有限数量的步骤中的终止进行封装,您将得到一个算法。

1

算法就像一个公式来解决任何特定问题一步一步,对任何步骤都毫不含糊,并且必须有一些终点。方法论是任何解决方案的更一般形式。它提供了一种如何解决任何问题的方法,但是在算法中,这种方式更精确地针对解决方案。

0

程序可以永远持续下去。 作为一个算法,最终会终止,并将每个步骤精确定义。

1

方法类似于策略,算法类似于策略。一个例子:在战争中,你制定了一个接管一个国家的战略(方法):先取港口,再往陆上前进,然后围绕资本等等。这个战略分为几个战术阶段(算法):首先,一步一步告诉士兵他们将如何去港口;然后,告诉士兵他们必须如何向西进发;那么,一个与士兵围绕城市的确切步骤,等等。

相关问题