「經典演算法」的解題技巧:動態規劃、分治、貪婪、回溯、分支限界

我研究了五種主要的演算法:動態規劃是分治法的特例,透過記錄子問題的解來尋求最佳解;分治法則將問題細分並利用遞迴解決;貪婪演算法則是在每一步選擇最佳選項;回溯法通過添加約束來嘗試所有可能性;分支限界法則結合了貪婪與回溯的特性,進行最優選擇並更新條件。

「經典演算法」的解題技巧:動態規劃、分治、貪婪、回溯、分支限界
Photo by Markus Spiske / Unsplash
  1. 動態規劃(Dynamic Programming)
    • 分治法的一種延伸與特例,從子問題開始記錄並持續更新最佳解
  2. 分治法(Divide-and-Conquer)
    • 最適合使用遞迴來實作,將大問題切分成小問題再將小問題的結果合併即答案
  3. 貪婪演算法(Greedy Algorithm)
    • 每當執行區域性的抉擇時,都選擇當下有的選項中最好的一個選項
  4. 回溯法(Backtracking)
    • 窮舉法的延伸,為解答加上一個約束條件
  5. 分支限界法 (Branch-and-Bound)
    • 貪婪演算法和回溯法的延伸,一邊在每次區域選擇選當下最優邊更新最優約束條件