子集反演

子集反演

对于两个集合的函数 \(f_S, g_S\):

\[f(S) = \sum_{T \subseteq S} g(T) \iff g(S) = \sum_{T \subseteq S} (-1)^{\lvert S \rvert - \lvert T \rvert} f(T) \]

\(\tt{Proof}\)

证明一下,从等式右侧开始推:

\[\begin{align*} \sum_{T \subseteq S} (-1)^{\lvert S \rvert - \lvert T \rvert} f(T) & = \sum_{T \subseteq S} (-1)^{\lvert S \rvert - \lvert T \rvert} \sum_{Q \subseteq T} g(Q) \\ & = \sum_Q g(Q) \sum_{Q \subseteq T \subseteq S} (-1)^{\lvert S \rvert - \lvert T \rvert} \end{align*} \]

后半部分求和与 \(Q\) 无关, 将后半部分剔除:

\[= \sum_Q g(Q) \sum_{ T \subseteq (S \setminus Q)} (-1)^{\lvert S \setminus Q \rvert - \lvert T \rvert} \]

记关于集合 \(P\) 的函数 \(\displaystyle F(P) = \sum_{T \subseteq P} (-1)^{\lvert P \rvert - \lvert T \rvert}\), 并且进行化简:

\[F(P) = \sum_{i = 0}^{\lvert P \rvert} \binom{\lvert P \rvert}{i} (-1)^{\lvert P \rvert - i} = \sum_{i = 0}^{\lvert P \rvert} (1 - 1)^{\lvert P \rvert} = 0^{\lvert P \rvert} \]

由此, 原式子的值为:

\[\sum_Q g(Q) \sum_{ T \subseteq (S \setminus Q)} (-1)^{\lvert S \setminus Q \rvert - \lvert T \rvert} = \sum_Q g(Q) \cdot F(S \setminus Q) = \sum_Q g(Q) \cdot 0^{\lvert S \setminus Q \rvert} \]

分析发现, 当且仅当 \(S \setminus Q = \emptyset\) 时有 \(0^0 = 1\), 此时 \(Q = S\), 对答案的贡献就是 \(g(S)\), 所以有:

\[\sum_Q g(Q) \cdot 0^{\lvert S \setminus Q \rvert} = g(S) \]

\(\mathcal{Q. E. D.}\)

应用

核心: 「包含」和「恰好」之间的转化.

待补.

posted @ 2025-01-06 20:28  Steven1013  阅读(40)  评论(0)    收藏  举报