算法设计思想--分治法

分治法:

核心思想,

1.分解,把大问题分解为多个规模更小的同一类型的问题。
2.求解
在问题规模足够小时,立即得到结果。
3.合并
依据所有分解后问题的解,进行综合处理,
得到一个属于大问题的解。

正确性证明

数学归纳法

通过分治实现的算法,用数学归纳法来证明正确性。
数学归纳法的证明:
初始时,
问题规模足够小时,算法目标可以实现。
对于给定规模为k的算法输入,
依据数学归纳法,
输入规模小于k的情形下,算法目标均可以实现。
须论证,规模k的算法,
在处理完毕时,可以得到该规模下的算法目标。

综合,
通过证明初始时,和规模为k下算法目标均可实现。即可证明算法对任意规模输入均成立。

另一种更具普适性的证明视角

有时不太肯定,
是否分解后的同类型问题属于原问题下一个规模更小的子问题。
可以按如下思路证明:
分治或包含分治处理的算法,
在算法处理中,
要么,在算法处理中,可以直接对问题求解。
此时算法必然成立。
要么,
在算法处理中,
将要求解的问题,转化为了一个或多个相同类型的问题,
在假定转化后的相同类型问题均可求解的前提下,
算法将可以完成对于输入问题的求解。

下面证明相同类型问题可被求解。
需要证明,在最坏情况下,
算法也必然在有限次转化为同类型问题后的某次,
可以达到可以直接求解的情形。

若上述被证明。
则,我们可知从最后一次直接被求解的情况,
逐层上移,最终到达本输入中时,
我们可以完成对分解后同类型的问题的可求解的证明。
综合,
算法成立。

你可能感兴趣的:(2.1.数据结构与算法,算法,分治,设计思想)