1. 程式人生 > >算法常用設計模式(子博客)

算法常用設計模式(子博客)

最好 利用 步驟 ron 進行 加速 刪除 計算機 分析

1. 枚舉法

  根據具體問題枚舉出各種可能,從中選出有用信息或者問題的解。

  這種方法利用計算機的速度優勢,在解決簡單問題時十分有效。

2. 貪心法

  如前所述,根據問題的信息盡可能做出部分的解,並基於部分解逐步擴充得到完整的解。

  在解決復雜問題時,這種做法未必能得到最好的解。

3. 分治法

  把復雜問題分解為相對簡單的子問題,分別求解,最後通過組合起子問題的解的方式得到原問題的解。

4. 回溯法(搜索法)

   專指通過探索的方式求解。

  如果問題很復雜,沒有清晰的求解路徑,可能就需要分步驟進行,而每一步驟又可能又多種選擇。

  在這種情況下,只能采用試探的方式,根據實際情況選擇一個可能方向。

  當後面的求解步驟無法繼續時,就需要退回到前面的步驟,另行選擇求解路徑,這種動作稱為回溯。

5. 動態規劃方法

  在一些復雜情況下,問題求解很難直截了當地進行,因此需要在前面的步驟中積累信息,在後續步驟中根據

  已知信息,動態選擇已知的最好求解路徑(同時可能進一步積累信息)。

  這種算法模式被稱為動態規劃。

6. 分支限界法

  可以看作搜索方法的一種改良形式。

  如果在搜索過程中可以得到一些信息,確定某些可能的選擇實際上並不真正有用,就可以及早地將其刪除,以縮小可能的求解空間,加速問題求解過程。

說明:

  上述算法設計模式只是人們對經驗的總結。

  這些模式並不相互隔絕也不相互排斥。

  算法分析的主要任務就是弄清算法的資源消耗。

  算法分析的最重要作用是作為評價算法的一種標準。

算法常用設計模式(子博客)