分治法概述
分治法
基本思想:
- 將一個難以直接解決的大問題,分解成一些規模較小的相同子問題,各個子問題相互獨立;遞歸地解決各個子問題,將子問題的解歸并成原問題的解
或: - 把一個復雜的問題分成兩個或更多的相同子問題,再把子問題分成更小的子問題,直到最后各個子問題可以簡單地直接求解,對各個子問題的解進行合并即得原問題的解。
即: 將一個難以直接解決的大問題,分解成一些規模較小的相同問題,以便各個擊破,分而治之。
分治法求解問題的特征:
- 1.問題的規模縮小到一定程度就可以容易地解決。
- 2.問題可以分解為若干個規模較小的相同子問題。
- 3.問題新分解出的各個子問題是相互獨立的,即子問題之間不包含公共的子問題。
求解過程:
- 步驟1:分解
將問題分解為若干個規模較小,相互獨立,與原問題形式相同的子問題。
(最好使子問題的規模大致相同,即將一個問題分為大小相等的k個子問題(通常k=2),這種處理方法行之有效。) - 步驟2:治理
步驟2-1:求解各個子問題(遞歸)
求解各個子問題。若子問題規模較小而容易被解決則直接求解,否則再繼續分解為更小的子問題,直到容易解決為止。
由于采用分治法求解的問題被分解為若干個規模較小的相同子問題,各個子問題的解法與原問題的解法是相同的。所以采取遞歸技術來對各個子問題進行求解。
步驟2-2:合并
將已求得的各個子問題的解合并為原問題的解。
總結
- 上一篇: 银行卡相关功能简要实现
- 下一篇: MATLAB绘制雷达图/蜘蛛图