如何區分算法和方法?爲什麼我們不稱牛頓法或福特 - 福克森法算法?什麼是一個好算法的特性,以及什麼是一種算法的方法?算法和方法有什麼區別
回答
關於福特Faulkerson方法,CLRS稱之爲方法而不是算法,因爲「它包含幾個實施具有不同的運行時間」 [PP 651第二的Editon]
術語「方法」與「牛頓法」和「算法」沒有技術上的區別。
編輯:在反思,也許皮特是正確的,算法終止和方法可能不會(我是誰與克努特爭論?)但是,我不認爲這是一個區別,大多數人只會根據您的使用一個字或另一個字。
您是否建議我們可以互換使用這些術語。我可以將任何方法稱爲算法? – unj2 2009-05-18 18:15:33
我相信你可以將這些數學方法中的任何一種稱爲「算法」,並且在技術上是正確的,並且被數學家理解。 – mquander 2009-05-18 18:31:50
這些術語對某些人來說可能是可以互換的 - 使用*算法*來引用一個非有限的步驟序列,並且他們不會注意或關心。不過,其他*將會關心,所以我建議*不要*交替使用這些術語。將算法視爲方法的一個子集是比較安全的。這樣,你就可以有效地與每個人進行交流,而不僅僅是那些沒有任何區別的人。 – 2009-10-22 05:42:23
我認爲這只是因爲算法的原點域。如果發明人在計算機科學背景下,他可能更喜歡被稱爲算法。在數學和其他科學領域,他們可能更喜歡被稱爲方法。
在上下文中,您陳述了(牛頓的方法等),算法和方法之間沒有本質區別。兩者都提供解決問題的分步指導。在維基百科有關牛頓方法的文章中,它指出:「該算法是Householder方法中的第一個,由哈雷方法成功」。最好的界限是模糊的。
在計算機科學中,算法仍然是解決問題的一步一步方式 - 一個與實現無關的步驟。一種方法通常是指與執行某項任務的類或對象相關聯的一段代碼 - 它可以實現許多算法。
在我看來,一種方法是比算法更普遍的概念,可以是或多或少的東西,例如,將數據寫入文件。幾乎所有因事件或某種邏輯表達而發生的事情。而且,「方法」和「算法」這些詞的含義可以根據它們在什麼情況下使用而變化。他們可能被用來描述同樣的事情。
+1:算法必須是「有限」,「確定」和「有效」。牛頓的方法符合所有這些;所以這些術語是可以互換的。然而,計算我的美國所得稅似乎並不明確 - 有些術語似乎沒有明確定義 - 所以它不能成爲一個合適的算法。 – 2009-05-18 18:14:23
我不同意算法必須有效。我可以構建一個自己的算法,其性能非常差。除非你說它會變成這種情況下的方法:) – ralphtheninja 2009-05-18 19:41:19
有效並不意味着高效。這意味着這些步驟會朝着最終狀態或目標邁進。這意味着算法沒有填充無法實現目標的無意義步驟。 – 2009-05-19 02:41:07
在一般的程序設計中,算法是任務完成的步驟。據Wikipedia,
的算法的指令的有限序列,用於解決一個問題,通常用於計算和數據處理的明確的,一步一步的過程。它在形式上是一種有效的方法,其中用於完成任務的明確指令列表將在給定初始狀態時,通過一系列明確的連續狀態進行,最終終止於最終狀態。從一個州到另一個州的過渡不一定是確定性的;一些稱爲概率算法的算法結合了隨機性。 <
在計算機科學中,方法或函數是面向對象的理念,以編程,其中程序被做出來的,它包含方法/函數來執行特定任務類的一部分。再次,引述Wikipedia
在面向對象的編程中,方法是隻用任一個類(稱爲類方法或靜態方法),或與物體(稱爲實例方法)相關聯的子程序。就像過程式編程語言中的過程一樣,一個方法通常由一系列執行動作的語句,一組用於自定義這些動作的輸入參數以及一些輸出值(稱爲返回值)組成。方法可以提供一種機制來訪問(讀取和寫入)存儲在對象或類中的封裝數據。<
總之,該算法是由我們做一些事情的步驟,例如在打開一個燈泡:
1)步行切換 2)翻轉開關 3)電子流 4)生成的光
方法是我們在類中實際編寫動作的地方。
我說的是一種不同的方法。請閱讀這個問題。 – unj2 2009-05-18 18:14:21
在CS中,算法是步驟,方法是我們執行操作的方式。所有的數學公式都是算法,因爲它們給我們指示如何找到或做些什麼 - 即使它們在數學中被稱爲方法。我們必須在程序中編寫方法來實現它們的實現。 – FloppyDisk 2009-05-18 18:20:36
算法在有限數量的步驟終止。
除了可能缺乏有限性之外,具有算法所有特性的過程可以稱爲計算方法。 Euclid最初不僅提供了數字最大公約數的算法,而且還提供了兩條線段長度的「最常用測量」非常相似的幾何結構;這是一種計算方法,如果給定的長度是不可比較的,它不會終止。 - D.Knuth,TAOCP第1卷,基本概念:算法
牛頓拉夫森方法不保證收斂,不檢測收斂失敗。如果您將方法用收斂檢測和有限數量的步驟中的終止進行封裝,您將得到一個算法。
算法就像一個公式來解決任何特定問題一步一步,對任何步驟都毫不含糊,並且必須有一些終點。方法論是任何解決方案的更一般形式。它提供了一種如何解決任何問題的方法,但是在算法中,這種方式更精確地針對解決方案。
程序可以永遠持續下去。 作爲一個算法,最終會終止,並將每個步驟精確定義。
方法類似於策略,算法類似於策略。一個例子:在戰爭中,你制定了一個接管一個國家的戰略(方法):先取港口,再往陸上前進,然後圍繞資本等等。這個戰略分爲幾個戰術階段(算法):首先,一步一步告訴士兵他們將如何去港口;然後,告訴士兵他們必須如何向西進發;那麼,一個與士兵圍繞城市的確切步驟,等等。
- 1. GET和POST方法有什麼區別?
- 2. UrlHelper.Route和UrlHelper.Link方法有什麼區別?
- 3. 方法和協議有什麼區別
- 4. 方法`toHaveBeenCalled()`和`andCalledThrough()`有什麼區別?
- 5. nibNameOrNil和ViewDidLoad方法有什麼區別?
- 6. browser.sleep()和browser.wait()方法有什麼區別?
- 7. Forward-backward算法和Viterbi算法有什麼區別?
- 8. 遺傳算法和細胞遺傳算法有什麼區別
- 9. 局部算法和貪婪算法有什麼區別?
- 10. Viterbi CYK和Probabilistic CYK算法有什麼區別,有什麼區別嗎?
- 11. 匹配方法和=〜運算符有什麼區別?
- 12. 靜態方法和非靜態方法有什麼區別?
- 13. bootstrap方法和run方法在角度上有什麼區別?
- 14. UITableView方法和等效的UITableViewDatasource方法有什麼區別?
- 15. 本練習中substr方法和slice方法有什麼區別?
- 16. Python中的string方法和str方法有什麼區別?
- 17. 這兩種方法有什麼區別
- 18. url_for方法有什麼區別?
- 19. 各種HTTP方法有什麼區別?
- 20. 這些np.linalg.norm方法有什麼區別
- 21. OpenCV中kmeans和cvKMeans2算法有什麼區別?
- 22. 交叉熵和遺傳算法有什麼區別?
- 23. OpenCV:feature2d和imgproc特徵檢測算法有什麼區別?
- 24. 「中斷合併」和「Nagle算法」有什麼區別?
- 25. React和Preact差異算法在深度上有什麼區別
- 26. 有什麼區別?和T在類和方法簽名?
- 27. 調用javascript方法的兩種方法有什麼區別
- 28. 這兩種做TypeScript方法的方法有什麼區別?
- 29. 用於應用內結算的getBuyIntent()和launchPurchaseFlow()方法有什麼區別?
- 30. Ruby的dup和clone方法有什麼區別?
你問在(軟件)專利的背景下? – zvrba 2009-05-18 18:33:26
不,只是一個普遍的問題。但是,您是否也可以在專利的背景下回答它? – unj2 2009-05-18 18:36:18