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=2kk=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.参考文章

传送门1

传送门2

以上是关于Karatsuba乘法的主要内容,如果未能解决你的问题,请参考以下文章

Karatsuba乘法

Karatsuba - 多项式乘法与 CUDA

[转]大整数算法[11] Karatsuba乘法

[MIT6.006] 11. Integer Arithmetic, Karatsuba Multiplication 整型算术,Karatsuba乘法

优化 Karatsuba 乘法(老物)

很长的数字上的 karatsuba 算法错误