多重集的排列数与组合数
多重集的排列数与组合数
设 S = { n 1 a 1 , n 2 a 2 , … , n k a k } S = \{ n_1a_1,n_2a_2,…,n_ka_k\} S={n1a1,n2a2,…,nkak} 是由 n 1 n_1 n1个 a 1 a_1 a1, n 2 n_2 n2个 a 2 a_2 a2,…, n k n_k nk个 a k a_k ak组成的多重集。
N = n 1 + n 2 + n 3 + . . . + n k N=n_1+n_2+n_3+...+n_k N=n1+n2+n3+...+nk, n i n_i ni被称为元素 a i a_i ai的重数, k k k成为多重集合的类别数
多重集的排列数
在 S S S 中任选 r r r 个元素的排列称为 S S S的 r r r排列,当 r = n r=n r=n时不考虑相同的元素,其全排列的个数为 ( ∑ i = 1 k n i ) ! (\sum_{i=1}^{k}n_i)! (∑i=1kni)!
S S S的全排列个数为:
A = ( ∑ i = 1 k n i ) ! π i = 1 k ( n i ! ) 或 N ! n 1 ! n 2 ! . . . n k ! ( N = ∑ i = 1 k n i ) A =\frac{(\sum_{i=1}^{k}n_i)!}{\pi_{i=1}^{k}(n_i!)}或\frac{N!}{n_1!n_2!...n_k!}(N=\sum_{i=1}^{k}n_i) A=πi=1k(ni!)(∑i=1kni)!或n1!n2!...nk!N!(N=i=1∑kni)
N = n 1 + n 2 + n 3 + . . . + n k N=n_1+n_2+n_3+...+n_k N=n1+n2+n3+...+nk
多重集的组合数
在 S S S 中任选 r r r 个元素的组合称为 S S S的 r r r组合;
问题一:
给定一个多重集 S = { n 1 a 1 , n 2 a 2 , . . . , n k a k } S=\{n_1a_1,n_2a_2,...,n_ka_k\} S={n1a1,n2a2,...,nkak}
以及一个整数 r r r,并且 r ≤ n i ( ∀ i ∈ [ 1 , k ] ) r≤n_i(\forall i \in[1,k]) r≤ni(∀i∈[1,k]) 【即 r r r小于等于 n i n_i ni的最小值】
求从S中取出任意r个元素可以 n i n_i ni产生的不同多重集数量
我们设 a i a_i ai取 x i x_i xi个,那么原问题就等价于不定方程 ∑ i = 1 k x i = r ( x ≥ 0 ) \sum^{k}_{i=1}x_i=r (x≥0) ∑i=1kxi=r(x≥0)的解的个数。
就是就是要给每个 x i x_i xi赋值 [ 0 , m ] [0,m] [0,m]中的任意整数,且所有 x i x_i xi的和为 m m m,
由于条件 r ≤ n i ( ∀ i ∈ [ 1 , k ] ) r≤n_i(\forall i \in[1,k]) r≤ni(∀i∈[1,k])所以不用考虑 x i > n i x_i>n_i xi>ni的情况
等价于一共有 r r r个苹果,分给 k k k个人,可以有人拿 0 0 0个苹果,求所有的方案数。
用隔板法计算,其方案数为 C r + k − 1 k − 1 C_{r+k-1}^{k-1} Cr+k−1k−1 【隔板法传送门】
问题二:
给定一个多重集 S = { n 1 a 1 , n 2 a 2 , . . . , n k a k } S=\{n_1a_1,n_2a_2,...,n_ka_k\} S={n1a1,n2a2,...,nkak}
以及一个整数 r r r,并且 r ≤ ∑ i = 1 k n i r≤\sum_{i=1}^{k}n_i r≤∑i=1kni 【即 r r r小于 N N N】
求从S中取出任意r个元素可以 n i n_i ni产生的不同多重集数量
先不考虑 n i n_i ni个元素的限制,即从多重集 S ′ = { ∞ a 1 , ∞ a 2 , … , ∞ a k } S^′= \{∞a_1,∞a_2,…,∞a_k\} S′={∞a1,∞a2,…,∞ak}中取 r r r个元素的组合数。
此时 x i x_i xi不受 n i n_i ni限制,就与问题一类似,方案数为 C r + k − 1 k − 1 C_{r+k-1}^{k-1} Cr+k−1k−1
这里的方案数显然包含了 x i > n i x_i>n_i xi>ni的不合法方案
考虑每个 a i a_i ai取值受 x i x_i xi的限制,设不满足第 i i i个限制的方案集合为 F i F_i Fi
即答案为 C r + k − 1 k − 1 − ∣ ⋃ i = 1 k F i ∣ C_{r+k-1}^{k-1}-|\bigcup^{k}_{i=1}F_i| Cr+k−1k−1−∣⋃i=1kFi∣
∣ ⋃ i = 1 k F i ∣ |\bigcup^{k}_{i=1}F_i| ∣⋃i=1kFi∣用容斥原理计算:
对于 F i F_i Fi,我们从 S S S中取出 n i + 1 n_i+1 ni+1个 a i a_i ai【即这样已经是非法方案了,那么我们选择的任意 m − n i − 1 m-n_i-1 m−ni−1个元素都是非法方案】,再从S中任意(注意可以是 a i a_i ai也可以是别的) m − n i − 1 m-n_i-1 m−ni−1个元素构成 F i F_i Fi集合
这样我们可以看成是一共有 ( r − n i − 1 ) (r-n_i-1) (r−ni−1)个苹果,分给 k k k个人,可以有人拿0个苹果,求所有方案数。
由问题一可得: C r − n i − 1 + k − 1 k − 1 → C r − n i + k − 2 k − 1 C_{r-n_i-1+k-1}^{k-1}→C_{r-n_i+k-2}^{k-1} Cr−ni−1+k−1k−1→Cr−ni+k−2k−1
我们得出的结论是所有 x i > n i x_i>n_i xi>ni的不合法方案;但是我们发现我们还多算上了 ∣ F i ⋂ F j ∣ \left|F_i\bigcap F_j\right | ∣Fi⋂Fj∣的数量。(即同时包含了至少 n i + 1 n_i+1 ni+1个 a i a_i ai和至少 n j + 1 n_j+1 nj+1个 a j a_j aj的多重集)
多算的原因:看上方绿色字体,我们选择剩余元素的方案中,包含同时选择了至少 n j + 1 n_j+1 nj+1个 a j a_j aj的多重集的方案。
我们求一下 ∣ F i ⋂ F j ∣ |F_i\bigcap F_j| ∣Fi⋂Fj∣,也就是我们取 n i + 1 n_i+1 ni+1个 a i a_i ai,再取 n j + 1 n_j+1 nj+1个 a j a_j aj ,其余的 r − n i − n j − 2 r-n_i-n_j-2 r−ni−nj−2个元素任意取。还是类似于问题一的方法:得出 ∣ F i ⋂ F j ∣ = C k + r − n i − n j − 3 k − 1 |F_i\bigcap F_j|=C_{k+r-n_i-n_j-3}^{k-1} ∣Fi⋂Fj∣=Ck+r−ni−nj−3k−1
反复容斥可得:
∣ ⋃ i = 1 k F i ∣ = ∑ i = 1 k C r − n i + k − 2 k − 1 − ∑ 1 ≤ i < j ≤ n C k + r − n i − n j − 3 k − 1 + . . . + ( − 1 ) k C k + r − ∑ i = 1 k n i − ( k + 1 ) k − 1 \left |\bigcup^{k}_{i=1}F_i \right| = \sum_{i=1}^{k}C_{r-n_i+k-2}^{k-1}-\sum_{1≤i<j≤n}C_{k+r-n_i-n_j-3}^{k-1}+...+(-1)^{k}C^{k-1}_{k+r-\sum_{i=1}^{k}n_i-(k+1)} ∣∣∣∣∣i=1⋃kFi∣∣∣∣∣=i=1∑kCr−ni+k−2k−1−1≤i<j≤n∑Ck+r−ni−nj−3k−1+...+(−1)kCk+r−∑i=1kni−(k+1)k−1
最终答案:
C r + k − 1 k − 1 − ∑ i = 1 k C r − n i + k − 2 k − 1 + ∑ 1 ≤ i < j ≤ n C k + r − n i − n j − 3 k − 1 − . . . + ( − 1 ) k C k + r − ∑ i = 1 k n i − ( k + 1 ) k − 1 C_{r+k-1}^{k-1}-\sum_{i=1}^{k}C_{r-n_i+k-2}^{k-1} + \sum_{1≤i<j≤n}C_{k+r-n_i-n_j-3}^{k-1} - ...+(-1)^{k}C^{k-1}_{k+r-\sum_{i=1}^{k}n_i-(k+1)} Cr+k−1k−1−i=1∑kCr−ni+k−2k−1+1≤i<j≤n∑Ck+r−ni−nj−3k−1−...+(−1)kCk+r−∑i=1kni−(k+1)k−1
多重集的排列数与组合数相关推荐
- 排列数与组合数~~~~
先说两句废话 咳咳 今天突突突突突突突发奇想想写篇文章(?很神奇 然后开始翻笔记本 看看这个--水的失去浓度 看看这个--哎呀,学了,没会,也不出来 害,咋整... 偶然间,发现了一个对大家来说都很简 ...
- MATLAB计算阶乘、排列数与组合数
在1500件产品中有400件次品,1100件正品,任取200件 求恰有90件次品的概率; 求至少有两件次品的概率. 这是一道古典概型的概率问题,题目比较简单,很容易求得概率,其中 但是,计算量较大,于 ...
- C语言计算排列数和组合数
#include <stdio.h> int main(int argc, char *argv[]) {printf("%d \n",a(3,8));printf(& ...
- 组合数学(二)排列数和组合数
文章目录 无重排列和组合 圆周排列与重排列 圆周排列 重排列 无重排列和组合 无重排列个数用P(n,r)表示 P(n,r)=n(n−1)⋅⋅⋅(n−r+1)P(n,r)=n(n-1)···(n-r+1 ...
- 【组合数学】指数生成函数 ( 指数生成函数概念 | 排列数指数生成函数 = 组合数普通生成函数 | 指数生成函数示例 )
文章目录 一.指数生成函数 二.排列数指数生成函数 = 组合数普通生成函数 三.指数生成函数示例 参考博客 : 按照顺序看 [组合数学]生成函数 简要介绍 ( 生成函数定义 | 牛顿二项式系数 | 常 ...
- 排列数 A(n, m) 与组合数 C(n, m) 的求法
一.什么是排列,什么是组合? 排列 从 n 个不同元素中,任取 m(m≤n) 个元素,按照一定的顺序排成一列,叫做从 n 个不同元素中取出 m 个元素的一个排列. 组合 从 n 个不同元素中,任取 m ...
- 【组合数学】排列组合 ( 多重集排列 | 多重集全排列 | 多重集非全排列 所有元素重复度大于排列数 | 多重集非全排列 某些元素重复度小于排列数 )
文章目录 一.多重集 二.多重集全排列 三.多重集全排列示例 三.多重集非全排列 1 所有元素重复度大于排列数 ( ni≥rn_i \geq rni≥r ) 四.多重集非全排列 2 某些元素重复度小 ...
- python计算排列数 组合数
组合排列介绍 一.编写函数计算组合数CniC^{i}_{n}Cni. def Combinatorial(n,i):'''设计组合数'''#n>=iMin=min(i,n-i)result=1 ...
- 组合数和排列数的关系
组合数 * (被选数的阶乘) = 排列数 排列数可以看做组合数选出来后再进行排序
最新文章
- Linux服务器部署ssl证书教程,linux服务器在wdcp面板安装ssl证书教程
- python常用命令汇总-python中pip工具常用命令汇总
- 【转载】Gradle学习 第一章:引言
- Oracle基本概念与数据导入
- 设置eclipse新建maven项目默认使用jdk1.8
- [vue] vue-loader是什么?它有什么作用?
- 嵌入式 Linux 的分类
- JAVA中创建的redis对象_详解Java在redis中进行对象的缓存
- 过滤器为JSP文件生成静态页面
- Java之——被人遗忘的Java8的八个功能
- 技术栈(technology stack)
- 解决vs2008安装问题 Office 2007 Microsoft Visual Studio Web 创作组件 安装失败
- 【雅思大作文考官范文】——第十一篇:'homework' essay
- Java不同字符使用下划线分隔_004_Java语言基础(a-变量)
- Android 创建淡入淡出动画的详解
- vba获取html代码数据,VBA获取网页表格数据
- 邮政储蓄银行厦门分行经营管理系统 项目总结
- TIA博途中触摸屏仿真时画面字体变大,超出范围的处理方法
- 红黑树调整(漫画版)
- Android插件化开发指南——Hook技术(一)【长文】