分治算法

分治算法:

快速排序,归并排序,汉诺塔问题,傅立叶变换,包括动态规划,贪心算法都有运用到分治思想。

分治策略是:
对于一个规模为n的问题,若该问题可以容易地解决(比如说规模n较小)则直接解决,否则将其分解为k个规模较小的子问题,这些子问题互相独立且与原问题形式相同,递归地解这些子问题,然后将各子问题的解合并得到原问题的解。这种算法设计策略叫做分治法。

1、将问题的规模变小,变成若干个子问题,即该问题具有最优子结构性质。
2、子问题之间互相独立且与原问题形式相同
3、该问题分解出的子问题的解可以合并为该问题的解;

由分治法产生的子问题往往是原问题的较小模式,这就为使用递归技术提供了方便。在这种情况下,反复应用分治手段,可以使子问题与原问题类型一致而其规模却不断缩小,最终使子问题缩小到很容易直接求出其解。这自然导致递归过程的产生。分治与递归像一对孪生兄弟,经常同时应用在算法设计之中,并由此产生许多高效算法。

分治的一些经典问题:
二分搜索
大整数乘法
Strassen矩阵乘法
棋盘覆盖
归并排序
快速排序
线性时间选择
最接近点对问题
循环赛日程表
汉诺塔

猜你喜欢

转载自blog.csdn.net/weixin_39471249/article/details/80062147
今日推荐