好久以前寫的,先粘上來
定義陣列
\(n=2^k\)
\(a=[a_0,a_1,a_2,a_3,...,a_]\)
令\(a_0=[a_0,a_1,a_2,...,a_]\)
且\(a_1=[a_,a_,..,a_]\)
即\(a_0\)為沒有最高位的部分,\(a_1\)為有二進位制最高位的部分
\(a\)可以用\(a=\\)表示
定義運算
\(a+b=[a_0+b_0,a_1+b_1,...,a_n+b_n]=\\)
\(a-b=[a_0-b_0,a_1-b_1,...,a_n-b_n]=\\)
\(a*b=[a_0*b_0,a_1*b_1,...,a_n*b_n]=\\)
\(a xor b=[\sum_a_i*a_j,\sum_a_i*a_j,...,\sum_a_i*a_j]\)
\(a and b=[\sum_a_i*a_j,\sum_a_i*a_j,...,\sum_a_i*a_j]\)
\(a or b=[\sum_a_i*a_j,\sum_a_i*a_j,...,\sum_a_i*a_j]\)
性質1交換率、結合率均滿足
\(cxor(a+b)=cxora+cxorb\)
\(cand(a+b)=canda+candb\)
\(cor(a+b)=cora+corb\)
性質2由於\(n-1\)和\(\frac n 2-1\)在二進位制下相差一位的特殊性質
\(axorb=\\)
\(aandb=\\)
\(aorb=\\)
\(fwt(a)=a(n=1)\)
n>1時
xor:\(fwt(a)=\\)
xor:\(dwt(a)=\ 2),dwt(\frac 2)\}\)
and:\(fwt(a)=\\)
and:\(dwt(a)=\\)
or:\(fwt(a)=\\)
or:\(dwt(a)=\\)
這跟fft遞迴樹是乙個道理的啊
fft要分奇偶遞迴樹先按最低位為0分兩段
到fwt裡啥順序都行,reverse都不用了
性質1.\(fwt(a\pm b)=fwt(a)\pm fwt(b) 線性性\)
2.\(fwt(a⊕b)=fwt(a)*fwt(b) (點乘)\)
3.\(dwt(fwt(a))=a\)
證明代入一下再根據性質一化簡一下,數學歸納法
模板鏈結
FWT 學習筆記
因為考試遇見了所以來學習一下,雖然好像之前有個神仙來講過,但啥都記不到了 相比fft的ci j k iaj b kc i sum a j b k ci j k i aj bk fwt其實很簡單 c i j k iaj b kc i sum a j b k ci j k i aj bk 其中 bigo...
FWT背板筆記
板子 背板子.jpg fwt 用於解決這樣的問題 c i sum a j times b k 其中 bigoplus 是一種二元運算子,如 or,and,xor 首先我們直接做複雜度顯然高達 4 n 或許可以利用一些列舉子集的技術做到 3 n 但是還是非常難以接受 於是我們考慮能否像 fft 那樣構...
FWT 學習總結
我理解的fwt是在二元運算意義下的卷積 目前比較熟練掌握的集合對稱差卷積 對於子集卷積和集合並卷積掌握不是很熟練 挖坑ing 那麼就先來談一談集合對稱差卷積吧 所謂集合對稱差卷積 就是h i sigma g j f k j k i 首先乙個很顯然的事情是如下結論 證明就是如果s是空集,答案為1,否則...