一种对于多项式乘法的更好的优化

全文链接

对于 h ( x ) = f ( x ) × g ( x ) h(x)=f(x)\times g(x) h(x)=f(x)×g(x),考虑拆分 f ( x ) , g ( x ) , h ( x ) f(x),g(x),h(x) f(x),g(x),h(x)。令 f ( x ) = A 0 ( x 2 ) + A 1 ( x 2 ) x f(x)=A_0(x^2)+A_1(x^2)x f(x)=A0(x2)+A1(x2)x g ( x ) = B 0 ( x 2 ) + B 1 ( x 2 ) x g(x)=B_0(x^2)+B_1(x^2)x g(x)=B0(x2)+B1(x2)x h ( x ) = C 0 ( x 2 ) + C 1 ( x 2 ) x h(x)=C_0(x^2)+C_1(x^2)x h(x)=C0(x2)+C1(x2)x,其中 A 0 ( x ) , A 1 ( x ) , B 0 ( x ) , B 1 ( x ) A_0(x),A_1(x),B_0(x),B_1(x) A0(x),A1(x),B0(x),B1(x)为关于 x x x ( n 2 − 1 ) (\frac{n}{2}-1) (2n1)次多项式(但实际上我们会把它们看成关于 x x x ( n − 1 ) (n-1) (n1)次多项式), C 0 ( x ) , C 1 ( x ) C_0(x),C_1(x) C0(x),C1(x)为关于 x x x ( n − 1 ) (n-1) (n1)次多项式(尽管 C 1 ( x ) n − 1 = 0 C_1(x)_{n-1}=0 C1(x)n1=0,但是我们仍然可以把 C 1 ( x ) C_1(x) C1(x)看成关于 x x x ( n − 1 ) (n-1) (n1)次多项式)。有
h ( x ) 2 k = ∑ i = 0 2 k A ( x ) i B ( x ) 2 k − i = ∑ i = 0 k ( A ( x ) 2 i B ( x ) 2 ( k − i ) + A ( x ) 2 i + 1 B ( x ) 2 ( k − i ) − 1 ) = ∑ i = 0 k ( A 0 ( x ) i B 0 ( x ) k − i + A 1 ( x ) i B 1 ( x ) k − i − 1 ) = C 0 ( x ) k \begin{aligned} h(x)_{2k}&=\sum_{i=0}^{2k}A(x)_iB(x)_{2k-i}\\ &=\sum_{i=0}^k(A(x)_{2i}B(x)_{2(k-i)}+A(x)_{2i+1}B(x)_{2(k-i)-1})\\ &=\sum_{i=0}^k(A_0(x)_iB_0(x)_{k-i}+A_1(x)_iB_1(x)_{k-i-1})=C_0(x)_k \end{aligned} h(x)2k=i=02kA(x)iB(x)2ki=i=0k(A(x)2iB(x)2(ki)+A(x)2i+1B(x)2(ki)1)=i=0k(A0(x)iB0(x)ki+A1(x)iB1(x)ki1)=C0(x)k
以及
h ( x ) 2 k + 1 = ∑ i = 0 2 k + 1 A ( x ) i B ( x ) 2 k + 1 − i = ∑ i = 0 k ( A ( x ) 2 i B ( x ) 2 ( k − i ) + 1 + A ( x ) 2 i + 1 B ( x ) 2 ( k − i ) ) = ∑ i = 0 k ( A 0 ( x ) i B 1 ( x ) k − i + A 1 ( x ) i B 0 ( x ) k − i ) = C 1 ( x ) k \begin{aligned} h(x)_{2k+1}&=\sum_{i=0}^{2k+1}A(x)_iB(x)_{2k+1-i}\\ &=\sum_{i=0}^k(A(x)_{2i}B(x)_{2(k-i)+1}+A(x)_{2i+1}B(x)_{2(k-i)})\\ &=\sum_{i=0}^k(A_0(x)_iB_1(x)_{k-i}+A_1(x)_iB_0(x)_{k-i})=C_1(x)_k \end{aligned} h(x)2k+1=i=02k+1A(x)iB(x)2k+1i=i=0k(A(x)2iB(x)2(ki)+1+A(x)2i+1B(x)2(ki))=i=0k(A0(x)iB1(x)ki+A1(x)iB0(x)ki)=C1(x)k
其中 k = 0 , 1 , 2 , ⋯   , ( n − 1 ) k=0,1,2,\cdots,(n-1) k=0,1,2,,(n1)。注意到等式 ∑ i = 0 2 k A ( x ) i B ( x ) 2 k − i = ∑ i = 0 k ( A ( x ) 2 i B ( x ) 2 ( k − i ) + A ( x ) 2 i + 1 B ( x ) 2 ( k − i ) − 1 ) \sum_{i=0}^{2k}A(x)_iB(x)_{2k-i}=\sum_{i=0}^k(A(x)_{2i}B(x)_{2(k-i)}+A(x)_{2i+1}B(x)_{2(k-i)-1}) i=02kA(x)iB(x)2ki=i=0k(A(x)2iB(x)2(ki)+A(x)2i+1B(x)2(ki)1)右侧当 i = k i=k i=k A ( x ) 2 i + 1 B ( x ) 2 ( k − i ) − 1 = A ( x ) 2 k + 1 B ( x ) − 1 A(x)_{2i+1}B(x)_{2(k-i)-1}=A(x)_{2k+1}B(x)_{-1} A(x)2i+1B(x)2(ki)1=A(x)2k+1B(x)1,但这不影响结果,因为 B ( x ) − 1 = 0 B(x)_{-1}=0 B(x)1=0

