Karatsuba乘法
Posted Harris-H
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Karatsuba乘法相关的知识,希望对你有一定的参考价值。
Karatsuba乘法
1.定义
Karatsuba乘法是一种快速乘法。此算法在1960年由Anatolii Alexeevitch Karatsuba 提出,并于1962年得以发表。此算法主要用于两个大数相乘。普通乘法的复杂度是 O ( n 2 ) O(n^2) O(n2),而Karatsuba算法的复杂度仅为 O ( n log 2 3 ) = O ( n 1.585 ) O(n^\\log_23)=O(n^1.585) O(nlog23)=O(n1.585)
2.时间复杂度证明
每次规模下降一半。
n = 2 k → k = log 2 n n=2^k\\rightarrow k=\\log_2n n=2k→k=log2n
3 k = 3 log 2 n = 3 l o g 3 n l o g 3 2 = ( 3 log 3 n ) log 3 2 = n log 3 2 = n 1.585 3^k=3^\\log_2n=3^\\dfraclog_3nlog_32=(3^\\log_3n)^\\log_32=n^\\log_32=n^1.585 3k=3log2n=3log32log3n=(3log3n)log32=nlog32=n1.585
或者 T ( n ) = 3 × T ( n 2 ) + O ( n ) T(n)=3\\times T(\\dfracn2)+O(n) T(n)=3×T(2n)+O(n) 递推得到。
2.介绍
3.实例
若两个 n n n位数使用Karatsuba乘法,最小运算单位为 n 6 \\dfracn6 6n位数进行乘法,需要乘多少次?
因为每次拆分都要乘法三次。
最后一次递归计算3次,解决 2 n 6 \\dfrac2n6 62n。
剩下四次递归每次耗费两次, 3 + 2 × 4 = 11 3+2\\times 4=11 3+2×4=11次乘法运算。
4.参考文章
以上是关于Karatsuba乘法的主要内容,如果未能解决你的问题,请参考以下文章
[MIT6.006] 11. Integer Arithmetic, Karatsuba Multiplication 整型算术,Karatsuba乘法