FWT应用
我不知道 F W T FWT FWT的严格定义
百度百科和维基都不知道给一坨什么**东西
FWT(Fast Walsh Fransform),中文名快速沃尔什变换
然后我也不知道 F W T FWT FWT到底是什么
你们怎么念FWT的反正我念扶卧塔
F F T FFT FFT当然可以做多项式卷积
形如 C ( k ) = ∑ i + j = k f [ i ] g [ j ] C(k)=\sum_{i+j=k}f[i]g[j] C(k)=∑i+j=kf[i]g[j],很简单,大家都会
由于有这个性质所以也可做分治 F F T FFT FFT
但是如果把 i + j i+j i+j换一下操作符
变成 C ( k ) = ∑ i ? ? ? j = k f [ i ] g [ j ] C(k)=\sum_{i???j=k}f[i]g[j] C(k)=∑i???j=kf[i]g[j]
其中 ? ? ? ??? ???可以是 o r , a n d , x o r or,and,xor or,and,xor三种运算
这时就要用 F W T FWT FWT来做特殊卷积了
结论
类似 F F T FFT FFT,把当前多项式 A A A拆成前一半 A 0 A_0 A0和后一半 A 1 A_1 A1
注意不是奇数项和偶数项,只是前一半和后一半……(狗头保命)
也可知 F W T FWT FWT也只能处理长度为 2 2 2的次幂的多项式
or
F W T ( A ) = m e r g e ( F W T ( A 0 ) , F W T ( A 0 ) + F W T ( A 1 ) ) FWT(A)=merge(FWT(A_0),FWT(A_0)+FWT(A_1)) FWT(A)=merge(FWT(A0),FWT(A0)+FWT(A1))
I F W T ( A ) = m e r g e ( I F W T ( A 0 ) , I F W T ( A 0 ) − I F W T ( A 1 ) ) IFWT(A)=merge(IFWT(A_0),IFWT(A_0)-IFWT(A_1)) IFWT(A)=merge(IFWT(A0),IFWT(A0)−IFWT(A1))
and
F W T ( A ) = m e r g e ( F W T ( A 0 ) + F W T ( A 1 ) , F W T ( A 1 ) ) FWT(A)=merge(FWT(A_0)+FWT(A_1),FWT(A_1)) FWT(A)=merge(FWT(A0)+FWT(A1),FWT(A1))
I F W T ( A ) = m e r g e ( I F W T ( A 0 ) − I F W T ( A 1 ) , I F W T ( A 1 ) ) IFWT(A)=merge(IFWT(A_0)-IFWT(A_1),IFWT(A_1))