考虑构造 α A ( x ) = A 0 ( x ) + A 1 ( x ) − 1 \alpha_A(x)=A_0(x)+A_1(x)\sqrt{-1} αA(x)=A0(x)+A1(x)1 α B ( x ) = B 0 ( x ) + B 1 ( x ) − 1 \alpha_B(x)=B_0(x)+B_1(x)\sqrt{-1} αB(x)=B0(x)+B1(x)1 α ( x ) = α A ( x ) × α B ( x ) = [ A 0 ( x ) + A 1 ( x ) − 1 ] [ B 0 ( x ) + B 1 ( x ) − 1 ] \alpha(x)=\alpha_A(x)\times\alpha_B(x)=[A_0(x)+A_1(x)\sqrt{-1}][B_0(x)+B_1(x)\sqrt{-1}] α(x)=αA(x)×αB(x)=[A0(x)+A1(x)1 ][B0(x)+B1(x)1 ],则有
X α ( a ) = ∑ i = 0 n − 1 { [ A 0 ( x ) + A 1 ( x ) − 1 ] [ B 0 ( x ) + B 1 ( x ) − 1 ] } i ( ω n ) a i = ∑ i = 0 n − 1 [ ( A 0 ( x ) B 0 ( x ) − A 1 ( x ) B 1 ( x ) ) + ( A 0 ( x ) B 1 ( x ) + A 1 ( x ) B 0 ( x ) ) − 1 ] i ( ω n ) a i = ∑ i = 0 n − 1 ∑ j = 0 i [ A 0 ( x ) j B 0 ( x ) i − j − A 1 ( x ) j B 1 ( x ) i − j + ( A 0 ( x ) j B 1 ( x ) i − j + A 1 ( x ) j B 0 ( x ) i − j ) − 1 ] ( ω n ) a i \begin{aligned} X_\alpha(a)&=\sum_{i=0}^{n-1}\{[A_0(x)+A_1(x)\sqrt{-1}][B_0(x)+B_1(x)\sqrt{-1}]\}_i(\omega_n)^{ai}\\ &=\sum_{i=0}^{n-1}[(A_0(x)B_0(x)-A_1(x)B_1(x))+(A_0(x)B_1(x)+A_1(x)B_0(x))\sqrt{-1}]_i(\omega_n)^{ai}\\ &=\sum_{i=0}^{n-1}\sum_{j=0}^{i}[A_0(x)_jB_0(x)_{i-j}-A_1(x)_{j}B_1(x)_{i-j}+(A_0(x)_{j}B_1(x)_{i-j}+A_1(x)_{j}B_0(x)_{i-j})\sqrt{-1}](\omega_n)^{ai} \end{aligned} Xα(a)=i=0n1{[A0(x)+A1(x)1 ][B0(x)+B1(x)1 ]}i(ωn)ai=i=0n1[(A0(x)B0(x)A1(x)B1(x))+(A0(x)B1(x)+A1(x)B0(x))1 ]i(ωn)ai=i=0n1j=0i[A0(x)jB0(x)ijA1(x)jB1(x)ij+(A0(x)jB1(x)ij+A1(x)jB0(x)ij)1 ](ωn)ai
其中 a = 0 , 1 , 2 , ⋯   , ( n − 1 ) a=0,1,2,\cdots,(n-1) a=0,1,2,,(n1)

