算法与设计经典题:大整数乘法(教材2-4)

给定两个整数u和v,他们分别有m和n为数字,且m≤n,用通常的乘法求uv的值需要O(mn)时间,可以将u和v均看作是有n位数字的大整数,用本章介绍的分治法,在O(n^(log3))时间内计算uv的值,当m<<n时,此法效率不高。设计算法在O(nlog2/3)时间计算uv的值

在O(n^(log3))时间内计算,把u,v分成两段,如分治法书中内容

uv=AC2^(n)+((A-B)(D-C)+AC+BD)2^(n/2)+BD

此时做三次n/2位的乘法,6次加减法和2次移位

此时符合第一问

第二问,当m比n小的多,就把n分成n/m段,所以就相当于一共有n/m次,计算m位乘法运算

由第一问得,O(n^(log3))为计算m为所需的

所以n/m次,就相城,化简为第二问所要求的算法时间复杂度

猜你喜欢

转载自blog.csdn.net/nanaz11/article/details/82561928
2-4