ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

[学习笔记]容斥?反演?

2022-03-30 10:04:08  阅读:146  来源: 互联网

标签:color text sum 容斥 笔记 反演 choose norm


\[\color{red}{\textsf{小游者,真神人也,左马桶,右永神,会执利笔破邪炁,何人当之?}} \\ \begin{array}{|} \hline \color{pink}{\text{A small swimmer is a God.}} \\ \color{pink}{\text{The left toilet and the right eternal God}} \\ \color{pink}{\text{can break the evil energy with a sharp pen.}} \\ \color{pink}{\text{Who can resist him? }} \\ \hline \end{array} \\ \begin{array}{|} \hline \color{green}{\text{小遊者は、神であり、左便器、右永神であり}} \\ \color{green}{\text{鋭いペンを持って真実を突き刺している。誰が彼に抵抗できるだろうか? }} \\ \hline \end{array} \\ \begin{array}{|} \hline \color{lightblue}{\text{Petit voyageur, est Dieu aussi, toilettes gauche, Dieu éternel droit,}} \\ \color{lightblue}{\text{peut tenir un stylo tranchant pour briser le mal, qui devrait le faire?}} \\ \hline \end{array} \\ \begin{array}{|} \hline \color{purple}{\text{Der Direktor ist wirklich ein Gott}} \\ \color{purple}{\text{mit einer Toilette links und Yongshen rechts}} \\ \color{purple}{\text{der einen spitzen Stift hält}} \\ \color{purple}{\text{um die Wahrheit zu durchdringen.}} \\ \color{purple}{\text{Wer kann ihm widerstehen? }} \\ \hline \end{array} \\ \begin{array}{|} \hline \color{cyan}{\text{Ein kleiner Schwimmer ist ein Gott.}} \\ \color{cyan}{\text{Die linke Toilette und der rechte ewige Gott können }} \\ \color{cyan}{\text{die böse Energie mit einem scharfen Stift brechen.}} \\ \color{cyan}{\text{Wer sollte es sein?}} \\ \hline \end{array} \\ \color{red}{\textsf{对曰:“无人,狗欲当之,还请赐教!”}} \\ \newcommand\brak[1]{\left({#1}\right)} \newcommand\Brak[1]{\left\{{#1}\right\}} \newcommand\d[0]{\text{d}} \newcommand\string[2]{\genfrac{\{}{\}}{0pt}{}{#1}{#2}} \newcommand\down[2]{{#1}^{\underline{#2}}} \newcommand\ddiv[2]{\left\lfloor\frac{#1}{#2}\right\rfloor} \newcommand\udiv[2]{\left\lceil\frac{#1}{#2}\right\rceil} \newcommand\lcm[0]{\operatorname{lcm}} \newcommand\set[1]{\left\{{#1}\right\}} \newcommand\ceil[1]{\left\lceil{#1}\right\rceil} \newcommand\floor[1]{\left\lfloor{#1}\right\rfloor} \newcommand\rhs[1]{\;\text{Rhs}\;#1} \newcommand\lhs[1]{\;\text{Lhs}\;#1} \newcommand\Vec[1]{\vec{\mathbf{#1}}} \newcommand\rank[0]{\text{rank}} \newcommand\group[1]{\left\langle\right\rangle} \newcommand\norm[1]{\left|{#1}\right|} \]

  部分内容也是 2013 年国家集训队论文《浅谈容斥原理》[1]中的。还有一些来源于《炫酷反演魔术》[2]。另外有一些来源于 \(\sf Quack\) 的课件,最后还有一些杂烂文章就是来源于我自己了......

  不一定完结,随机更新。

基本容斥

  假设有 \(n\) 个性质 \(P_1,P_2,\cdots,P_n\),在全集 \(U\) 中满足这些性质的元素分别为 \(S_1,S_2,\cdots,S_n\).

  最基本的容斥形式如下:

\[\left|\bigcup_{i=1}^n S_i\right|=\sum_i|S_i|-\sum_{i<j}|S_i\cap S_j|+\sum_{i<j<k}|S_i\cap S_j\cap S_k|-\cdots+(-1)^{n-1}|S_1\cap S_2\cap S_3\cdots \cap S_n| \]

  考虑一个属于 \(T_1,T_2\cdots,T_m\) 的元素会被计算多少次:

\[\sum_{i=1}^m (-1)^{i-1}{m\choose i}=-\brak{(1-1)^m-1}=1 \]

  然后,我们可以稍加推广,得到另外的一个形式:

\[\norm{\bigcap_{i=1}^n S_i}=\norm U-\norm{\bigcup_{i=1}^n \bar{S_i}} \]



  举个例子:错位排列。

  对于性质 \(P_i\),其表示 \(\sigma_i\neq i\),而我们的目标是求 \(\displaystyle \norm{\bigcap_{i=1}^n S_i}\),根据上面的容斥形式,需要用到 \(\bar{S_i}\),其表示满足 \(\sigma_i=i\) 的所有排列,此时我们可以进行容斥了:

\[\begin{aligned} \norm{\bigcap_{i=1}^n S_i}&=\norm U-\norm{\bigcup_{i=1}^n \bar{S_i}} \\ &=n!-\sum_{t=1}^n(-1)^{t-1}\sum_{i_1<i_2<i_3\cdots<i_t}\norm{\bigcap_{k=1}^t S_{i_k}} \\ &=n!-\sum_{t=1}^n(-1)^{t-1}\sum_{i_1<i_2<i_3\cdots<i_t}(n-t)! \\ &=n!-\sum_{t=1}^n(-1)^{t-1}{n\choose t}(n-t)! \\ &=n!-\sum_{t=1}^n(-1)^{t-1}\frac{n!}{t!} \\ &=n!+\sum_{t=1}^n(-1)^t\frac{n!}{t!} \\ &=n!\sum_{t=0}^n(-1)^t\frac{n!}{t!} \\ \end{aligned} \]

  化简的关键在于我们发现无论取多少个集合的交,交的大小都只和集合个数有关,这也是错排的通项公式是非指数级的关键。



二项式反演

  前面的公式,其核心还是最开始那个证明的式子:

\[\sum_{i=1}^m (-1)^{i-1}{m\choose i}=-\brak{(1-1)^m-1}=1 \]

  如果你再细心一点,将会发现,同一行的组合数交错和为 \(0\),即:

\[\sum_{i=0}^m (-1)^i{m\choose i}=0 \]

  严谨地,实际上

\[\sum_{i=0}^m (-1)^i{m\choose i}=[m=0] \]

  再来看看前面的错排,如果设 \(f(n)\) 表示任意一个排列方案数,\(g(n)\) 表示满足了 \(P\) 中的 \(n\) 个的方案数,那么,我们枚举到底是哪 \(n\) 个错开,就可以由 \(g\) 得到 \(f\):

\[f(n)=\sum_{i=0}^n{n\choose i}g(i) \]

  现在的问题是:\(f(n)=n!\),而 \(g(n)\) 不知道,也就是说,我们想要从 \(f\) 推到 \(g\),但是目前只能由 \(g\) 得到 \(f\).

  但是没有关系,推一推式子,设 \(\displaystyle g(n)=\sum_{i=0}^n{n\choose i}\lambda(i)f(i)\),其中 \(\lambda(i)\) 表示容斥系数,那么

\[\begin{aligned} g(n)&=\sum_{i=0}^n\lambda(i){n\choose i}\sum_{j=0}^i{i\choose j}g(j) \\ &=\sum_{i=0}^n\sum_{j=0}^i\lambda(i){n\choose i}{i\choose j}g(j) \\ &=\sum_{i=0}^n\sum_{j=0}^i\lambda(i){n\choose j}{n-j\choose i-j}g(j) \\ &=\sum_{j=0}^n{n\choose j}\sum_{i=j}^n\lambda(i){n-j\choose i-j}g(j) \end{aligned} \]

  然后就会发现,需要满足 \(\displaystyle {n\choose j}\sum_{i=j}^n\lambda(i){n-j\choose i-j}=[j=n]=[n-j=0]\),显然 \(\displaystyle{n\choose j}\neq 0(j\in [0,n]\cap\Z)\),因此,\(\displaystyle \sum_{i=j}^n\lambda(i){n-j\choose i-j}=[j=n]=[n-j=0]\),于是:

\[\displaystyle \sum_{i=j}^n\lambda(i){n-j\choose i-j}=\sum_{i=0}^{n-j}(-1)^i{n-j\choose i} \\ \Rightarrow \sum_{i=0}^{n-j}\lambda(i+j){n-j\choose i}=\sum_{i=0}^{n-j}(-1)^i{n-j\choose i} \]

  因此,\(\lambda(i+j)=(-1)^i\),即 \(\lambda(i)=(-1)^{i-j}\),你发现消不了 \(-j\) 这一项,但是没有关系,可以将右边的 \((-1)^i\) 改写成 \((-1)^{n-j-i}\),此时你会发现 \(\lambda(i+j)=(-1)^{n-i-j}\),因此 \(\lambda(i)=(-1)^{n-i}\).

  其实还有更简单的证明:

\[f(n)=\sum_{i=0}^n\frac{n!}{i!(n-i)!}g(i)\Rightarrow\frac{f(n)}{n!}=\sum_{i=0}^n\frac{g(i)}{i!}\times \frac{1}{(n-i)!} \]

  因此,有

\[\hat F=\hat G\times e^x\Rightarrow \hat G=\hat F\times e^{-x}\Rightarrow \frac{g(n)}{n!}=\sum_{i=0}^n\frac{(-1)^{n-i}}{(n-i)!}\frac{f(i)}{i!}\Rightarrow g(n)=\sum_{i=0}^n(-1)^{n-i}{n\choose i}f(i) \]

  两步解决(

  至此,我们得到了二项式反演的一个形式:

\[f(n)=\sum_{i=0}^n{n\choose i}g(i)\Leftrightarrow g(n)=\sum_{i=0}^{n}(-1)^{n-i}{n\choose i}f(i) \]

  另外一个形式:

\[f(n)=\sum_{i=0}^n(-1)^i{n\choose i}g(i)\Leftrightarrow g(n)=\sum_{i=0}^n(-1)^i{n\choose i}f(i) \]

数论中的容斥原理

  考察 \(\varphi(n)=\norm{\set{x|1\le x\le n\land\gcd(x,n)=1}}\),要计算 \(\varphi(n)\),我们可以用 \(\displaystyle n=\prod_{i=1}^c p_i^{t_i}\) 中 \(n\) 的所有质因子来进行容斥 —— 因为所谓 \(\gcd(x,n)=1\),实际上就是 \(x\) 不含有任何一个 \(p_i\),定义性质 \(P_i\) 表示元素不含有质因子 \(p_i\),那么,目标是 \(\displaystyle \norm{\bigcap_{i=1}^c S_i}\),又可以进行容斥:

\[\varphi(n)=\displaystyle \norm{\bigcap_{i=1}^c S_i}=\norm U-\norm{\bigcup_{i=1}^c \bar{S_i}}=n-\sum_i\frac{n}{p_i}+\sum_{i<j}\frac{n}{p_ip_j}-\cdots+(-1)^c\frac{n}{\prod_{i=1}^c p_i} \\ \Rightarrow \varphi(n)=n\prod_{i=1}^n \brak{1-\frac{1}{p_i}} \]

  这就是欧拉公式了。

  当然,如果你足够细心,你会发现我们实际上只在质数上进行容斥,并且在容斥的过程中,取的质数次数均为一次,因此这些质数任意选出一些,他们的乘积仍然是一个__无平方因子数__,而无平方因子数的容斥系数,显然只和其含有多少个质因数有关,因此,我们可以在正整数集上,再定义一个专门针对无平方因子数的函数,它的正负号取决于无平方因子数含有的质数个数,这样,我们就得到了莫比乌斯函数:

\[\mu(n)=\begin{cases} 1&n=1 \\[2ex] (-1)^k&n=\prod_{i=1}^kp_i \\[2ex] 0&\text{otherwise} \end{cases} \]

  因此我们可以得到另外的一个关于 \(\varphi(n)\) 的表达式:\(\displaystyle \varphi(n)=\sum_{d\mid n}\mu(d)\frac{n}{d}\).

概率论中的容斥

  对于__同一概率空间中__的事件 \(A_1,A_2,\cdots,A_n\),依然存在相似的容斥原理:

\[\text{P}\brak{\bigcup_{i=1}^nA_i}=\sum_{i}\text{P}(A_i)-\sum_{i<j}\text{P}(A_i\cap A_j)+\sum_{i<j<k}\text{P}(A_i\cap A_j\cap A_k)-\cdots+(-1)^{n-1}\text{P}\brak{\bigcap _{i=1}^n A_i} \]

  对于概率只和事件个数有关,那么还可以简化为:

\[\text{P}\brak{\bigcup _{i=1}^n A_i}=\sum_{i=1}^n(-1)^{i-1}{n\choose i}a_i \]

一般形式的容斥原理

  对于两个关于集合的函数 \(f(S),g(S)\),若

\[f(S)=\sum_{T\subset S}g(T) \]

  那么就有

\[g(S)=\sum_{T\subset S}(-1)^{\norm S-\norm T}f(T) \]

  另外一个形式:

\[f(S)=\sum_{T\supset S}g(T)\Leftrightarrow g(S)=\sum_{T\supset S}(-1)^{\norm S-\norm T}f(T) \]

  这个形式只需要将上面取补集即可。

  这两个东西也被称为子集反演。

MinMax容斥(MinMax反演)

  这个东西就是可以让 \(\min\) 和 \(\max\) 到处换过来换过去。最基本的式子:

\[\max(S)=\sum_{T\subset S}(-1)^{\norm T+1}\min(T) \\ \min(S)=\sum_{T\subset S}(-1)^{\norm T+1}\max(T) \]

  证明就考虑每一项是否能对上,由于两个式子长得差不过,就证上面那个。

  考虑当前元素是 \(S\) 中第 \(k\) 大的,那么这个元素左边的系数就是 \([k=1]\),右边的系数,它要作为 \(T\) 中最小的,就是只在它或者比它大的元素中选,因此右边的系数是 \(\displaystyle \sum_{i=1}^{k}(-1)^{i+1}{k-1\choose i-1}=\sum_{i=0}^{k-1}(-1)^{i+2}{k-1\choose i}=\sum_{i=0}^{k-1}(-1)^{i}{k-1\choose i}=[k-1=0]=[k=1]\),得证。

  它还可以推广为 \(\rm kthmax\),设 \(\text{kthmax}(S)\) 表示 \(S\) 中第 \(k\) 大的,它依然可以使用 \(\min\) 来表达,至于容斥系数,考虑使用待定系数法来解,假设当前的元素是第 \(p\) 大的,那么我们要解的是

\[\begin{aligned}{} [p=k]&=\sum_{i=1}^p\lambda(i){p-1\choose i-1} \\ &=\sum_{i=0}^{p-1}\alpha(i){p-1\choose i}&{\alpha(i)=\lambda(i+1)} \\ \end{aligned} \]

  将其二项式反演,可以得到

\[\alpha(p-1)=\sum_{i=0}^{p-1}(-1)^{p-1-i}{p-1\choose i}[i=k-1]=(-1)^{p-k}{p-1\choose k-1} \]

  因此 \(\displaystyle \lambda(i)=\alpha(i-1)=(-1)^{i-k}{i-1\choose k-1}\),所以可以得到 \(\rm kthmax\) 的式子:

\[\text{kthmax}(S)=\sum_{T\subset S,\norm T\ge k}(-1)^{\norm T-k}{\norm T-1\choose k-1}\min(T) \]

  当然,它也是可以用在期望上面的:

\[E(\max(S))=\sum_{T\subset S}(-1)^{\norm T+1}E(\min(T)) \]

  然后它就可以做题了。

先写到这里

  还有的斯特林反演之类的东西......




  1. 作者:王迪(成都七中) ↩︎

  2. 作者:\(\sf VFleaKing\)​ ↩︎

标签:color,text,sum,容斥,笔记,反演,choose,norm
来源: https://www.cnblogs.com/Arextre/p/16075537.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有