1、定義
分治法的主題思想就是分而治之,也就是說把乙個大原問題變成兩個或者多個小問題解決,最後把小問題的解合併起來就是原問題的解。
分——將原問題分解為多個小問題;
治——將這些小問題逐個解決;
合——將小問題解合併,就得出原問題的解;
2.演算法實現
a、分治法的正規化
①分解問題:把原問題分解為若干個與原問題性質相類似的子問題
②求解子問題:不斷分解子問題直到可方便求出子問題的解為止
③合併子問題的解:合併子問題的解得到原問題的解
b、遞迴式
①divide:把具有n個元素的陣列分解為二個n/2大小的子陣列
②conquer:遞迴地分解子陣列,直到子陣列只包含乙個元素為止
③combine:二二合併已排好序的子陣列使之成為乙個新的排好序的子數 組,重複這樣二二合併的過程直到得到原問題的解
利用遞迴的思想,把問題一分為二,二分為四,直到只有乙個很小的問題為止。再把小問題的解合併,最後得到原問題的解。
遞迴式時間複雜度:
t (n
)=at
(bn)
+d(n
)+c(
n)
t(n)=at(\frac)+d(n)+c(n)
t(n)=a
t(nb
)+d
(n)+
c(n)
3、分治法的適用條件
(1)可以把原問題分解成兩個或者多個小問題。
(2)分解成小問題後求解更加方便。
(3)原問題的解可以由所有小問題的解的合併。
最後說一下,分治法算不上演算法,分治只是乙個思想,很多演算法都會用到這種思想。
五大常用演算法 回溯法
於 回溯演算法實際上乙個類似列舉的搜尋嘗試過程,主要是在搜尋嘗試過程中尋找問題的解,當發現已不滿足求解條件時,就 回溯 返回,嘗試別的路徑。回溯法是一種選優搜尋法,按選優條件向前搜尋,以達到目標。但當探索到某一步時,發現原先選擇並不優或達不到目標,就退回一步重新選擇,這種走不通就退回再走的技術為回溯...
五大基礎演算法 列舉
1 定義 按照問題的要求,一一枚舉所有有可能的解,然後進行判斷,若符合要求則採納這個解,不符合就拋棄。2 演算法實現 第一部分 迴圈部分 利用迴圈把所有有可能的解,一一枚舉出來。需注意不能遺漏任何乙個解,也要避免重複。要考慮如何設計迴圈變數 初值 終值和遞增值。迴圈變數是否參與檢驗。為了提高解題效率...
演算法 五大演算法之分支限界法
分枝界限法是由三棲學者查理德 卡普 richard m.karp 在20世紀60年代發明,成功求解含有65個城市的旅行商問題,創當時的記錄。分枝界限法 把問題的可行解展開如樹的分枝,再經由各個分枝中尋找最佳解。1.基本概念 描述 採用廣度優先產生狀態空間樹的結點,並使用剪枝函式的方法稱為分枝限界法。...