分治演算法思想

2022-06-07 10:57:06 字數 976 閱讀 3937

1. 分解:

對這k個子問題分別求解。如果子問題的規模仍然不夠小,則再劃分為k個子問題,如此遞迴的進行下去,直到問題規模足夠小,很容易求出其解為止。

2. 合併:

將求出的小規模的問題的解合併為乙個更大規模的問題的解,自底向上逐步求出原來問題的解。

3. 分治演算法的使用條件:

分治法所能解決的問題一般具有以下幾個特徵:

說明:因為問題的計算複雜性一般是隨著問題規模的增加而增加,因此大部分問題滿足這個特徵。

這條特徵是應用分治法的前提,它也是大多數問題可以滿足的,此特徵反映了遞迴思想的應用能否利用分治法完全取決於問題是否具有這條特徵,

如果具備了前兩條特徵,而不具備第三條特徵,則可以考慮貪心演算法或動態規劃。這條特徵涉及到分治法的效率,如果各子問題是不獨立的,

則分治法要做許多不必要的工作,重複地解公共的子問題,此時雖然也可用分治法,但一般用動態規劃較好。

4. 分治演算法的基本步驟:

說明:人們從大量實踐中發現,在用分治法設計演算法時,最好使子問題的規模大致相同。即將乙個問題分成大小相等的k個子問題的處理方法是行之有效的。

這種使子問題規模大致相等的做法是出自一種平衡(balancing)子問題的思想,它幾乎總是比子問題規模不等的做法要好。

演算法思想 分治演算法

分而治之 大問題能夠拆成相似的小問題,記住這些小問題需要具有相似性。而後將小問題的每個解合成為大問題的解。所以說大問題如何拆,小問題如何合併才是這個演算法最主要的乙個思想。實際上很多演算法如貪心演算法,動態規劃等等都是要求把大問題拆成小問題。而分治演算法的重要一點就是要適用於能夠重新把小問題的解合併...

分治演算法思想介紹

一,介紹 分治演算法主要包含兩個步驟 分 治。分,就是遞迴地將原問題分解成小問題 治則是 在解決了各個小問題之後 各個擊破之後 合併小問題的解,從而得到整個問題的解 二,分治遞迴表示式 分治演算法一般都可以寫出乙個遞迴表示式 比如經典的歸併排序的遞迴表示式 t n 2t n 2 o n t n 代表...

演算法思想05 分治思想

一 思想 有時候我們處理乙個複雜的問題,可能此問題求解步驟非常雜,也可能是資料非常多,導致我們當時很難求出或者無法求出,古語有云 步步為營,各個擊破,這個思想在演算法中稱為分治思想,就是我們可以將該問題分解成若干個子問題,然後我們逐一解決子問題,最後將子問題 的答案組合成整個問題的答案。二 條件 當...