卷积
卷积的概念
回顾一下上周介绍过的卷积的概念:
对于两个序列
A → = ( A 0 , A 1 , . . . , A p − 1 , A p ) 、 B → = ( B 0 , B 1 , . . . , B m − 1 , B m ) \overrightarrow {A} = (A_0,A_1,...,A_{p-1},A_p)、\overrightarrow {B} = (B_0,B_1,...,B_{m-1},B_m) A=(A0,A1,...,Ap−1,Ap)、B=(B0,B1,...,Bm−1,Bm)
定义
C → = ( A 0 B 0 , A 1 B 0 + A 0 B 1 , . . . , A p B m ) \overrightarrow{C} = (A_0B_0,A_1B_0+A_0B_1,...,A_pB_m) C=(A0B0,A1B0+A0B1,...,ApBm)
写成求和的形式:
C j = ∑ i + k = j A i B k , 0 ≤ j ≤ p + m C_j=\sum _{i+k=j}A_iB_k,\ \ \ \ \ \ 0\leq j \leq p+m Cj=i+k=j∑AiBk, 0≤j≤p+m
则 C j C_j Cj 所组成的序列 C → = ( C 0 , C 1 , . . . , C p + m − 1 , C p + m ) \overrightarrow {C} = (C_0,C_1,...,C_{p+m-1},C_{p+m}) C=(C0,C1,...,Cp+m−1,Cp+m) 就是序列 A → 、 B → \overrightarrow {A}、\overrightarrow {B} A、B 线性卷积的结果。记为
C → = A → ∗ B → \overrightarrow {C}=\overrightarrow {A}* \overrightarrow {B} C=A∗B
刚开始光看这个定义容易让人摸不着头脑,我将从3个角度来解释卷积。
卷积的理解
1 多项式法
多项式法,也就是我们在 COMP9101 (Algorithm) Week 2 主定理和大数乘法这篇文章中提到的,建立序列 A → 、 B → \overrightarrow {A}、\overrightarrow {B} A、B 对应的多项式
P A ( x ) = A 0 + A 1 x + . . . + A p − 1 x p − 1 + A p x p P_A(x) = A_0+A_1x+...+A_{p-1}x^{p-1}+A_px^p PA(x)=A0+A1x+...+Ap−1xp−1+Apxp
P B ( x ) = B 0 + B 1 x + . . . + B m − 1 x m − 1 + B m x m P_B(x) = B_0+B_1x+...+ B_{m-1}x^{m-1}+B_mx^m PB(x)=B0+B1x+...+Bm−1xm−1+Bmxm
令 P C ( x ) = P A ( x ) ⋅ P B ( x ) P_C(x) = P_A(x)·P_B(x) PC(x)=PA(x)⋅PB(x) 我们可以得到
P C ( x ) = C 0 + . . . + C p + m − 1 x p + m − 1 + C p + m ⋅ x p + m P_C(x) = C_0+...+ C_{p+m-1}{x^{p+m-1}}+C_{p+m}·{x^{p+m}} PC(x)=C0+...+Cp+m−1xp+m−1+Cp+m⋅xp+m
写成加和的形式如下:
P C ( x ) = ∑ j = 0 p + m C j x j P_C(x) = \sum ^{p+m}_{j=0} C_jx^j PC(x)=j=0∑p+mCjxj
其中
C j = ∑ i + k = j A i B k , 0 ≤ j ≤ p + m C_j=\sum _{i+k=j}A_iB_k,\ \ \ \ \ \ 0\leq j \leq p+m Cj