五種常用算法之二:分治算法


分治算法

思想:

分治算法的基本思想是將一個規模為N的問題分解為K個規模較小的子問題,這些子問題相互獨立且與原問題性質相同。求出子問題的解,就可得到原問題的解。


分治法應用場景:

運用分治策略解決的問題一般來說具有以下特點:
1、原問題可以分解為多個子問題
這些子問題與原問題相比,只是問題的規模有所降低,其結構和求解方法與原問題相同或相似。
2、原問題在分解過程中,遞歸地求解子問題
由於遞歸都必須有一個終止條件,因此, 當分解后的子問題規模足夠小時,應能夠直接求解
3、在求解並得到各個子問題的解后
應能夠采用某種方式、方法合並或構造出原問題的解。
不難發現,在分治策略中,由於子問題與原問題在結構和解法上的相似性,用分治方法解決的問題,大都采用了遞歸的形式。在各種排序方法中,如 歸並排序、堆排序、快速排序等,都存在有分治的思想。


分治法解題的一般步驟:

(1) 分解,將要解決的問題划分成若干規模較小的同類問題;
(2) 求解,當子問題划分得足夠小時,用較簡單的方法解決;
(3) 合並,按原問題的要求,將子問題的解逐層合並構成原問題的解。



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM