![cc4488a4a9848b3dddf080c383f3a052.png](https://img-blog.csdnimg.cn/img_convert/cc4488a4a9848b3dddf080c383f3a052.png)
基本概念
分治法的核心思想就是“分而治之”。利用分而治之的思想,就可以把一个大规模、高难度的问题,分解为若干个小规模、低难度的小问题。然后,在把这些简单问题解决好之后,通过把这些小问题的答案合并,就得到了原问题的答案。通常而言,这些小问题具备互相独立、形式相同的特点。
很多高效率的算法都是以分治法作为其基础思想,例如排序算法中的快速排序和归并排序。
算法思想
当需要采用分治法时,一般原问题都需要具备以下几个特征。
- 难度在降低:即原问题的解决难度,随着数据的规模的缩小而降低。这个特征绝大多数问题都是满足的。
- 问题可分:原问题可以分解为若干个规模较小的同类型问题。这是应用分治法的前提。
- 解可合并:利用所有子问题的解,可合并出原问题的解。这个特征很关键,能否利用分治法完全取决于这个特征。
- 相互独立:各个子问题之间相互独立,某个子问题的求解不会影响到另一个子问题。如果子问题之间不独立,则分治法需要重复地解决公共的子问题,造成效率低下的结果。
分治与递归的对比:分治可以采用递归或递推来分解问题。如果分治法使用递归,那么分治法在每轮递归上,都包含了分解问题、解决问题和合并结果这 3 个步骤。