『学习笔记』数学

例题

FWT

考虑这样一个问题:

已知的是 \(a,b\) 序列,求解 \(c\) 序列,满足:\(c_i=\sum\limits_{j\otimes k=i} a_jb_k\)

其中 \(\otimes\) 是某个二进制运算。

首先我们希望的是对于一个卷积操作,将其类似于 DFT,然后 IDFT 求解。

那么就需要考虑构造求点积的操作。

具体来说,构造:

\[X_{i}=\sum\limits_{j=0}^{n} w_{i,j} x_j \]

求解出 \(A,B\),以及满足:

\[C_{i}=A_iB_i \]

也就是说:

\[\sum\limits_{j=0}^{n} w_{i,j}c_j=\sum\limits_{j=0}^{n} w_{i,j}a_j\sum\limits_{k=0}^{n} w_{i,k}b_k \]

\[\sum\limits_{j=0}^{n} w_{i,j}c_j=\sum\limits_{j=0}^{n} \sum\limits_{k=0}^{n} w_{i,j}w_{i,k}a_jb_k \]

观察左右两式,可得:

\[w_{i,j}w_{i,k}=w_{i,j \otimes k} \]

考虑二进制运算的优良性质:

\(p\) 的二进制表达为 \(p_0p_1p_2\dots\)

那么只需要 \(w_{0/1,0/1}\) 满足即可构造:

\[w_{i,j}=w_{i_0,j_0}w_{i_1,j_1}w_{i_2,j_2}\dots \]

不难发现此时 \(w_{i,j}\) 也满足上述性质。

那么对于某种二进制运算 \(\otimes\) 只需要构造出 \(w_{0/1,0/1}\) 即可。

对于点积后,还原操作也就是 \(w\) 矩阵的逆矩阵。

构造 \(2\times 2\)\(01\) 矩阵满足是 \(w_{0/1,0/1}\) 的逆矩阵后,类似于前面的构造即可。

都是简单而不繁琐的。

接下来问题在于快速求解 \(A\),和还原 \(c\)

先将 \(n\) 补齐到二的幂次减一,然后这个考虑讨论二进制首位,然后分治递归子问题计算即可。

复杂度 \(O(n \log n)\)

而对于扩展到 \(k\) 维空间是简单的,这里不再阐述。

符号化方法

定义组合类 \(\mathcal{A}\) 表示某个组合意义集合,其中每个元素都是某个组合排列,对于每个 \(a \in \mathcal{A}\) 都会映射到一个非负整数,记为 \(|a|\)

定义符号化方法的普通生成函数(OGF)为:

\[A(x)=\sum\limits_{a \in \mathcal{A}} x^{|a|}=\sum\limits_{i=0}^{+\infty} a_ix^i \]

那么可以类比普通生成函数定义出加法笛卡尔积

具体来说,加法就是:

\[C(x)=A(x)+B(x) \]

\[\mathcal{C}=\mathcal{A}+\mathcal{B} \]

而笛卡尔积就是:

\[C(x)=A(x)\times B(x)=\sum\limits_{(a,b) \in (\mathcal{A,B})} x^{|(a,b)|}=\sum\limits_{(a,b) \in (\mathcal{A,B})} x^{|a|+|b|} \]

\[\mathcal{C}=\mathcal{A}\times \mathcal{B} \]

同时定义类似单位元,注意是类似,不可直接当单位元使用:

\(\mathcal{E}\),满足内部元素有且只有一个,并且其映射到的值是 \(0\),即其 \(E(x)=1\)

定义任意组合类 \(\mathcal{A}\)\(0\) 次幂,\(\mathcal{A}^0=\mathcal{E}\)

无标号经典构造(也即无标号体系)

1. \(\mathrm{Sequence}\) 构造

\(\mathrm{Sequence}\) 构造生成了所有可能组合。

也就是生成不定长序列:

\[\mathrm{SEQ}(\mathcal{A})=\mathcal{E}+\mathcal{A}+\mathcal{A}\times \mathcal{A}+\mathcal{A}\times \mathcal{A} \times \mathcal{A}+\dots \]

\[\mathcal{B}=\mathrm{SEQ}(\mathcal{A}) \]

\[B(x)=\sum\limits_{i=0}^{+\infty} A(x)^i=\dfrac{1}{1-A(x)} \]

2. \(\mathrm{Multiset}\) 构造

\(\mathrm{Multiset}\) 构造生成了所有可能组合。

\[\mathrm{MSET}(\mathcal{A})=\prod\limits_{a\in \mathcal{A}} \mathrm{SEQ}(\{ a \}) \]

\[\mathcal{B}=\mathrm{MSET}(\mathcal{A}) \]

\[B(x)=\prod\limits_{a\in \mathcal{A}} \left( 1-x^{|a|} \right)^{-1}=\prod\limits_{i=1}^{+\infty} \left( 1-x^i \right)^{-a_i} \]

将等式两边先求 \(\mathrm{ln}\) 再求 \(\mathrm{exp}\)

\[B(x)=\mathrm{exp}\left(\sum\limits_{i=1}^{+\infty} -a_i\mathrm{ln}\left( 1-x^i \right)\right) \]

\[B(x)=\mathrm{exp}\left(\sum\limits_{i=1}^{+\infty} a_i\sum\limits_{j \geq 1} \dfrac{x^{ij}}{j} \right) \]

