简介:本文探讨了利用分治法解决大整数乘法与分解问题的方法,提出了一种高效的计算策略,为计算机科学中的复杂运算提供了新的思路。
模型改进:可以将X*Y表示为另一种形式:X*Y = A*C * 2^n + [(A-B)(D-C)+AC+BD]*2^(n/2) + B*D。公式(3)虽然看起来比原来复杂,但实际上只需要进行三次 n/2位整数的乘法运算(即 AC、BD 和 (A-B)(D-C),以及六次加减操作和两次移位。
通过上述方法可以得出递归方程:
\[ T(n)= 3T(\frac{n}{2}) + cn \]
根据迭代公式进行展开,假设 \( n=2^k \) ,则有:
\[
T(n) = 3(3T(\frac{n}{4})+ c\frac{n}{2})+cn
= 9(T(\frac{n}{8}))+c\frac{n}{4} + 3c\frac{n}{2} + cn
= \ldots
\]
继续迭代展开,可以得到:
\[ T(n) = 3^k + 3^{(k-1)} *2c+ 3^{(k-2)}*4c+\ldots+ 3c2^{(k-1)} + c2^k \]
因此,
\[
T(n)= O(n^{\log_2{3}}) = O(n^{1.59})
\]