这会是一个大型连载blog
内容主要来自《组合数学》+博主的思考
容斥原理
之前在“组合数学一”中提到过容斥原理
我们在这里直接给出推论:
设Ai表示在集合S中拥有特征Pi的元素子集,则集合S中至少具有性质P1,P2,P3,…,Pm之一的对象个数由下式表示:
在这一节中,有一个经典问题:
∞ 例一
确定多重集合 T={3a,4b,5*c} 的10组合的数目
这道题我们要充分利用容斥原理:
设 T*={ ∞a,∞b,∞c }
P1=T的10组合中a出现多于3次
P2=T的10组合中b出现多于4次
P3=T的10组合中c出现多于5次
Ai表示拥有Pi性质的10组合的数目,S是T*的10组合数
我们看一下每种集合的求法:
首先S的求法很简单(十个位置,三种元素),经典的隔板法:
我们重点是在Ai的求法,我们以A1为例(其余的都是同理):
A1表示 “T*的10组合中a出现多于3次” 的组合数,那我们就可以确定这10个数中一定至少有4个a
所以原问题就变成了:有6个位置,3种元素,每个元素不限制出现次数,由此形成的组合数
那么剩下的所有集合大小都可以如上求出:
注:这个问题也可以用生成函数解决,本文中就不再冗述了
∞ 例二
满足:1<=X1<=5,-2<=X2<=4,0<=X3<=5,3<=X4<=9
的方程 (X1+X2+X3+X4=18) 的正整数解有多少?
我们引入一些新变量:
Y1=X1-1,Y2=X2+2,Y3=X3,Y4=X4-3
Y1+Y2+Y3+Y4=16 ①
则,关于Xi的方程有解当且仅当:
0<=Y1<=4,0<=Y2<=6,0<=Y3<=5,0<=Y4<=6
设S是①所有的非负整数解
P1是Y1>=5的性质,P2是Y2>=7的性质,P3是Y3>=6的性质,P4是Y4>=7的性质
Ai是具备Pi性质的方程解
错位排序
我们先来一个情境引入:
话说七仙女又到凡间泡澡了。。。
突然,天降大雨(估计是王母娘娘不高兴了)七仙女都急忙上岸,随便抓起一套衣服就穿上了
那么七个人全部穿错衣服有多少种情况呢?
(mdzz的例子。。。)
这个就是错位排列
我们直接给出式子:
现在我们提出一个结论:
实际上,Dn是最接近n!*e^-1的整数
考虑随机选出{ 1,2,…,n }的一个排列的实验,时间E是没有整数在其自然位置上排列,即选出的这个排列是一个错位排序,因此 |E|=Dn ,且E的概率为:
这样在本节一开始的“七仙女的故事中”,概率就为D7/7!
从效果上看,概率就是e^-1
即使是有一万个仙女,最后的答案也是e^-1
下面我们就讨论一些Dn满足的其他便于其求值的关系
结论一
其中n>=3
初始值:D1=0,D2=1
结论二
其中n>=2
以上两个小结论类似于阶乘的公式
我们还是看一下例题:
∞ 例三
再一次聚会上,有n位男士和n位女士在跳舞前存放了ta们的帽子,在聚会结束的时候随机返还给ta们这些帽子
如果每位男士得到的都是一顶男帽,女士得到的都是一顶女帽,但又都不是他们的,有多少方法呢?
如果没有限制,那么方法数就是(2n)!
如果加上男士得到男帽,女士得到女帽,那么就有(n! * n!)种方法
如果再加上没有人得到ta们自己的帽子,则有 (Dn*Dn)种 方法