容斥原理&错位排列!!!


前言

@

声明:此博客被海盗队长信奥怪猫侠攻击了!!! 这就是为什么你能看见惊人的300+浏览量(doge)

此博客内容曾被编者手滑删除(本想点取消的呢),要重新打了呜呜呜┭┮﹏┭┮。


容斥原理

容斥原理基础

为了深入理解,咱先举个栗子

现有15人爱吃土豆,8人爱吃马铃薯,而爱吃土豆和马铃薯的共有4人,问只爱吃一种的人共有多少人。

只要你今天带了脑子看此博客, 你就会惊奇的发现:这个问题的答案不就是15+8+4=2715+8+4=27吗?(当然不是,真要较真扣题目字眼我也没办法doge)

好吧言归正传,答案便是15+84=1915+8-4=19人。

如果我再加一个番茄呢?

为了叙述方便,我们把喜欢土豆、马铃薯、番茄的personperson集合分别用 A,B,CA,B,C 表示,则personperson总数等于 ABC|A\cup B\cup C|。刚才已经讲过,如果把这三个集合的元素个数 A,B,C|A|,|B|,|C| 直接加起来,会有一些元素重复统计了,因此需要扣掉 AB|A\cap B|,BC|B\cap C|,CA|C\cap A|,但这样一来,又有一小部分多扣了,需要加回来,即 ABC|A\cap B\cap C|。即

$$|A\cup B\cup C|=|A|+|B|+|C|-|A\cap B|-|B\cap C|-|C\cap A|+|A\cap B\cap C| $$

把上述问题推广到一般情况,就是我们熟知的容斥原理

容斥原理的计算

全集 UU 即为 1n1\sim n 的排列,U=n!|U|=n!;属性就是 PiiP_i\neq i. 套用补集的公式,问题变成求 i=1nSi\left|\bigcup_{i=1}^n\overline{S_i}\right| .

可以知道,Si\overline{S_i} 的含义是满足 Pi=iP_i=i 的排列的数量。用容斥原理把问题式子展开,需要对若干个特定的集合的交集求大小,即:

i=1kSai\left|\bigcap_{i=1}^{k}S_{a_i}\right|

其中省略了 ai<ai+1a_i<a_{i+1} 的条件以方便表示。上述 kk 个集合的交集表示有 kk 个变量满足 Pai=aiP_{a_i}=a_i 的排列数,而剩下 nkn-k 个数的位置任意,因此排列数:

i=1kSai=(nk)!\left|\bigcap_{i=1}^{k}S_{a_i}\right|=(n-k)!

那么选择 kk 个元素的方案数为 (nk)\dbinom{n}{k},因此有:

$$\begin{aligned} \left|\bigcup_{i=1}^n\overline{S_i}\right| &=\sum_{k=1}^n(-1)^{k-1}\sum_{a_{1,\cdots,k} }\left|\bigcap_{i=1}^{k}S_{a_i}\right|\\ &=\sum_{k=1}^n(-1)^{k-1}\dbinom{n}{k}(n-k)!\\ &=\sum_{k=1}^n(-1)^{k-1}\frac{n!}{k!}\\ &=n!\sum_{k=1}^n\frac{(-1)^{k-1} }{k!} \end{aligned}$$

因此 nn 的错位排列数为:

$$D_n=n!-n!\sum_{k=1}^n\frac{(-1)^{k-1} }{k!}=n!\sum_{k=0}^n\frac{(-1)^k}{k!} $$

错位排列数列的前几项为 0,1,2,9,44,265OEISA0001660,1,2,9,44,265(OEIS A000166)

容斥原理模型

接着我们尝试抽象出容斥原理的模型:

  • 全集 UU:不定方程 i=1nxi=m\sum_{i=1}^nx_i=m 的非负整数解

  • 元素:变量 xix_i.

  • 属性:xix_i 的属性即 xix_i 满足的条件,即 xibix_i\leq b_i 的条件

目标:所有变量满足对应属性时集合的大小,即 i=1nSi|\bigcap_{i=1}^nS_i|.

这个东西可以用 $\left|\bigcap_{i=1}^{n}S_i\right|=|U|-\left|\bigcup_{i=1}^n\overline{S_i}\right| $求解。 |U| 可以用组合数计算,后半部分自然使用容斥原理展开。