考虑再构造 β ( x ) = C 0 ( x ) + C 1 ( x ) − 1 \beta(x)=C_0(x)+C_1(x)\sqrt{-1} β(x)=C0(x)+C1(x)1 ,则有
β ( x ) = ∑ i = 0 n − 1 { [ ∑ j = 0 i ( A 0 ( x ) j B 0 ( x ) i − j + A 1 ( x ) j B 1 ( x ) i − j − 1 ) ] + − 1 ∑ j = 0 i [ A 0 ( x ) j B 1 ( x ) i − j + A 1 ( x ) j B 0 ( x ) i − j ] } x i = ∑ i = 0 n − 1 ∑ j = 0 i [ A 0 ( x ) j B 0 ( x ) i − j + A 1 ( x ) j B 1 ( x ) i − j − 1 + ( A 0 ( x ) j B 1 ( x ) i − j + A 1 ( x ) j B 0 ( x ) i − j ) − 1 ] x i \begin{aligned} \beta(x)&=\sum_{i=0}^{n-1}\{[\sum_{j=0}^i(A_0(x)_jB_0(x)_{i-j}+A_1(x)_jB_1(x)_{i-j-1})]+\sqrt{-1}\sum_{j=0}^i[A_0(x)_jB_1(x)_{i-j}+A_1(x)_jB_0(x)_{i-j}]\}x^i\\ &=\sum_{i=0}^{n-1}\sum_{j=0}^i[A_0(x)_jB_0(x)_{i-j}+A_1(x)_jB_1(x)_{i-j-1}+(A_0(x)_jB_1(x)_{i-j}+A_1(x)_jB_0(x)_{i-j})\sqrt{-1}]x^i \end{aligned} β(x)=i=0n1{[j=0i(A0(x)jB0(x)ij+A1(x)jB1(x)ij1)]+1 j=0i[A0(x)jB1(x)ij+A1(x)jB0(x)ij]}xi=i=0n1j=0i[A0(x)jB0(x)ij+A1(x)jB1(x)ij1+(A0(x)jB1(x)ij+A1(x)jB0(x)ij)1 ]xi
于是有
X β ( a ) = ∑ i = 0 n − 1 ∑ j = 0 i [ A 0 ( x ) j B 0 ( x ) i − j + A 1 ( x ) j B 1 ( x ) i − j − 1 + ( A 0 ( x ) j B 1 ( x ) i − j + A 1 ( x ) j B 0 ( x ) i − j ) − 1 ] ( ω n ) a i X_\beta(a)=\sum_{i=0}^{n-1}\sum_{j=0}^i[A_0(x)_jB_0(x)_{i-j}+A_1(x)_jB_1(x)_{i-j-1}+(A_0(x)_jB_1(x)_{i-j}+A_1(x)_jB_0(x)_{i-j})\sqrt{-1}](\omega_n)^{ai} Xβ(a)=i=0n1j=0i[A0(x)jB0(x)ij+A1(x)jB1(x)ij1+(A0(x)jB1(x)ij+A1(x)jB0(x)ij)1 ](ωn)ai
其中 a = 0 , 1 , 2 , ⋯   , ( n − 1 ) a=0,1,2,\cdots,(n-1) a=0,1,2,,(n1)