\[B(x)=\mathrm{exp}\left(\sum\limits_{i \geq 1} \dfrac{A\left(x^{i}\right)}{i} \right) \]

我们称这种操作为 \(\mathrm{Exp}\),写作:

\[\mathrm{Exp}(A(x))=B(x)=\mathrm{exp}\left(\sum\limits_{i \geq 1} \dfrac{A\left(x^{i}\right)}{i} \right) \]

3. \(\mathrm{Cycle}\) 构造

\(\mathrm{Cycle}\) 构造生成了所有可能环本质不同的组合。

\(C_k(x)\) 表示长度为 \(k\) 的环组成的生成函数根据\(\mathrm{Burside}\) 引理。

\[C_k(x)=\dfrac{1}{k} \sum\limits_{i=0}^{k-1}A\left(x^{k/\gcd(k,i)}\right)^{\gcd(k,i)} \]

\[C_k(x)=\dfrac{1}{k} \sum\limits_{d|k}\varphi(d)A\left(x^{d}\right)^{k/d} \]

在推导 \(C(x)\)

\[C(x)=\sum\limits_{k\geq 1} \dfrac{1}{k} \sum\limits_{d|k}\varphi(d)A\left(x^{d}\right)^{k/d} \]

\[C(x)=\sum\limits_{d\geq 1} \dfrac{\varphi(d)}{d} \sum\limits_{k\geq 1} \dfrac{A\left(x^{d}\right)^{k}}{k} \]

\[C(x)=\sum\limits_{d\geq 1} \dfrac{\varphi(d)}{d} \ln \left(\dfrac{1}{1-A\left(x^{d}\right)} \right) \]

可以通过多项式 \(\ln\) 求出 \(\ln \left(\dfrac{1}{1-A(x)} \right)\),然后暴力枚举有值的 \(O(n/d)\) 位。

求和暴力累加。

4. \(\mathrm{Power\ Set}\) 构造

\(\mathrm{Power\ Set}\) 构造生成了所有可能 \(01\) 背包组合。

换而言之,即:

\[\mathrm{PSET}(\mathcal{A})=\prod_{a\in \mathcal{A}} \left( \{\mathcal{E} \}+\{\mathcal{a} \} \right)=\{\mathcal{B} \subseteq \mathcal{A}\} \]

\[B(x)=\prod_{a\in \mathcal{A}} \left(1+x^{|a|}\right)=\prod_{i\geq 0} \left(1+x^{i}\right)^{a_i} \]

同理,两边取 $\ln $ 再取 \(\exp\)

\[B(x)=\exp\left(\sum_{i\geq 0} a_i \ln \left(1+x^{i}\right)\right) \]

\[B(x)=\exp\left(\sum_{i\geq 0} a_i \sum_{j \geq 1} \dfrac{(-1)^{j-1}x^{ij}}{j}\right) \]

\[B(x)=\exp\left(\sum_{j \geq 1} \dfrac{(-1)^{j-1}A\left(x^{j}\right)}{j}\right) \]

有标号经典构造(也即有标号体系)

定义符号化方法的指数生成函数(EGF)为:

\[A(x)=\sum\limits_{a \in \mathcal{A}} \dfrac{x^{|a|}}{|a|!}=\sum\limits_{i=0}^{+\infty} a_i\dfrac{x^i}{i!} \]

同理可以定义出加法和笛卡尔积,这里不再阐述。

1. \(\mathrm{Sequence}\) 构造

\(\mathrm{Sequence}\) 构造生成了不定长度序列的组合。

类似无标号情况:

\[\mathrm{SEQ}(\mathcal{A})=\mathcal{E}+\mathcal{A}+\mathcal{A}\times \mathcal{A}+\mathcal{A}\times \mathcal{A} \times \mathcal{A}+\dots \]

\[\mathcal{B}=\mathrm{SEQ}(\mathcal{A}) \]

\[B(x)=\sum\limits_{i=0}^{+\infty} A(x)^i=\dfrac{1}{1-A(x)} \]

2. \(\mathrm{Pointing}\) 构造

\(\mathrm{Pointing}\) 构造的组合意义就是拎出一个点作为图中特殊点。

即:

\[\mathcal{B}=\mathrm{PNT}(\mathcal{A}) \]

\[B(x)=xA^{\prime}(x) \]

3. \(\mathrm{Set}\) 构造

\(\mathrm{Set}\) 构造出了不可重集的组合。

\[\mathcal{B}=\mathrm{SET}(\mathcal{A}) \]

\[B(x)=\sum\limits_{i\geq 1} \dfrac{A(x)^i}{i!}=\mathrm{exp}(A(x)) \]

4. \(\mathrm{Cycle}\) 构造

\(\mathrm{Cycle}\) 构造出了不可重集的组合。

\[\mathcal{B}=\mathrm{CYC}(\mathcal{A}) \]

\[B(x)=\sum\limits_{i\geq 1} \dfrac{A(x)^i}{i}=\ln \dfrac{1}{1-A(x)} \]

另外,如果 \(G\) 为全体翻转置换构成的群,那么有:

\[B(x)=A(x)+\sum\limits_{i\geq 2} \dfrac{A(x)^i}{2i}=\dfrac{1}{2}\left(\ln \dfrac{1}{1-A(x)}+A(x)\right) \]

ok,至此感觉也没啥好讲的了。

posted @ 2023-11-24 12:53  Detect-Perplexity  阅读(33)  评论(0)    收藏  举报