分治 減治 變治

2021-08-08 00:15:05 字數 1009 閱讀 5513

a. 分治法(divide and conquer)

演算法設計思想:

1. 分解:把問題遞迴分解為兩個以上的子問題(子問題:與原問題性質相同,規模較小);

2. 求解:求解子問題(不再分解)

3. 合併:合併子問題的解,得到原問題的解;

1. 合併排序

2. 快速排序

b. 減治法(decrease and conquer)

演算法設計思想:

1. 減小規模:遞迴減小子問題的規模(乙個子問題)

2. 求解:求解子問題(不再減小規模)

3. 擴充套件:擴充套件子問題的解,獲得原問題的解

與分治法的區別:

分治法:求解多個子問題,合併子問題解

減治法:求解乙個子問題,擴充套件子問題解

減治法的分類:

1. 減常量法:減小常量規模,常為 1(減一法)

2. 減常因子法:減小常因子規模,常為 2(減半法)

3. 減可變規模法:每次減小的規模不同

1. 折半查詢

2. 插入排序

3. 拓撲排序

c. 變治法(transform and conquer)

基於變換的思想,把問題為更簡單、更易求解的問題

變:變換問題

治:求解問題

1. 預排序

2. 堆排序

減治 分治和變治的區別和聯絡

減治 利用了乙個問題給定例項的解和同樣問題較小例項的解之間的某種關係,常用的有n和n 1的關係,有了這種關係我們可以自頂向下地遞迴求解,也可以自底向上地迭代實現,從較小例項開始求解這一角度來看減治也叫增量法。減治法的三種方式 1 減常量 每次迭代總是從例項中減去乙個相同的常量,一般為1。如求an的值...

減治法演算法設計

首先要申明的是減治法思想並不等同於分治法思想,減治法技術利用乙個問題給定例項的解和同樣問題較小例項的解之間的某種關係。一旦建立了這種關係,就可以從頂至下 遞迴 或者從底之上 迭代 地來運用該關係。減治法有3種主要的變種 1 減去乙個常量 2 減去乙個常量因子,大多數問題中常量因子為2 3 減去的規模...

演算法02 分治

分治,就是 分而治之 就是把乙個複雜的問題分成兩個或更多的相同或相似的子問題,直到最後子問題可以簡單的直接求解,原問題的解即子問題的解的合併。分治法常常跟遞迴一起使用,借助遞迴,我們可以方便地將問題分解再將結果合併。分解 將原問題分解為若干個規模較小,相互獨立,與原問題形式相同的子問題 遞迴 若子問...