整数相乘:小整数相乘在算法时间分析中可以认为是常数时间,但是对于大整数,时间需要考虑。两个N位数的整数X和Y相乘,常规方法花费时间是,因为X的每一位都要和Y的每一位相乘,是两层循环。
分治算法解决整数相乘问题:
例如,X是12345678,Y是87654321,将X和Y都拆成两半,得到
即,
,得到
这个方程由4个乘法组成,即,每个问题是原问题的
大小,加上增加一堆0的
附加工作,得到递归公式如下:
应用分治算法定理,得到,因此并没有改进时间。想要改进时间,需要考虑减少子问题规模,一个观察如下:
这样,只需要求三个子问题,公式为
应用分治算法定理,得到,是一个亚二次时间界