定义
有时候我们会研究定义域在集合上的函数:考虑一个固定的全集 \(U\) 和其幂集 \(2^U\),我们有一些 \(2^U\rightarrow F\) 的函数,其中 \(F\) 是某个域。对于定义在集合上的函数 \(f\),参照序列的生成函数,我们定义 \(f\) 的生成函数为 \(\displaystyle\sum_{S\in 2^U}f(S)x^{S}\)。这里的 \(x^S\) 只是一个形式上的记号。个人感觉集合幂级数主要还是能够更方便的表示一个集合函数,并不能像形式幂级数那样方便的写出封闭形式再展开。但是我们可以参照形式幂级数给集合幂级数定义运算。
运算
下文用对应的小写字母和大写字母表示集合函数和其集合幂级数,默认所有函数的全集 \(U\) 是相同的(否则无法进行运算)。
有时候我们也可以把集合幂级数的自变量看作一个二进制数。
加法
同形式幂级数,集合幂级数的加法就是相应位置相加:
\[F=\sum_{S} f(S)x^S\\ G=\sum_{S} g(S)x^S\\ F+G=\sum_{S} (f(S)+g(S))x^S \]点乘
同形式幂级数,集合幂级数的点乘为对应位置相乘:
\[F\cdot G=\sum_{S} f(S)g(S)x^S \]卷积
考虑形式幂级数的加法卷积,循环卷积以及迪利克雷生成函数的迪利克雷卷积,我们发现在进行卷积操作之前我们先要对 \(x^S\) 的指数部分定义一个二元运算 \(\star\):
\[F\star G=\sum_{S,T} f(S)g(T)x^{S\star T}\\ [x^P](F\star G)=\sum_{S\star T=P}f(S)g(T) \]\(2^U\) 上的二元运算一般来说有四种:交,并,对称差 和 不相交集并。
其中前三种分别对应二进制上的 按位与,按位或,按位异或,和 FWT & FMT 有关。
交并对称差卷积
略
子集卷积
定义不相交集并为
\[x^L\cdot x^R=\begin{cases} 0 & (L\cap R\ne \varnothing)\\ x^{L\cup R} & (L\cap R=\varnothing) \end{cases} \]咕咕咕。