对比 X α X_\alpha Xα X β X_\beta Xβ的解析式,发现它们十分相似。考虑将它们相减并消去相同的项,有
X β ( a ) − X α ( a ) = ∑ i = 0 n − 1 ∑ j = 0 i ( A 1 ( x ) j B 1 ( x ) i − j − 1 + A 1 ( x ) j B 1 ( x ) i − j ) ( ω n ) a i = [ ∑ i = 0 n − 1 ∑ j = 0 i A 1 ( x ) j B 1 ( x ) i − j − 1 ( ω n ) a i ] + [ ∑ i = 0 n − 1 ∑ j = 0 i A 1 ( x ) j B 1 ( x ) i − j ( ω n ) a i ] \begin{aligned} X_\beta(a)-X_\alpha(a)&=\sum_{i=0}^{n-1}\sum_{j=0}^i(A_1(x)_jB_1(x)_{i-j-1}+A_1(x)_jB_1(x)_{i-j})(\omega_n)^{ai}\\ &=[\sum_{i=0}^{n-1}\sum_{j=0}^iA_1(x)_jB_1(x)_{i-j-1}(\omega_n)^{ai}]+[\sum_{i=0}^{n-1}\sum_{j=0}^iA_1(x)_jB_1(x)_{i-j}(\omega_n)^{ai}] \end{aligned} Xβ(a)Xα(a)=i=0n1j=0i(A1(x)jB1(x)ij1+A1(x)jB1(x)ij)(ωn)ai=[i=0n1j=0iA1(x)jB1(x)ij1(ωn)ai]+[i=0n1j=0iA1(x)jB1(x)ij(ωn)ai]
观察 ∑ i = 0 n − 1 ∑ j = 0 i A 1 ( x ) j B 1 ( x ) i − j − 1 ( ω n ) a i \sum_{i=0}^{n-1}\sum_{j=0}^iA_1(x)_jB_1(x)_{i-j-1}(\omega_n)^{ai} i=0n1j=0iA1(x)jB1(x)ij1(ωn)ai,发现式中当 j = i j=i j=i A 1 ( x ) j B 1 ( x ) i − j − 1 = A 1 ( x ) i B 1 ( x ) − 1 = 0 A_1(x)_jB_1(x)_{i-j-1}=A_1(x)_iB_1(x)_{-1}=0 A1(x)jB1(x)ij1=A1(x)iB1(x)1=0。于是有
∑ i = 0 n − 1 ∑ j = 0 i A 1 ( x ) j B 1 ( x ) i − j − 1 ( ω n ) a i = ∑ i = 0 n − 1 ∑ j = 0 i − 1 A 1 ( x ) j B 1 ( x ) i − j − 1 ( ω n ) a i \sum_{i=0}^{n-1}\sum_{j=0}^iA_1(x)_jB_1(x)_{i-j-1}(\omega_n)^{ai}=\sum_{i=0}^{n-1}\sum_{j=0}^{i-1}A_1(x)_jB_1(x)_{i-j-1}(\omega_n)^{ai} i=0n1j=0iA1(x)jB1(x)ij1(ωn)ai=i=0n1j=0i1A1(x)jB1(x)ij1(ωn)ai
再次观察发现, ∑ i = 0 n − 1 ∑ j = 0 i − 1 A 1 ( x ) j B 1 ( x ) i − j − 1 ( ω n ) a i \sum_{i=0}^{n-1}\sum_{j=0}^{i-1}A_1(x)_jB_1(x)_{i-j-1}(\omega_n)^{ai} i=0n1j=0i1A1(x)jB1(x)ij1(ωn)ai中当 i = 0 i=0 i=0 j j j不存在,于是
∑ i = 0 n − 1 ∑ j = 0 i A 1 ( x ) j B 1 ( x ) i − j − 1 ( ω n ) a i = ∑ i = 0 n − 1 ∑ j = 0 i − 1 A 1 ( x ) j B 1 ( x ) i − j − 1 ( ω n ) a i = ∑ i = 1 n − 1 ∑ j = 0 i − 1 A 1 ( x ) j B 1 ( x ) i − j − 1 ( ω n ) a i = ∑ i = 0 n − 2 ∑ j = 0 i A 1 ( x ) j B 1 ( x ) i − j ( ω n ) a ( i + 1 ) = ∑ i = 0 n − 2 ∑ j = 0 i A 1 ( x ) j B 1 ( x ) i − j ( ω n ) a i + a = ( ω n ) a ∑ i = 0 n − 2 ∑ j = 0 i A 1 ( x ) j B 1 ( x ) i − j ( ω n ) a i \begin{aligned} \sum_{i=0}^{n-1}\sum_{j=0}^iA_1(x)_jB_1(x)_{i-j-1}(\omega_n)^{ai}&=\sum_{i=0}^{n-1}\sum_{j=0}^{i-1}A_1(x)_jB_1(x)_{i-j-1}(\omega_n)^{ai}\\ &=\sum_{i=1}^{n-1}\sum_{j=0}^{i-1}A_1(x)_jB_1(x)_{i-j-1}(\omega_n)^{ai}\\ &=\sum_{i=0}^{n-2}\sum_{j=0}^iA_1(x)_jB_1(x)_{i-j}(\omega_n)^{a(i+1)}\\ &=\sum_{i=0}^{n-2}\sum_{j=0}^iA_1(x)_jB_1(x)_{i-j}(\omega_n)^{ai+a}\\ &=(\omega_n)^a\sum_{i=0}^{n-2}\sum_{j=0}^iA_1(x)_jB_1(x)_{i-j}(\omega_n)^{ai} \end{aligned} i=0n1j=0iA1(x)jB1(x)ij1(ωn)ai=i=0n1j=0i1A1(x)jB1(x)ij1(ωn)ai=i=1n1j=0i1A1(x)jB1(x)ij1(ωn)ai=i=0n2j=0iA1(x)jB1(x)ij(ωn)a(i+1)=i=0n2j=0iA1(x)jB1(x)ij(ωn)ai+a=(ωn)ai=0n2j=0iA1(x)jB1(x)ij(ωn)ai
因为 A 1 ( x ) , B 1 ( x ) A_1(x),B_1(x) A1(x),B1(x)只有 0 ∼ ( n 2 − 1 ) 0\sim(\frac{n}{2}-1) 0(2n1)次项系数可能不为 0 0 0,所以对于 ∑ j = 0 i A 1 ( x ) j B 1 ( x ) i − j \sum_{j=0}^iA_1(x)_jB_1(x)_{i-j} j=0iA1(x)jB1(x)ij,当 i = n − 1 i=n-1 i=n1时,有:

  1. j ≤ n 2 − 1 j\le\frac{n}{2}-1 j2n1,则 i − j ≥ n − 1 − ( n 2 − 1 ) = n 2 i-j\ge n-1-(\frac{n}{2}-1)=\frac{n}{2} ijn1(2n1)=2n,此时 B 1 ( x ) i − j = 0 B_1(x)_{i-j}=0 B1(x)ij=0 A 1 ( x ) j B 1 ( x ) i − j = 0 A_1(x)_jB_1(x)_{i-j}=0 A1(x)jB1(x)ij=0
  2. j ≥ n 2 j\ge\frac{n}{2} j2n,则 A 1 ( x ) j = 0 A_1(x)_j=0 A1(x)j=0 A 1 ( x ) j B 1 ( x ) i − j = 0 A_1(x)_jB_1(x)_{i-j}=0 A1(x)jB1(x)ij=0

