分治法概述

分治法

基本思想:

  • 将一个难以直接解决的大问题,分解成一些规模较小的相同子问题,各个子问题相互独立;递归地解决各个子问题,将子问题的解归并成原问题的解
    或:
  • 一个复杂的问题分成两个或更多的相同子问题,再把子问题分成更小的子问题,直到最后各个子问题可以简单地直接求解,对各个子问题的解进行合并即得原问题的解。
    即: 将一个难以直接解决的大问题,分解成一些规模较小的相同问题,以便各个击破,分而治之。

分治法求解问题的特征:

  • 1.问题的规模缩小到一定程度就可以容易地解决。
  • 2.问题可以分解为若干个规模较小的相同子问题
  • 3.问题新分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题。

求解过程:

  • 步骤1:分解
    将问题分解为若干个规模较小,相互独立,与原问题形式相同的子问题。
    (最好使子问题的规模大致相同,即将一个问题分为大小相等的k个子问题(通常k=2),这种处理方法行之有效。)
  • 步骤2:治理
    步骤2-1:求解各个子问题(递归)
    求解各个子问题。若子问题规模较小而容易被解决则直接求解,否则再继续分解为更小的子问题,直到容易解决为止。
    由于采用分治法求解的问题被分解为若干个规模较小的相同子问题,各个子问题的解法与原问题的解法是相同的。所以采取递归技术来对各个子问题进行求解。
    步骤2-2:合并
    将已求得的各个子问题的解合并为原问题的解。

你可能感兴趣的:(算法,算法)