分治算法

来源:互联网 发布:图形矢量化软件 编辑:程序博客网 时间:2024/06/07 13:29

一、基本概念
在计算机科学中,分治算法是一种很重要的算法。就是把一个复杂的问题分成两个或更多的相同或相似的问题,再把子问题分钟更小的子问题····直到最后自问题可以简单的直接求解,元问题的解即自问题的合并。这个技巧是很多高效算法的基础,比如排序算法(快速排序归并排序),傅里叶变换(快速傅里叶变换)···

二、基本思想及策略
分治算法的设计思想是:将一个难以直接解决的大问题,分割成一些规模小的相同的问题,一边各个击破,分而治之。
分治算法的策略是:对于一个规模为n的问题,若该问题可以容易地解决(比如规模n比较小)则直接解决,否则将其分解成k个规模较小的自问题,这些子问题相互独立且与元问题形式相同,递归地解这些子问题,然后将各子问题的解合并得到原问题的解。

三、分治算法的适用情况
分治法能解决的问题一般具有以下几个特征:
1.该问题的规模缩小到一定的程度就可以容易的解决。
2.该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质。
3.利用该问题分解出的子问题的解可以合并为该问题的解。
4.该问题所分解出的自问题是相互独立的,即子问题之间不包含子子问题。

第三条特征是关键,能否利用分治法完全取决于问题是否具有第三条特征,如果具备了第一条和第二条特征,而不具备第三条特征,则可以考虑用贪心法或动态规划法。

0 0
原创粉丝点击