A禁食算法对于惯性导航与制导多项式的s.幼稚算法将项乘以项,得出时间复杂度O(m*n)(其中m,n是学期s,并假设单位时间为算术运算s) ●●●●。

但我们也可以在这里做得更好!为了简单起见,我展示了n=m=2的情况k+1。我们希望用P(x)乘以Q(x),所以我们写

P(x)=P1(x) +x个2k个●P2(x)
Q(x)=Q1(x) +x个2k个●Q2(x)
我们希望计算
P(x)*Q(x)=P1(x) *问1(x)+x2k个●(P1(x) *问2(x)+P(P)2(x) *数量1(x) )+x2k+1(千分之一)●P2(x) *问2(x) ●●●●。

所以定义3倍:

  • A(x)=P1(x) *问1(x)
  • B(x)=P2(x) *问2(x)
  • C(x)=(P1(x) +P(+P)2(x) )*(Q1(x) +Q2(x) )
然后
P(x)*Q(x)=A(x)+x2k个●(C(x)-A(x)-B(x))+x2k+1(千分之一)●B(x)。
使用类似算法将3个乘积相乘,直到达到某个较小的k值(例如k=1)。净效果是将天真算法所需的4次乘法转换为3次乘法。

类似于矩阵乘法的Strassen算法显示算法在时间O(3)内运行k个)=O(nlg(长度)2)=O(n1.585).

存在类似的算法矩阵乘法复数乘法.

登录登记在这里写点什么或联系作者。