综上,当 i = n − 1 i=n-1 i=n1时, ( ∑ j = 0 i A 1 ( x ) j B 1 ( x ) i − j ) = 0 (\sum_{j=0}^iA_1(x)_jB_1(x)_{i-j})=0 (j=0iA1(x)jB1(x)ij)=0。于是有
∑ i = 0 n − 1 ∑ j = 0 i A 1 ( x ) j B 1 ( x ) i − j − 1 ( ω n ) a i = ( ω n ) a ∑ i = 0 n − 2 ∑ j = 0 i A 1 ( x ) j B 1 ( x ) i − j ( ω n ) a i = ( ω n ) a ∑ i = 0 n − 1 ∑ j = 0 i A 1 ( x ) j B 1 ( x ) i − j ( ω n ) a i \begin{aligned} \sum_{i=0}^{n-1}\sum_{j=0}^iA_1(x)_jB_1(x)_{i-j-1}(\omega_n)^{ai}&=(\omega_n)^a\sum_{i=0}^{n-2}\sum_{j=0}^iA_1(x)_jB_1(x)_{i-j}(\omega_n)^{ai}\\ &=(\omega_n)^a\sum_{i=0}^{n-1}\sum_{j=0}^iA_1(x)_jB_1(x)_{i-j}(\omega_n)^{ai} \end{aligned} i=0n1j=0iA1(x)jB1(x)ij1(ωn)ai=(ωn)ai=0n2j=0iA1(x)jB1(x)ij(ωn)ai=(ωn)ai=0n1j=0iA1(x)jB1(x)ij(ωn)ai
于是有
X β ( a ) − X α ( a ) = [ ∑ i = 0 n − 1 ∑ j = 0 i A 1 ( x ) j B 1 ( x ) i − j − 1 ( ω n ) a i ] + [ ∑ i = 0 n − 1 ∑ j = 0 i A 1 ( x ) j B 1 ( x ) i − j ( ω n ) a i ] = [ ( ω n ) a ∑ i = 0 n − 1 ∑ j = 0 i A 1 ( x ) j B 1 ( x ) i − j ( ω n ) a i ] + [ ∑ i = 0 n − 1 ∑ j = 0 i A 1 ( x ) j B 1 ( x ) i − j ( ω n ) a i ] = [ ( ω n ) a + 1 ] ∑ i = 0 n − 1 ∑ j = 0 i A 1 ( x ) j B 1 ( x ) i − j ( ω n ) a i \begin{aligned} X_\beta(a)-X_\alpha(a)&=[\sum_{i=0}^{n-1}\sum_{j=0}^iA_1(x)_jB_1(x)_{i-j-1}(\omega_n)^{ai}]+[\sum_{i=0}^{n-1}\sum_{j=0}^iA_1(x)_jB_1(x)_{i-j}(\omega_n)^{ai}]\\ &=[(\omega_n)^a\sum_{i=0}^{n-1}\sum_{j=0}^iA_1(x)_jB_1(x)_{i-j}(\omega_n)^{ai}]+[\sum_{i=0}^{n-1}\sum_{j=0}^iA_1(x)_jB_1(x)_{i-j}(\omega_n)^{ai}]\\ &=[(\omega_n)^a+1]\sum_{i=0}^{n-1}\sum_{j=0}^iA_1(x)_jB_1(x)_{i-j}(\omega_n)^{ai} \end{aligned} Xβ(a)Xα(a)=[i=0n1j=0iA1(x)jB1(x)ij1(ωn)ai]+[i=0n1j=0iA1(x)jB1(x)ij(ωn)ai]=[(ωn)ai=0n1j=0iA1(x)jB1(x)ij(ωn)ai]+[i=0n1j=0iA1(x)jB1(x)ij(ωn)ai]=[(ωn)a+1]i=0n1j=0iA1(x)jB1(x)ij(ωn)ai
考虑 α A ( x ) = A 0 ( x ) + A 1 ( x ) − 1 \alpha_A(x)=A_0(x)+A_1(x)\sqrt{-1} αA(x)=A0(x)+A1(x)1 DFT
X α A ( a ) = ∑ i = 0 n − 1 ( A 0 ( x ) + A 1 ( x ) − 1 ) i ( ω n ) a i = ∑ i = 0 n − 1 ( A 0 ( x ) i + A 1 ( x ) i − 1 ) ( ω n ) a i \begin{aligned} X_{\alpha_A}(a)&=\sum_{i=0}^{n-1}(A_0(x)+A_1(x)\sqrt{-1})_i(\omega_n)^{ai}\\ &=\sum_{i=0}^{n-1}(A_0(x)_i+A_1(x)_i\sqrt{-1})(\omega_n)^{ai} \end{aligned} XαA(a)=i=0n1(A0(x)+A1(x)1 )i(ωn)ai=i=0n1(A0(x)i+A1(x)i1 )(ωn)ai
注意到
X α A ( n − a ) = ∑ i = 0 n − 1 ( A 0 ( x ) i + A 1 ( x ) i − 1 ) ( ω n ) ( n − a ) i = ∑ i = 0 n − 1 ( A 0 ( x ) i + A 1 ( x ) i − 1 ) ( ω n ) n i ( ω n ) − a i = ∑ i = 0 n − 1 ( A 0 ( x ) i + A 1 ( x ) i − 1 ) ( ω n ) − a i \begin{aligned} X_{\alpha_A}(n-a)&=\sum_{i=0}^{n-1}(A_0(x)_i+A_1(x)_i\sqrt{-1})(\omega_n)^{(n-a)i}\\ &=\sum_{i=0}^{n-1}(A_0(x)_i+A_1(x)_i\sqrt{-1})(\omega_n)^{ni}(\omega_n)^{-ai}\\ &=\sum_{i=0}^{n-1}(A_0(x)_i+A_1(x)_i\sqrt{-1})(\omega_n)^{-ai} \end{aligned} XαA(na)=i=0n1(A0(x)i+A1(x)i1 )(ωn)(na)i=i=0n1(A0(x)i+A1(x)i1 )(ωn)ni(ωn)ai=i=0n1(A0(x)i+A1(x)i1 )(ωn)ai
于是有
X α A ( a ) − X α A ( n − a ) ‾ = ∑ i = 0 n − 1 ( A 0 ( x ) i + A 1 ( x ) i − 1 ) ( ω n ) a i − ∑ i = 0 n − 1 ( A 0 ( x ) i + A 1 ( x ) i − 1 ) ( ω n ) − a i ‾ = ∑ i = 0 n − 1 ( A 0 ( x ) i + A 1 ( x ) i − 1 ) ( ω n ) a i − ∑ i = 0 n − 1 ( A 0 ( x ) i + A 1 ( x ) i − 1 ) ( ω n ) − a i ‾ = ∑ i = 0 n − 1 ( A 0 ( x ) i + A 1 ( x ) i − 1 ) ( ω n ) a i − ∑ i = 0 n − 1 ( A 0 ( x ) i + A 1 ( x ) i − 1 ) ‾ × ( ω n ) − a i ‾ = ∑ i = 0 n − 1 ( A 0 ( x ) i + A 1 ( x ) i − 1 ) ( ω n ) a i − ∑ i = 0 n − 1 ( A 0 ( x ) i − A 1 ( x ) i − 1 ) ( ω n ) a i = ∑ i = 0 n − 1 [ ( A 0 ( x ) i + A 1 ( x ) i ) − ( A 0 ( x ) i − A 1 ( x ) i − 1 ) ] ( ω n ) a i = ∑ i = 0 n − 1 ( 2 A 1 ( x ) i − 1 ) ( ω n ) a i = 2 − 1 ∑ i = 0 n − 1 A 1 ( x ) i ( ω n ) a i \begin{aligned} X_{\alpha_A}(a)-\overline{X_{\alpha_A}(n-a)}&=\sum_{i=0}^{n-1}(A_0(x)_i+A_1(x)_i\sqrt{-1})(\omega_n)^{ai}-\overline{\sum_{i=0}^{n-1}(A_0(x)_i+A_1(x)_i\sqrt{-1})(\omega_n)^{-ai}}\\ &=\sum_{i=0}^{n-1}(A_0(x)_i+A_1(x)_i\sqrt{-1})(\omega_n)^{ai}-\sum_{i=0}^{n-1}\overline{(A_0(x)_i+A_1(x)_i\sqrt{-1})(\omega_n)^{-ai}}\\ &=\sum_{i=0}^{n-1}(A_0(x)_i+A_1(x)_i\sqrt{-1})(\omega_n)^{ai}-\sum_{i=0}^{n-1}\overline{(A_0(x)_i+A_1(x)_i\sqrt{-1})}\times\overline{(\omega_n)^{-ai}}\\ &=\sum_{i=0}^{n-1}(A_0(x)_i+A_1(x)_i\sqrt{-1})(\omega_n)^{ai}-\sum_{i=0}^{n-1}(A_0(x)_i-A_1(x)_i\sqrt{-1})(\omega_n)^{ai}\\ &=\sum_{i=0}^{n-1}[(A_0(x)_i+A_1(x)_i)-(A_0(x)_i-A_1(x)_i\sqrt{-1})](\omega_n)^{ai}\\ &=\sum_{i=0}^{n-1}(2A_1(x)_i\sqrt{-1})(\omega_n)^{ai}\\ &=2\sqrt{-1}\sum_{i=0}^{n-1}A_1(x)_i(\omega_n)^{ai} \end{aligned} XαA(a)XαA(na)=i=0n1(A0(x)i+A1(x)i1 )(ωn)aii=0n1(A0(x)i+A1(x)i1 )(ωn)ai=i=0n1(A0(x)i+A1(x)i1 )(ωn)aii=0n1(A0(x)i+A1(x)i1 )(ωn)ai=i=0n1(A0(x)i+A1(x)i1 )(ωn)aii=0n1(A0(x)i+A1(x)i1 )×(ωn)ai=i=0n1(A0(x)i+A1(x)i1 )(ωn)aii=0n1(A0(x)iA1(x)i1 )(ωn)ai=i=0n1[(A0(x)i+A1(x)i)(A0(x)iA1(x)i1 )](ωn)ai=i=0n1(2A1(x)i1 )(ωn)ai=21 i=0n1A1(x)i(ωn)ai
其中, a = 0 , 1 , 2 , ⋯   , ( n − 1 ) a=0,1,2,\cdots,(n-1) a=0,1,2,,(n1)。同理,对于 X α B X_{\alpha_B} XαB,也存在 X α B ( a ) − X α B ( n − a ) ‾ = 2 − 1 ∑ i = 0 n − 1 B 1 ( x ) i ( ω n ) a i X_{\alpha_B}(a)-\overline{X_{\alpha_B}(n-a)}=2\sqrt{-1}\sum_{i=0}^{n-1}B_1(x)_i(\omega_n)^{ai} XαB(a)XαB(na)=21 i=0n1B1(x)i(ωn)ai

