多重集的排列数与组合数

设 S = { n 1 a 1 , n 2 a 2 , … , n k a k } S = \{ n_1a_1,n_2a_2,…,n_ka_k\} S={n1​a1​,n2​a2​,…,nk​ak​} 是由 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=1k​ni​)!

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=1k​ni​)!​或n1​!n2​!...nk​!N!​(N=i=1∑k​ni​)
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={n1​a1​,n2​a2​,...,nk​ak​}
以及一个整数 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=1k​xi​=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={n1​a1​,n2​a2​,...,nk​ak​}
以及一个整数 r r r,并且 r ≤ ∑ i = 1 k n i r≤\sum_{i=1}^{k}n_i r≤∑i=1k​ni​ 【即 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=1k​Fi​∣

∣ ⋃ i = 1 k F i ∣ |\bigcup^{k}_{i=1}F_i| ∣⋃i=1k​Fi​∣用容斥原理计算:

对于 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⋃k​Fi​∣∣∣∣∣​=i=1∑k​Cr−ni​+k−2k−1​−1≤i<j≤n∑​Ck+r−ni​−nj​−3k−1​+...+(−1)kCk+r−∑i=1k​ni​−(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∑k​Cr−ni​+k−2k−1​+1≤i<j≤n∑​Ck+r−ni​−nj​−3k−1​−...+(−1)kCk+r−∑i=1k​ni​−(k+1)k−1​

多重集的排列数与组合数相关推荐

  1. 排列数与组合数~~~~

    先说两句废话 咳咳 今天突突突突突突突发奇想想写篇文章(?很神奇 然后开始翻笔记本 看看这个--水的失去浓度 看看这个--哎呀,学了,没会,也不出来 害,咋整... 偶然间,发现了一个对大家来说都很简 ...

  2. MATLAB计算阶乘、排列数与组合数

    在1500件产品中有400件次品,1100件正品,任取200件 求恰有90件次品的概率; 求至少有两件次品的概率. 这是一道古典概型的概率问题,题目比较简单,很容易求得概率,其中 但是,计算量较大,于 ...

  3. C语言计算排列数和组合数

    #include <stdio.h> int main(int argc, char *argv[]) {printf("%d \n",a(3,8));printf(& ...

  4. 组合数学(二)排列数和组合数

    文章目录 无重排列和组合 圆周排列与重排列 圆周排列 重排列 无重排列和组合 无重排列个数用P(n,r)表示 P(n,r)=n(n−1)⋅⋅⋅(n−r+1)P(n,r)=n(n-1)···(n-r+1 ...

  5. 【组合数学】指数生成函数 ( 指数生成函数概念 | 排列数指数生成函数 = 组合数普通生成函数 | 指数生成函数示例 )

    文章目录 一.指数生成函数 二.排列数指数生成函数 = 组合数普通生成函数 三.指数生成函数示例 参考博客 : 按照顺序看 [组合数学]生成函数 简要介绍 ( 生成函数定义 | 牛顿二项式系数 | 常 ...

  6. 排列数 A(n, m) 与组合数 C(n, m) 的求法

    一.什么是排列,什么是组合? 排列 从 n 个不同元素中,任取 m(m≤n) 个元素,按照一定的顺序排成一列,叫做从 n 个不同元素中取出 m 个元素的一个排列. 组合 从 n 个不同元素中,任取 m ...

  7. 【组合数学】排列组合 ( 多重集排列 | 多重集全排列 | 多重集非全排列 所有元素重复度大于排列数 | 多重集非全排列 某些元素重复度小于排列数 )

    文章目录 一.多重集 二.多重集全排列 三.多重集全排列示例 三.多重集非全排列 1 所有元素重复度大于排列数 ( ni≥rn_i \geq rni​≥r ) 四.多重集非全排列 2 某些元素重复度小 ...

  8. python计算排列数 组合数

    组合排列介绍 一.编写函数计算组合数CniC^{i}_{n}Cni​. def Combinatorial(n,i):'''设计组合数'''#n>=iMin=min(i,n-i)result=1 ...

  9. 组合数和排列数的关系

    组合数 * (被选数的阶乘) =   排列数 排列数可以看做组合数选出来后再进行排序

最新文章

  1. Linux服务器部署ssl证书教程,linux服务器在wdcp面板安装ssl证书教程
  2. python常用命令汇总-python中pip工具常用命令汇总
  3. 【转载】Gradle学习 第一章:引言
  4. Oracle基本概念与数据导入
  5. 设置eclipse新建maven项目默认使用jdk1.8
  6. [vue] vue-loader是什么?它有什么作用?
  7. 嵌入式 Linux 的分类
  8. JAVA中创建的redis对象_详解Java在redis中进行对象的缓存
  9. 过滤器为JSP文件生成静态页面
  10. Java之——被人遗忘的Java8的八个功能
  11. 技术栈(technology stack)
  12. 解决vs2008安装问题 Office 2007 Microsoft Visual Studio Web 创作组件 安装失败
  13. 【雅思大作文考官范文】——第十一篇:'homework' essay
  14. Java不同字符使用下划线分隔_004_Java语言基础(a-变量)
  15. Android 创建淡入淡出动画的详解
  16. vba获取html代码数据,VBA获取网页表格数据
  17. 邮政储蓄银行厦门分行经营管理系统 项目总结
  18. TIA博途中触摸屏仿真时画面字体变大,超出范围的处理方法
  19. 红黑树调整(漫画版)
  20. Android插件化开发指南——Hook技术(一)【长文】

热门文章

  1. 中小学生相关计算机课程,中小学生计算机教学计划
  2. 借用图文智能排版制作精美的锁屏图片
  3. 全局最小割(Stoer-Wagner)
  4. java设计模式-18访问者模式
  5. Android开发保存QQ密码
  6. React项目搭建与Echars工具使用
  7. unix系统操作系统_Unix操作系统| 第2部分
  8. 电子证件照怎么换背景?怎样修改证件照底色?
  9. Mybatis Plus SQL语句中 字段为数据库关键字的解决方案
  10. abbyy finereader2023泰比文字识别PDF编辑软件