2009-05-18 301 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

方法類似於策略,算法類似於策略。一個例子:在戰爭中,你制定了一個接管一個國家的戰略(方法):先取港口,再往陸上前進,然後圍繞資本等等。這個戰略分爲幾個戰術階段(算法):首先,一步一步告訴士兵他們將如何去港口;然後,告訴士兵他們必須如何向西進發;那麼,一個與士兵圍繞城市的確切步驟,等等。

相關問題