发现
[ X α A ( a ) − X α A ( n − a ) ‾ ] [ X α B ( a ) − X α B ( n − a ) ‾ ] = [ 2 − 1 ∑ i = 0 n − 1 A 1 ( x ) i ( ω n ) a i ] [ 2 − 1 ∑ i = 0 n − 1 B 1 ( x ) i ( ω n ) a i ] = − 4 [ ∑ i = 0 n − 1 A 1 ( x ) i ( ω n ) a i ] [ ∑ i = 0 n − 1 B 1 ( x ) i ( ω n ) a i ] = − 4 ∑ i = 0 2 n − 2 ∑ j = 0 i A 1 ( x ) j B 1 ( x ) i − j ( ω n ) a i \begin{aligned} [X_{\alpha_A}(a)-\overline{X_{\alpha_A}(n-a)}][X_{\alpha_B}(a)-\overline{X_{\alpha_B}(n-a)}]&=[2\sqrt{-1}\sum_{i=0}^{n-1}A_1(x)_i(\omega_n)^{ai}][2\sqrt{-1}\sum_{i=0}^{n-1}B_1(x)_i(\omega_n)^{ai}]\\ &=-4[\sum_{i=0}^{n-1}A_1(x)_i(\omega_n)^{ai}][\sum_{i=0}^{n-1}B_1(x)_i(\omega_n)^{ai}]\\ &=-4\sum_{i=0}^{2n-2}\sum_{j=0}^iA_1(x)_jB_1(x)_{i-j}(\omega_n)^{ai}\\ \end{aligned} [XαA(a)XαA(na)][XαB(a)XαB(na)]=[21 i=0n1A1(x)i(ωn)ai][21 i=0n1B1(x)i(ωn)ai]=4[i=0n1A1(x)i(ωn)ai][i=0n1B1(x)i(ωn)ai]=4i=02n2j=0iA1(x)jB1(x)ij(ωn)ai
由于 A 1 ( x ) , B 1 ( x ) A_1(x),B_1(x) A1(x),B1(x)只有 0 ∼ ( n 2 − 1 ) 0\sim(\frac{n}{2}-1) 0(2n1)次项系数可能不为 0 0 0,因此对于式中的 ∑ j = 0 i A 1 ( x ) j B 1 ( x ) i − j \sum_{j=0}^iA_1(x)_jB_1(x)_{i-j} j=0iA1(x)jB1(x)ij,当 n − 1 < i ≤ 2 n − 2 n-1<i\le2n-2 n1<i2n2时:

  1. j ≤ i − 1 2 j\le\frac{i-1}{2} j2i1时,有 i − j ≥ i − i − 1 2 = i + 1 2 > n − 1 + 1 2 = n 2 i-j\ge i-\frac{i-1}{2}=\frac{i+1}{2}>\frac{n-1+1}{2}=\frac{n}{2} iji2i1=2i+1>2n1+1=2n,此时 B 1 ( x ) i − j = 0 B_1(x)_{i-j}=0 B1(x)ij=0 A 1 ( x ) j B 1 ( x ) i − j = 0 A_1(x)_jB_1(x)_{i-j}=0 A1(x)jB1(x)ij=0
  2. j > i − 1 2 j>\frac{i-1}{2} j>2i1时, j > n − 1 − 1 2 = n 2 − 1 j>\frac{n-1-1}{2}=\frac{n}{2}-1 j>2n11=2n1,此时 A 1 ( x ) j = 0 A_1(x)_j=0 A1(x)j=0 A 1 ( x ) j B 1 ( x ) i − j = 0 A_1(x)_jB_1(x)_{i-j}=0 A1(x)jB1(x)ij=0

