算法系列:分治法
分治法的基本思想是将一个规模为n的问题分解为k个规模较小的子问题,这些子问题互相独立。递归地解这些子问题,然后将各个子问题的解合并并得到原问题的解。它的一般的算法的设计模式如下:
divide-and-conquer(P) { if(|P|<=n0) adhoc(P); divide P into smaller subinstances P1,P2,P3,...,Pk; for(i=1;i<=k;i++) yi = divide-and-conquer(Pi); return merge(y1,y2,y3,...,yk); }
说明:|P|表示问题P的规模
n0为一阀值,表示当问题P的规模不超过n0时很容易解决,不必分解
adhoc(P)是该分治法的基本子算法
merge()是该分治法的合并子算法的解等到P的解
注意:从人们的大量实践中得出,在使用分治法的时候,最好使子问题的规模大致相同。
好吧,有什么问题的就留言吧,一起探讨,本人也是在学习阶段。。。