<>其中|P|表示问题P的规模;n<SUB>0</SUB>为一阈值,表示当问题P的规模不超过n<SUB>0</SUB>时,问题已容易直接解出,不必再继续分解。ADHOC(P)是该分治法中的基本子算法,用于直接解小规模的问题P。因此,当P的规模不超过n<SUB>0</SUB>时,直接用算法ADHOC(P)求解。算法MERGE(y<SUB>1</SUB>,y<SUB>2</SUB>,...,y<SUB>k</SUB>)是该分治法中的合并子算法,用于将P的子问题P<SUB>1 </SUB>,P<SUB>2 </SUB>,...,P<SUB>k</SUB>的相应的解y<SUB>1</SUB>,y<SUB>2</SUB>,...,y<SUB>k</SUB>合并为P的解。</P><>根据分治法的分割原则,原问题应该分为多少个子问题才较适宜?各个子问题的规模应该怎样才为适当?这些问题很难予以肯定的回答。但人们从大量实践中发现,在用分治法设计算法时,最好使子问题的规模大致相同。换句话说,将一个问题分成大小相等的k个子问题的处理方法是行之有效的。许多问题可以取k=2。这种使子问题规模大致相等的做法是出自一种<DFN>平衡(balancing)子问题</DFN>的思想,它几乎总是比子问题规模不等的做法要好。</P><>分治法的合并步骤是算法的关键所在。有些问题的合并方法比较明显,如下面的例1,例2;有些问题合并方法比较复杂,或者是有多种合并方案,如例3,例4;或者是合并方案不明显,如例5。究竟应该怎样合并,没有统一的模式,需要具体问题具体分析。</P><!-- #EndEditable --> |