综上,当 n − 1 < i ≤ 2 n − 2 n-1<i\le2n-2 n1<i2n2时, ∑ j = 0 i A 1 ( x ) j B 1 ( x ) i − j = 0 \sum_{j=0}^iA_1(x)_jB_1(x)_{i-j}=0 j=0iA1(x)jB1(x)ij=0。于是有
[ X α A ( a ) − X α A ( n − a ) ‾ ] [ X α B ( a ) − X α B ( n − a ) ‾ ] = − 4 ∑ i = 0 2 n − 2 ∑ j = 0 i A 1 ( x ) j B 1 ( x ) i − j ( ω n ) a i = − 4 ∑ i = 0 n − 1 ∑ j = 0 i A 1 ( x ) j B 1 ( x ) i − j ( ω n ) a i \begin{aligned} [X_{\alpha_A}(a)-\overline{X_{\alpha_A}(n-a)}][X_{\alpha_B}(a)-\overline{X_{\alpha_B}(n-a)}]&=-4\sum_{i=0}^{2n-2}\sum_{j=0}^iA_1(x)_jB_1(x)_{i-j}(\omega_n)^{ai}\\ &=-4\sum_{i=0}^{n-1}\sum_{j=0}^iA_1(x)_jB_1(x)_{i-j}(\omega_n)^{ai} \end{aligned} [XαA(a)XαA(na)][XαB(a)XαB(na)]=4i=02n2j=0iA1(x)jB1(x)ij(ωn)ai=4i=0n1j=0iA1(x)jB1(x)ij(ωn)ai
于是
X β ( a ) − X α ( a ) = [ ( ω n ) a + 1 ] ∑ i = 0 n − 1 ∑ j = 0 i A 1 ( x ) j B 1 ( x ) i − j ( ω n ) a i = [ X α A ( a ) − X α A ( n − a ) ‾ ] [ X α B ( a ) − X α B ( n − a ) ‾ ] − 4 [ ( ω n ) a + 1 ] = − [ ( ω n ) a + 1 ] [ X α A ( a ) − X α A ( n − a ) ‾ ] [ X α B ( a ) − X α B ( n − a ) ‾ ] 4 \begin{aligned} X_\beta(a)-X_\alpha(a)&=[(\omega_n)^a+1]\sum_{i=0}^{n-1}\sum_{j=0}^iA_1(x)_jB_1(x)_{i-j}(\omega_n)^{ai}\\ &=\frac{[X_{\alpha_A}(a)-\overline{X_{\alpha_A}(n-a)}][X_{\alpha_B}(a)-\overline{X_{\alpha_B}(n-a)}]}{-4}[(\omega_n)^a+1]\\ &=-\frac{[(\omega_n)^a+1][X_{\alpha_A}(a)-\overline{X_{\alpha_A}(n-a)}][X_{\alpha_B}(a)-\overline{X_{\alpha_B}(n-a)}]}{4} \end{aligned} Xβ(a)Xα(a)=[(ωn)a+1]i=0n1j=0iA1(x)jB1(x)ij(ωn)ai=4[XαA(a)XαA(na)][XαB(a)XαB(na)][(ωn)a+1]=4[(ωn)a+1][XαA(a)XαA(na)][XαB(a)XαB(na)]
于是有
X β ( a ) = X α ( a ) − [ ( ω n ) a + 1 ] [ X α A ( a ) − X α A ( n − a ) ‾ ] [ X α B ( a ) − X α B ( n − a ) ‾ ] 4 X_\beta(a)=X_\alpha(a)-\frac{[(\omega_n)^a+1][X_{\alpha_A}(a)-\overline{X_{\alpha_A}(n-a)}][X_{\alpha_B}(a)-\overline{X_{\alpha_B}(n-a)}]}{4} Xβ(a)=Xα(a)4[(ωn)a+1][XαA(a)XαA(na)][XαB(a)XαB(na)]
考虑到 α ( x ) = α A ( x ) α B ( x ) \alpha(x)=\alpha_A(x)\alpha_B(x) α(x)=αA(x)αB(x),于是有 X α ( a ) = X α A ( a ) X α B ( a ) X_\alpha(a)=X_{\alpha_A}(a)X_{\alpha_B}(a) Xα(a)=XαA(a)XαB(a)。于是我们可以先用 2 2 2DFT计算出 X α A ( a ) X_{\alpha_A}(a) XαA(a) X α B ( a ) X_{\alpha_B}(a) XαB(a),再用线性的时间求出 X β X_\beta Xβ,最后用 1 1 1IDFT计算出 β ( x ) \beta(x) β(x),最后再利用 β ( x ) \beta(x) β(x)的实部和虚部还原出 h ( x ) h(x) h(x)。这样做虽然进行了 3 3 3DFT,但每次DFT时多项式的项数是一开始提到的方法的一半,所以时间复杂度近似为一开始提到的方法的一半,即所谓的“ 1.5 1.5 1.5FFT”。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值