概念
類似多項式卷積,把下標相加換成下標做位運算,同樣可以在的效率內求出。
思想
或和與比較簡單,重點考慮異或。
對於異或卷積,構造。
如果已知,我們可以用遞歸的方式計算,其中和分別表示的前位和後位,效率。
可以利用上面式子,用歸納法證明。
於是我們只需要對分別做,把對應位置相乘,即可得到,剩下的問題是如何把它變爲原來的。
還是考慮遞歸,把上面的式子逆過來得到
同樣可以在時間內算出。
類似多項式卷積,把下標相加換成下標做位運算,同樣可以在O(nlogn)的效率內求出。
或和與比較簡單,重點考慮異或。
對於異或卷積,構造FWT(A)[i]=∑j=02n−1(−1)bitcount(iandj)。
如果已知A,我們可以用遞歸的方式計算FWT(A):FWT(A)=(FWT(A0)+FWT(A1),FWT(A0)−FWT(A1)),其中A0和A1分別表示A的前2n−1位和後2n−1位,效率O(nlogn)。
可以利用上面式子,用歸納法證明FWT(AxorB)=FWT(A)×FWT(B)。
於是我們只需要對A,B分別做FWT,把對應位置相乘,即可得到FWT(AxorB),剩下的問題是如何把它變爲原來的(AxorB)。
還是考慮遞歸,把上面的式子逆過來得到
IFWT(A)=((IFWT(A0)+IFWT(A1))/2,(IFWT(A0)−IFWT(A1))/2)
同樣可以在O(nlogn)時間內算出。