基本思想:将复杂问题简单化,大事化小,小事化了,很符合中国人的思想。
打官腔:分治算法的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。求出子问题的解,就可得到原问题的解。
(图片源自百度)
上伪代码:
type divede-and-conquer(Problem p){ if(|P|<N0) adhoc(p); //如果问题p的规模小于某个指定值N0时,对问题进行求解 for(int i=0;i<k;i++){ res[i]=divide-and-conquer(pi); //将问题划分为k个小问题 p0,p2,...pk-1 并求解并存在res中 } return merge(res[0],re[1]...res[k-1]); //将res得到的结果进行合并 }
从分治法的伪代码可知,其设计出的程序一般是递归算法。后面会加入递归法的应用。