加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

算法分析的一个小例子--大数乘法

发布时间:2020-12-14 04:52:41 所属栏目:大数据 来源:网络整理
导读:x,y为两个长度为n位的整数,计算它们的积 X=A2^n/2+B ,Y=C2^n/2+D。这样,X和Y的乘积为: XY=(A2^n/2+B)(C2^n/2+D)=AC2^n+(AD+CB)2^n/2+BD 4次n/2位整数的乘法(AC,AD,BC和BD),以及3次不超过n位的整数加法(式中的加号),此外还要做2次移位(分别对应于式中

x,y为两个长度为n位的整数,计算它们的积
X=A2^n/2+B ,Y=C2^n/2+D。这样,X和Y的乘积为:

XY=(A2^n/2+B)(C2^n/2+D)=AC2^n+(AD+CB)2^n/2+BD
4次n/2位整数的乘法(AC,AD,BC和BD),以及3次不超过n位的整数加法(式中的加号),此外还要做2次移位(分别对应于式中乘2n和乘2n/2)。所有这些加法和移位共用O(n)步运算
T(N)=4T(N/2)+ O(N) T(n)=O(n^2)

XY=AC2^n+[(A-B)(D-C)+AC+BD]2^n/2+BD
需做3次n/2位整数的乘法(AC,BD和(A-B)(D-C)),6次加、减法和2次移位

T(N)=3T(N/2)+ O(N) T(n)=O(n^log3)=O(n^1.59)
T(N)为长度为n的乘法运算,可变为3个长度为n/2的乘法运算, O(N)把3个长度为n/2的乘法运算结果组装起来的时间(加法和位移操作)
画递归树更容易看出时间复杂度

T(N)=AT(N/B)+ O(F(N))

T(N)=3T(N/2)+ O(N)

第k级子问题数为3^k,树的高度为logn,最后一级k=logn,子问题数为3^logn,工作量为O(3^logn)=O(n^log3)=O(n^1.59),因为每一级时间成本几何增加,所以最后一级就是整个算法的时间复杂度

注:

证明O(3^logn)=O(n^log3)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读