【组合数学】排列组合 ( 多重集排列 | 多重集全排列 | 多重集非全排列 所有元素重复度大于排列数 | 多重集非全排列 某些元素重复度小于排列数 )
文章目录
- 一、多重集
- 二、多重集全排列
- 三、多重集全排列示例
- 三、多重集非全排列 1 所有元素重复度大于排列数 ( ni≥rn_i \geq rni≥r )
- 四、多重集非全排列 2 某些元素重复度小于排列数 ( ni≤rn_i \leq rni≤r )
排列组合参考博客 :
- 【组合数学】基本计数原则 ( 加法原则 | 乘法原则 )
- 【组合数学】集合的排列组合问题示例 ( 排列 | 组合 | 圆排列 | 二项式定理 )
- 【组合数学】排列组合 ( 排列组合内容概要 | 选取问题 | 集合排列 | 集合组合 )
- 【组合数学】排列组合 ( 排列组合示例 )
一、多重集
多重集表示 :
S={n1⋅a1,n2⋅a2,⋯,nk⋅ak},0≤ni≤+∞S = \{ n_1 \cdot a_1 , n_2 \cdot a_2 , \cdots , n_k \cdot a_k \} , \ \ \ 0 \leq n_i \leq +\inftyS={n1⋅a1,n2⋅a2,⋯,nk⋅ak}, 0≤ni≤+∞
- 元素种类 : 多重集中含有 kkk 种不同的元素 ,
- 元素表示 : 每个元素表示为 a1,a2,⋯,aka_1 , a_2 , \cdots , a_ka1,a2,⋯,ak ,
- 元素个数 : 每个元素出现的次数是 n1,n2,⋯,nkn_1, n_2, \cdots , n_kn1,n2,⋯,nk ,
- 元素个数取值 : nin_ini 的取值要求是 大于 000 , 小于正无穷 +∞+ \infty+∞ ;
二、多重集全排列
多重集 :
S={n1⋅a1,n2⋅a2,⋯,nk⋅ak},0≤ni≤+∞S = \{ n_1 \cdot a_1 , n_2 \cdot a_2 , \cdots , n_k \cdot a_k \} , \ \ \ 0 \leq n_i \leq +\inftyS={n1⋅a1,n2⋅a2,⋯,nk⋅ak}, 0≤ni≤+∞
★ 全排列 : r=n1+n2+⋯+nk=nr = n_1 + n_2 + \cdots + n_k = nr=n1+n2+⋯+nk=n
N=n!n1!n2!⋯nk!N = \cfrac{n!}{n_1! n_2! \cdots n_k!}N=n1!n2!⋯nk!n!
★ 多重集的全排列数是 元素总数阶乘 , 除以 所有重复度的阶乘 ;
下面是推导过程
有 kkk 种元素 ,
放置元素 a1a_1a1 : 在排列中先放第一种元素 a1a_1a1 , 该元素有 n1n_1n1 个 , nnn 个位置中选出 n1n_1n1 个 位置 , 有C(n,n1)C(n, n_1)C(n,n1) 种方法 ;
C(n,n1)=n!(n−n1)!n1!C(n, n_1) = \cfrac{n!}{(n-n_1) ! \ n_1!}C(n,n1)=(n−n1)! n1!n!
放置元素 a2a_2a2 : 放置好 n1n_1n1 之后放置第二种元素 a2a_2a2 , 该元素有 n2n_2n2 个 , 此时还有 n−n1n-n_1n−n1 个空位 , 从 n−1n-1n−1 个位置中选择 n2n_2n2 个位置有 C(n−n1,n2)C(n-n_1 , n_2)C(n−n1,n2) 种方法 ;
C(n−n1,n2)=(n−n1)!(n−n1−n2)!n2!C(n - n_1, n_2) = \cfrac{(n-n_1)!}{(n-n_1 - n_2) ! \ n_2!}C(n−n1,n2)=(n−n1−n2)! n2!(n−n1)!
⋮\vdots⋮
放置元素 aka_kak : 放置最后一个元素 aka_kak , 该元素有 nkn_knk 个 , 此时还有 n−n1−⋯−nk−1n-n_1- \cdots -n_{k-1}n−n1−⋯−nk−1 个空位 , 从 n−n1−⋯−nk−1n-n_1- \cdots -n_{k-1}n−n1−⋯−nk−1 个位置中选择 nkn_knk 个位置有 C(n−n1−⋯−nk−1,nk)C(n-n_1- \cdots -n_{k-1} , n_k)C(n−n1−⋯−nk−1,nk) 种方法 ;
C(n−n1−⋯−nk−1,nk)=(n−n1−⋯−nk−1)!(n−n1−⋯−nk−1−nk)!nk!C(n-n_1- \cdots -n_{k-1} , n_k) = \cfrac{(n-n_1- \cdots -n_{k-1})!}{(n-n_1- \cdots -n_{k-1} - n_k) ! \ n_k!}C(n−n1−⋯−nk−1,nk)=(n−n1−⋯−nk−1−nk)! nk!(n−n1−⋯−nk−1)!
乘法法则 : 最后根据乘法法则 , 将上述每个放置方法乘起来 , 就得到最终的结果 , 阶乘看起来很复杂 , 但是 阶乘选项如 (n−n1−⋯−nk−1)!(n-n_1- \cdots -n_{k-1})!(n−n1−⋯−nk−1)! 都可以约掉 , 最终结果如下 :
N=C(n,n1)C(n−n1,n2)C(n−n1−⋯−nk−1,nk)=n!(n−n1)!n1!×(n−n1)!(n−n1−n2)!n2!×(n−n1−⋯−nk−1)!(n−n1−⋯−nk−1−nk)!nk!约掉部分阶乘=n!n1!n2!⋯nk!\begin{array}{lcl} N & = & C(n, n_1) C(n - n_1, n_2) C(n-n_1- \cdots -n_{k-1} , n_k) \\\\ & = & \cfrac{n!}{(n-n_1) ! \ n_1!} \times \cfrac{(n-n_1)!} {(n-n_1 - n_2) ! \ n_2!} \times \cfrac{(n-n_1- \cdots -n_{k-1})!}{(n-n_1- \cdots -n_{k-1} - n_k) ! \ n_k!} \ \ \ 约掉部分阶乘 \\\\ &=& \cfrac{n!}{n_1! n_2! \cdots n_k!} \end{array}N===C(n,n1)C(n−n1,n2)C(n−n1−⋯−nk−1,nk)(n−n1)! n1!n!×(n−n1−n2)! n2!(n−n1)!×(n−n1−⋯−nk−1−nk)! nk!(n−n1−⋯−nk−1)! 约掉部分阶乘n1!n2!⋯nk!n!
三、多重集全排列示例
求多重集 S={3⋅a,2⋅b,1⋅c}S=\{ 3 \cdot a , 2 \cdot b , 1 \cdot c \}S={3⋅a,2⋅b,1⋅c} 的全排列 ?
上述多重集元素总个数是 n=3+2+1=6n = 3 + 2 + 1 = 6n=3+2+1=6 ;
全排列个数是 :
N=6!3!×2!×1!=6×5×4×3×2×1(3×2×1)×(2×1)×(1×1)=60N = \cfrac{6!}{3! \times 2! \times 1!} = \cfrac{6 \times 5 \times 4 \times 3 \times 2 \times 1}{( 3 \times 2 \times 1 ) \times ( 2 \times 1 ) \times (1 \times 1)} = 60N=3!×2!×1!6!=(3×2×1)×(2×1)×(1×1)6×5×4×3×2×1=60
三、多重集非全排列 1 所有元素重复度大于排列数 ( ni≥rn_i \geq rni≥r )
多重集 :
S={n1⋅a1,n2⋅a2,⋯,nk⋅ak},0≤ni≤+∞S = \{ n_1 \cdot a_1 , n_2 \cdot a_2 , \cdots , n_k \cdot a_k \} , \ \ \ 0 \leq n_i \leq +\inftyS={n1⋅a1,n2⋅a2,⋯,nk⋅ak}, 0≤ni≤+∞
★ 非全排列情况 111 : r≤nir \leq n_ir≤ni , 注意这里的 rrr 要 小于等于 最小的 nin_ini ;
N=krN = k^rN=kr
推导过程 :
在上述条件下 ,
rrr 个位置 ,
每个位置的元素都有 kkk 种选择 ,
根据乘法法则 , 总的选择个数是 k×k×⋯×k⏟r个k\begin{matrix} \underbrace{ k \times k \times \cdots \times k } \\ r 个 k \end{matrix}k×k×⋯×kr个k ,
即 rkr^krk ;
四、多重集非全排列 2 某些元素重复度小于排列数 ( ni≤rn_i \leq rni≤r )
上述情况只适用于重复度足够大的情况 , 即 每个元素的重复度都大于选取个数 , r≤nir \leq n_ir≤ni
如果 有一个元素的重复度小于选取个数 , r≥nir \geq n_ir≥ni ,
如 S={3⋅a,2⋅b,1⋅c}S=\{ 3 \cdot a , 2 \cdot b , 1 \cdot c \}S={3⋅a,2⋅b,1⋅c} 多重集的三排列 , 就无法使用公式计算了 ,
没有公式可以计算 , 但是可以 使用 包含排斥原理 , 生成函数 进行计算 ;
【组合数学】排列组合 ( 多重集排列 | 多重集全排列 | 多重集非全排列 所有元素重复度大于排列数 | 多重集非全排列 某些元素重复度小于排列数 )相关推荐
- 【Math】排列组合
排列组合 百科名片 加法 & 乘法原理 加法原理 乘法原理 排列与组合基础 排列数 组合数 二项式定理 排列与组合进阶篇 多重集的排列数 | 多重组合数 多重集的组合数 1 多重集的组合数 2 ...
- 信奥中的数学:排列组合
排列组合题型总结课程(一) 排列组合题型总结课程(一)_哔哩哔哩_bilibili 排列组合的公式 排列组合的公式_百度知道 [Manim动画]如何以可视化视角直观理解排列组合? [Manim动画]如 ...
- 程序员必备算法,排列组合
还记得排列组合吗? 在高中的时候最常接触的莫过于排列组合了,毕竟高考必考的嘛.我们先来回忆下这两个的公式是啥: 排列组合公式 如果看到这个还有一丢丢的印象,说明大家的基础都还不错.那么问题来了,大家都 ...
- 【C】 4个数排列组合
使用VS2019 ISO C++14 标准 (/std:c++14) 4个数排列组合 //有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数? //本练习不涉及报错处理机制! #incl ...
- html错位排列,排列组合之错位重排
[导读] 中公事业单位为帮助各位考生顺利通过事业单位招聘考试!今天为大家带来事业单位判断推理:排列组合之错位重排. 一.知识点简述 错位重排,可以理解为把n个不同元素进行重新排列,使得每个元素都不在自 ...
- itertools库常用高效迭代器一览表,帮你快速实现数据的排列组合【python】
itertools库常用高效迭代器一览表,帮你快速实现数据的排列组合 文档: https://docs.python.org/zh-cn/3/library/itertools.html iterto ...
- C++复习(五)——排列组合杨辉三角
题目六:排列组合,五本书分给三个人,每人一本,至多有多少种不同的分法 题目七:输出杨辉三角 1 1 1 1 2 1 1 3 3 1 1 ...
- 【组合数学】排列组合 ( 多重集组合数示例 | 三个计数模型 | 选取问题 | 多重集组合问题 | 不定方程非负整数解问题 )
文章目录 一.多重集组合示例 二.三个计数模型 排列组合参考博客 : [组合数学]基本计数原则 ( 加法原则 | 乘法原则 ) [组合数学]集合的排列组合问题示例 ( 排列 | 组合 | 圆排列 | ...
- 【组合数学】排列组合 ( 多重集组合数 | 所有元素重复度大于组合数 | 多重集组合数 推导 1 分割线推导 | 多重集组合数 推导 2 不定方程非负整数解个数推导 )
文章目录 一.多重集组合 ( 所有元素重复度大于组合数 ) 二.多重集组合 所有元素重复度大于组合数 推导 1 ( 分割线推导 ) 二.多重集组合 所有元素重复度大于组合数 推导 2 ( 不定方程非负 ...
最新文章
- 道路 [NOIP模拟]
- C++继承中父类和子类之间的赋值兼容
- windows环境下 curl 安装和使用
- mac使用的正确操作与注意事项(人体工程学)
- Oracle死锁情况
- 6s android,Android死忠粉自述为何必买iPhone 6S
- windows server 2016部署wsus服务
- JavaScript的高大强
- Pandas系列(三)新增数据列
- 关于找回CSDN账号的一点遐想
- 计算机颜色的概念,颜色空间
- android systrace log,Android优化之Systrace
- 根据前序序列和中序序列重建二叉树
- 范德堡大学计算机科学专业,美国范德堡大学的专业排名
- 『梦想城镇』终极攻略
- flash activex java_Adobe flash player ActiveX和NPAPI和PPAPI 这三个软件有什么区别?哪个是不必要的?...
- 计算机考研需要过英语六级吗,研究生毕业要过英语六级吗 研究生毕业对英语六级有要求吗...
- Oozie 工作流定义详解【转】
- SQL查询中文字符及标点符号
- 关于video++,jsrun,有道笔记等的感想