分而治之其实就是一种解决问题的方法,说的简单一点就是拆分问题,然后逐个解决。
当我们遇到问题时,如果能力大于问题,直接用能力就可以解决。
那么当能力小于问题时,我们该怎么办呢?
有两个方法。
1.降低问题的难度。将问题的难度降低到自己的能力之下,这样能力大于问题难度,问题就可以得到解决。
2.提高解决问题的能力。提高自己解决问题的能力,使得能力大于问题的难度,这样问题也可以得到解决。
概念:拆分,也称为分而治之,它是一种各个学科通用的方法。拆分是将原问题拆分成可以解决的小问题,然后逐个击破。哲学家、物理学家笛卡尔说过:“将面临的所有问题尽可能地细分,细至能用最佳的方式将其解决为止”。
例子:拆分的应用随处可见。比如我买了一个完整的西瓜,我不会直接用嘴去啃西瓜,因为西瓜太大了,不好下嘴,即使西瓜没有皮也是如此。这相当于难度大于嘴的能力,用刀将西瓜切成一块一块的,然后再吃,这就是拆分。
分治算法:把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。在计算机科学中,分治法就是运用分治思想的一种很重要的算法。分治法是很多高效算法的基础,如排序算法,傅里叶变换等等。