分治算法
思想:
分治算法的基本思想是將一個規模為N的問題分解為K個規模較小的子問題,這些子問題相互獨立且與原問題性質相同。求出子問題的解,就可得到原問題的解。
分治法應用場景:
運用分治策略解決的問題一般來說具有以下特點:
1、原問題可以分解為多個子問題
這些子問題與原問題相比,只是問題的規模有所降低,其結構和求解方法與原問題相同或相似。
2、原問題在分解過程中,遞歸地求解子問題
由於遞歸都必須有一個終止條件,因此, 當分解后的子問題規模足夠小時,應能夠直接求解。
3、在求解並得到各個子問題的解后
應能夠采用某種方式、方法合並或構造出原問題的解。
不難發現,在分治策略中,由於子問題與原問題在結構和解法上的相似性,用分治方法解決的問題,大都采用了遞歸的形式。在各種排序方法中,如 歸並排序、堆排序、快速排序等,都存在有分治的思想。
1、原問題可以分解為多個子問題
這些子問題與原問題相比,只是問題的規模有所降低,其結構和求解方法與原問題相同或相似。
2、原問題在分解過程中,遞歸地求解子問題
由於遞歸都必須有一個終止條件,因此, 當分解后的子問題規模足夠小時,應能夠直接求解。
3、在求解並得到各個子問題的解后
應能夠采用某種方式、方法合並或構造出原問題的解。
不難發現,在分治策略中,由於子問題與原問題在結構和解法上的相似性,用分治方法解決的問題,大都采用了遞歸的形式。在各種排序方法中,如 歸並排序、堆排序、快速排序等,都存在有分治的思想。
分治法解題的一般步驟:
(1)
分解,將要解決的問題划分成若干規模較小的同類問題;
(2) 求解,當子問題划分得足夠小時,用較簡單的方法解決;
(3) 合並,按原問題的要求,將子問題的解逐層合並構成原問題的解。
(2) 求解,當子問題划分得足夠小時,用較簡單的方法解決;
(3) 合並,按原問題的要求,將子問題的解逐層合並構成原問題的解。