鸽巢原理
鸽巢原理:如果k+1个或更多的物体放入k个盒子,那么至少有一个盒子包含了2个或更多的物体。
广义鸽巢原理:如果n个物体放入k个盒子,那么至少有一个盒子包含了至少n/k(向上取整)个物体。
例:为保证一个州2500万个电话有不同的电话号码,所需地区代码的最小数是多少(假定电话号码NXX-NXX-XXXX,N取值为2~8,X取0~9)(前三位为地区代码)
解:求所需地区代码的最小数,我们考虑后七位,N有8种取值可能,一个有8*10^6种电话号码,那么最小数就是(2500*10000/(8*10^6))取上限,即为4,故至少需要4个地区代码。
把物体放入盒子问题
①不可辨别的物体与可辨别的盒子
例:10个相同的小球放入8个不同的桶中,有多少种方法?
解1:转化为18个球放入8个桶中,每个桶至少1个球。利用隔板法可以解决问题:C(17,7)
解2:理解为从具有8个元素的集合种取出组合10的方法数:C(8+10-1,10) = C(17,10)
②可辨别的物体与不可辨别的盒子 【二类斯特林数】
例:4个人安排到3个不可辨别的办公室,有多少种方法?
解:分3种情况讨论:
仅一个办公室有人:1
两个办公室有人:C(4,1)+C(4,2)/2
三个办公室有人:C(4,2)
①不可辨别的物体与不可辨别的盒子 【划分数】
生成排列算法
生成组合算法
接触过很多,即用二进制模拟生成子集。暴力的常用做法。