分治算法解决大整数乘法问题

整数相乘:小整数相乘在算法时间分析中可以认为是常数时间,但是对于大整数,时间需要考虑。两个N位数的整数X和Y相乘,常规方法花费时间是《分治算法解决大整数乘法问题》,因为X的每一位都要和Y的每一位相乘,是两层循环。

分治算法解决整数相乘问题:

例如,X是12345678,Y是87654321,将X和Y都拆成两半,得到

《分治算法解决大整数乘法问题》

《分治算法解决大整数乘法问题》

《分治算法解决大整数乘法问题》

《分治算法解决大整数乘法问题》

《分治算法解决大整数乘法问题》《分治算法解决大整数乘法问题》,得到

《分治算法解决大整数乘法问题》

这个方程由4个乘法组成,即《分治算法解决大整数乘法问题》,每个问题是原问题的《分治算法解决大整数乘法问题》大小,加上增加一堆0的《分治算法解决大整数乘法问题》附加工作,得到递归公式如下:

《分治算法解决大整数乘法问题》

应用分治算法定理,得到《分治算法解决大整数乘法问题》,因此并没有改进时间。想要改进时间,需要考虑减少子问题规模,一个观察如下:

《分治算法解决大整数乘法问题》

这样,只需要求《分治算法解决大整数乘法问题》三个子问题,公式为

《分治算法解决大整数乘法问题》

应用分治算法定理,得到《分治算法解决大整数乘法问题》,是一个亚二次时间界

    原文作者:大整数乘法问题
    原文地址: https://blog.csdn.net/kdb_viewer/article/details/83142894
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