Divide and Conquer

分治算法,将原始问题划分成 n 个规模较小,并且结构与原问题相似的子问题,递归解决这些子问题,然后合并其结果,就得到原问题的解。

分治算法与递归:分治算法是处理问题的一种思想,递归是一种编程技巧;分治算法一般都比较适合递归来实现。每一层递归都会涉及三种操作:分解、解决、合并。

适用条件:

  • 原问题与分解的小问题有相同的模式。

  • 原问题与子问题可以独立求解,没有相关性。

  • 分解有终止条件。

  • 合并操作的复杂度不能太高。

Map-Reduce 也是利用了分治的思想。

例题

Last updated