什么是分而治之?
“分而治之”是有效算法设计中普遍采用的一种技术。
所谓“分而治之” 就是把一个复杂的算法问题按一定的“分解”方法分为等价的规模较小的若干部分,然后逐个解决,分别找出各部分的解,把各部分的解组成整个问题的解,这种朴素的思想来源于人们生活与工作的经验,也完全适合于技术领域。诸如软件的体系结构设计、模块化设计都是分而治之的具体表现。
分治算法的基本思想就是将一个规模为N的问题分解为K个规模较小的子问题(K <= N),这些子问题相互独立且与原问题性质相同,求出子问题的解,就可以求出原问题的解。
分治算法是递归的解决问题的一般步骤为:
(1)找出基线条件,这种条件必须尽可能简单
(2)不断将问题分解(或者说缩小规模),直到符合基线条件。
(3)按原问题的要求,判断子问题的解是否就是原问题的解, 或是需要将子问题的解逐层合并构成原问题的解。