那么问题变成,对于一些 Sai\overline{S_{a_i}} 的交集求大小。考虑 Sai\overline{S_{a_i} } 的含义,表示 xaibai+1x_{a_i}\geq b_{a_i}+1 的解的数目。而交集表示同时满足这些条件。因此这个交集对应的不定方程中,有些变量有 下界限制,而有些则没有限制。

能否消除这些下界限制呢?既然要求的是非负整数解,而有些变量的下界又大于 00,那么我们直接 演都不演了,把这个下界减掉,就可以使得这些变量的下界变成 00,即没有下界了。

因此对于$\left|\bigcap_{a_i<a_{i+1} }^{1\leq i\leq k}S_{a_i}\right|$的不定方程形式为i=1nxi=mi=1k(bai+1)\sum_{i=1}^nx_i=m-\sum_{i=1}^k(b_{a_i}+1)

于是这个也可以组合数计算啦。这个长度为 kkaa 数组相当于在枚举子集。

错位排列

bro以为容斥原理就这么结束了?哈哈,这个错位排列是假的,用来补全上述(以后认准 权威 字眼)。

容斥原理定义

编者注:下述理论很枯燥,看不懂别硬看,跳过或者直接记结论就好了

UU 中元素有 nn 种不同的属性,而第 ii 种属性称为 Pi P_i ,拥有属性 Pi P_i 的元素构成集合 Si S_i ,那么

$$\begin{aligned}\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)^{m-1}\sum_{a_i<a_{i+1} }\left|\bigcap_{i=1}^{m}S_{a_i}\right|+\cdots+(-1)^{n-1}|S_1\cap\cdots\cap S_n|\end{aligned} $$

$$\left|\bigcup_{i=1}^{n}S_i\right|=\sum_{m=1}^n(-1)^{m-1}\sum_{a_i<a_{i+1} }\left|\bigcap_{i=1}^mS_{a_i}\right| $$

证明

对于每个元素使用二项式定理计算其出为

$$ \begin{aligned} Cnt=&|\{T_i\}|-|\{T_i\cap T_j|i<j\}|+\cdots+(-1)^{k-1}\left|\left\{\bigcap_{i=1}^{k}T_{a_i}|a_i<a_{i+1}\right\}\right|\\ &+\cdots+(-1)^{m-1}|\{T_1\cap\cdots\cap T_m\}|\\ =&\dbinom{m}{1}-\dbinom{m}{2}+\cdots+(-1)^{m-1}\dbinom{m}{m}\\ =&\dbinom{m}{0}-\sum_{i=0}^m(-1)^i\dbinom{m}{i}\\ =&1-(1-1)^m=1 \end{aligned} $$

于是每个元素出现的次数为 1,那么合并起来就是并集。证毕。

补集

对于全集 UU 下的 集合的并 可以使用容斥原理计算,而集合的交则用全集减去 补集的并集 求得:

$$\left|\bigcap_{i=1}^{n}S_i\right|=|U|-\left|\bigcup_{i=1}^n\overline{S_i}\right| $$

右边使用容斥即可。


错位排列

错位排列定义

错位排列(derangement)是没有任何元素出现在其有序位置的排列。即,对于 1n1\sim n 的排列 PP,如果满足 PiiP_i\neq i,则称 PPnn 的错位排列。

例如,三元错位排列有 {2,3,1}\{2,3,1\} {3,1,2}\{3,1,2\}。四元错位排列有 {2,1,4,3}\{2,1,4,3\}、{2,3,4,1}\{2,3,4,1\}、{2,4,1,3}\{2,4,1,3\}、{3,1,4,2}\{3,1,4,2\}、{3,4,1,2}\{3,4,1,2\}、{3,4,2,1}\{3,4,2,1\}、{4,1,2,3}\{4,1,2,3\}、{4,3,1,2}\{4,3,1,2\} {4,3,2,1}\{4,3,2,1\}。错位排列是没有不动点的排列,即没有长度为 1 的循环。

以上文字看不懂?回去种地吧(doge),开玩笑的。

不懂看一下生动的示例图。

以上是合法的错位排列

以上是不合法的错位排列