多维卷积

异或卷积的本质就是 \(n\) 维循环卷积。

二维卷积

可以理解为对于二维数组 \(f\) 和二维数组 \(g\) 求二维数组 \(h\)

\[h_{i,j} = \sum_{a+b=i} \sum_{c+d=j} f_{a,c} \times g_{b,d}\]

这个 \(h\) 就是 \(f\)\(g\) 的二维卷积。

构造生成函数数组 \({F_i}, {G_i}, {H_i}\) ,满足 \(F_i = \sum_{j} f_{i,j} x^j\) ,类似地定义 \({G_i}\)\({H_i}\) ,那么有:

\[H_i = \sum_{a+b=i} F_a \times G_b\]

其中 \(F_a \times G_b\) 就是多项式卷积。

不妨把 \(F, G, H\) 的每一位所对应的多项式看做普通的元素,那么 \(H\) 就是 \(F\)\(G\) 的卷积,傅里叶变换在这里仍然是可以定义的。

高维卷积

二维卷积的做法完全可以推广到高维卷积,对于两个从向量到数的映射 \(F, G\) ,定义其卷积 \(H\) 满足:

\[H_c = \sum_{a+b=c} F_a \times G_b\]

其中 \(a, b, c\) 都是高维向量。

事实上异或卷积就是一个高维卷积(循环卷积),每一维的长度都是二,根据异或卷积的实现不难推广到所有高维卷积的实现。