2.2 分治法的基本思想
来源:互联网 发布:mac鼠标滚轮没反应 编辑:程序博客网 时间:2024/05/30 12:30
2.2 分治法的基本思想
分治法的基本思想是将一个规模为n的问题分解为k个规模较小的子问题,这些子问题相互独立且与原问题相同。递归的解这些子问题,然后将各子问题的解合并得到原问题的解。
它的一般的算法设计模式如下:
Divide-and-Conquer(P) 1. if |P|≤n0 2. then return(ADHOC(P)) 3. 将P分解为较小的子问题 P1 ,P2 ,...,Pk 4. for i←1 to k 5. do yi ← Divide-and-Conquer(Pi) △ 递归解决Pi 6. T ← MERGE(y1,y2,...,yk) △ 合并子问题 7. return(T)
其中|P|表示问题P的规模;n0为一阈值,表示当问题P的规模不超过n0时,问题已容易直接解出,不必再继续分解。ADHOC(P)是该分治法中的基本子算法,用于直接解小规模的问题P。因此,当P的规模不超过n0时直接用算法ADHOC(P)求解。算法MERGE(y1,y2,…,yk)是该分治法中的合并子算法,用于将P的子问题P1 ,P2 ,…,Pk的相应的解y1,y2,…,yk合并为P的解。
子问题的划分:人们从大量实践中发现,在用分治法设计算法时,最好使子问题的规模大致相同。换句话说,将一个问题分成大小相等的k个子问题的处理方法是行之有效的。许多问题可以取 k = 2。这种使子问题规模大致相等的做法是出自一种平衡(balancing)子问题的思想,它几乎总是比子问题规模不等的做法要好。
分治范式在每一层递归包括3个步骤:
- 分解 将问题分解成若干个子问题。
- 治理 递归地解决各子问题。不过若子问题的规模足够小,就以直接的方式(不再递归)解决子问题。
合并 将子问题的解合并成原问题的一个解。
递归是分治策略的基础。
0 0
- 2.2 分治法的基本思想
- 分治法的基本思想
- 分治法(Devide and Conquer)的基本思想
- 分治法的基本思想与例子解析
- 基本的分治思想算法运用
- 分治法——基本思想
- 快速排序基于分治法的思想
- 分治思想的应用
- 分治思想的应用
- 分治的思想
- 分治算法基本思想和典型案例
- 分治算法基本思想和典型例题
- 分治的算法设计思想
- 分治思想的应用2
- 二分思想与分治法、排序思想
- 二分思想和分治法
- 回溯法的基本思想
- 最大子数组问题--分治法的思想
- Play1.2.7导入Eclipse
- 【BNU】40719 Arithmetic Progressions【分块+FFT】
- 自己:Play安装说明
- 新浪微博开发之三十一(转发微博view)
- 出现错误Failed to install *.apk on device 'emulator-5554!
- 2.2 分治法的基本思想
- 线性表的链式存储(单链表)的基本操作
- LightOJ1151---Snakes and Ladders (高斯消元+概率dp)
- 快速理解Linux多线程及Epoll
- 1384
- 新浪微博开发之三十二(原创微博和转发微博frame)
- acitvator 将play工程导入eclipse
- Fiddler教程
- 东大OJ-1544: GG的战争法则