前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >组合数公式

组合数公式

作者头像
全栈程序员站长
发布于 2022-09-08 01:09:38
发布于 2022-09-08 01:09:38
42300
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

排列组合:

排列推导:

\[\binom{n}{k}+\binom{n}{k-1}=\binom{n+1}{k} \]

很好证明,将定义式子写出来后合并分数即可.

二项式定理:

\[(a+b)^n=\sum_{i=0}^n\binom{n}{i}a^{n-i}b^i \]

证明可以利用上面的推导做归纳。

多重集的排列数

定义:

多重集是包含重复元素的广义集合。

而多重集的排列数又称为 多重组合数

性质:

设 \(S=\{n_1\cdot a_1,n_2\cdot a_2,\cdots,n_k\cdot a_k,\}\),表示由 \(n_1\) 个 \(a_1\) …. \(n_k\) 个 \(a_k\) 组成的多重集,则 \(S\) 的全排列个数为:

\[\frac{n!}{\prod_{i=1}^kn_i!}=\frac{n!}{n_1!n_2!\cdots n_k!} \]

相当于是把相同元素的排列数除掉了。

具体来说,有 \(k\) 种不一样的球,每种球的个数分别是 \(n_1,n_2,….,n_k\) ,且加和为 \(n\)。

这 \(n\) 个球的全排列数就是 多重集的排列数

多重集的组合数 \(1\):

设 \(S=\{n_1\cdot a_1,n_2\cdot a_2,\cdots,n_k\cdot a_k,\}\),表示由 \(n_1\) 个 \(a_1\) …. \(n_k\) 个 \(a_k\) 组成的多重集。

那么对于整数 \(r(r < n_i)\) ,从 \(S\) 中选择 \(r\) 个元素组成一个多重集的方案数就是 多重集的组合数

这个问题等价于 :\(x_1+x_2+…+x_k=r\) 的非整数解的数目,可以用插板法解决。答案为:

\[\binom{r+k-1}{k-1} \]

证明:

因为在这种情况下, \(x_{[1,k]}\) 的数可能为 \(0\) ,我们把每一个 \(x+1\) ,得到了这个式子:

\[x_1+x_2+…+x_k=r+k \]

代换意义就是用 \(k-1\) 个挡板,在 \(k+r-1\) 个空隙,将 \(k+r\) 个小球分成 \(k\) 部分。即以上式子。

多重集的组合数 \(2\):

设 \(S=\{n_1\cdot a_1,n_2\cdot a_2,\cdots,n_k\cdot a_k,\}\),表示由 \(n_1\) 个 \(a_1\) …. \(n_k\) 个 \(a_k\) 组成的多重集。

对于正整数 \(r(r < n)\) , 求从 \(S\) 中选择 \(r\) 个元素组成一个多重集的方案数.

这样的话就限制了每种元素取的个数,把这个问题转化成带限制的线性方程:

\[\forall i\in [1,k],\ x_i\le n_i,\ \sum_{i=1}^kx_i=r \]

我们利用容斥原理去解决,模型如下:

  1. 全集:\(\sum_{i=1}^k x_i=r\) 的非负整数解
  2. 属性:\(x_i\leq n_i\)

设 满足属性 \(i\) 的集合是 \(S_i\) ,\(\overline{S_i}\) 表示不满足属性 \(i\) 的集合,即满足 \(x_i \geq n_i+1\) 的集合,那么答案即为:

\[\left|\bigcap_{i=1}^kS_i\right|=|U|-\left|\bigcup_{i=1}^k\overline{S_i}\right| \]

根据容斥原理。。。。。 具体在 \(OI-WIKI\) 上都有。

用全集 \(|U|=\binom{r+k-1}{k-1}\) 减去上面式子,得到了多重集的组合数:

\[Ans=\sum_{p=0}^k(-1)^p\sum_{A}\binom{k+r-1-\sum_{A} n_{A_i}-p}{k-1} \]

其中 \(A\) 是充当枚举子集的作用,满足 \(|A|=p, A_i<A_{i+1}\) 。

不相邻的排列:

定义:

\([1,n]\) 这 \(n\) 个自然数中选 \(k\) 个,这 \(k\) 个数中任何两个数都不相邻的组合有:

\[\binom{n-k+1}{k} \]

错排:

详情见我另外一篇博客:错排

圆排列:

定义:

\(n\) 个人全部来围成一圈,所有的排列数即为 \(Q_n^n\)

分析:

考虑其中已经排好的一圈,从不同位置断开,又变成不同的序列,所以有以下推导:

\[Q_n^n \times n= A_n^n \rightarrow Q_n^n=\frac{A_n^n}{n}=(n-1)! \]

从这里能推导出 \(n\) 个人其中 \(m\) 个围成一圈的方案数:

\[\mathrm Q_n^r = \frac{\mathrm A_n^r}{r} = \frac{n!}{r \times (n-r)!} \]

组合数性质:

1. 将选出的集合对全集取补集:

\[\binom{n}{m}=\binom{n}{n-m}\tag{1} \]

2. 递推式:

\[\binom{n}{k}=\frac{n}{k}\binom{n-1}{k-1} \]

3. 组合数递推式(和上方相同)

\[\binom{n}{m}=\binom{n-1}{m}+\binom{n-1}{m-1} \]

然后一开始初始化是这样的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
c[1][1]=1; for(int i=0;i<=n;i++) c[i][0]=1;
for(int i=2;i<=n;i++)
    for(int j=1;j<=i;j++){
        c[i][j]=c[i-1][j]+c[i-1][j-1];
    }

这个式子是杨辉三角的公式表达。

4. 二项式定理特殊情况:

\[\binom{n}{0}+\binom{n}{1}+\cdots+\binom{n}{n}=\sum_{i=0}^n\binom{n}{i}=2^n\tag{4} \]

5. 二项式定理另一种情况:

\[\sum_{i=0}^n(-1)^i\binom{n}{i}=[n=0]\tag{5} \]

6. 拆组合数:

\[\sum_{i=0}^m\binom{n}{i}\binom{m}{m-i}=\binom{m+n}{m} (n\geq m) \]

当 \(m=n\) 的时候,则有式子:

\[\sum_{i=0}^n \binom{n}{i}^2=\binom{2n}{n} \]

剩下的看 OI-WIKI 好了.

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/154644.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【组合数学】排列组合 ( 多重集组合数 | 所有元素重复度大于组合数 | 多重集组合数 推导 1 分割线推导 | 多重集组合数 推导 2 不定方程非负整数解个数推导 )
这里就将 多重集的组合问题 , 转化成了 另外一个多重集的全排列问题 , 多重集全排列是有公式的 ;
韩曙亮
2023/03/28
8930
【组合数学】排列组合 ( 多重集组合数 | 所有元素重复度大于组合数 | 多重集组合数 推导 1 分割线推导 | 多重集组合数 推导 2 不定方程非负整数解个数推导 )
【组合数学】排列组合 ( 多重集排列 | 多重集全排列 | 多重集非全排列 所有元素重复度大于排列数 | 多重集非全排列 某些元素重复度小于排列数 )
乘法法则 : 最后根据乘法法则 , 将上述每个放置方法乘起来 , 就得到最终的结果 , 阶乘看起来很复杂 , 但是 阶乘选项如
韩曙亮
2023/03/28
1.4K0
【组合数学】生成函数 ( 使用生成函数求解多重集 r 组合数 )
是在重复度不受限制的情况下的选取结果 , 如果重复度受限制 , 就需要使用生成函数进行计算 ;
韩曙亮
2023/03/28
1.1K0
【组合数学】多项式定理 ( 多项式定理 | 多项式定理证明 | 多项式定理推论 1 项数是非负整数解个数 | 多项式定理推论 2 每项系数之和 )
根据分步计数原理 , 乘法法则 , 将上面每步的种类个数相乘 , 就是所有的种类个数 :
韩曙亮
2023/03/28
1.4K0
【组合数学】多项式定理 ( 多项式定理 | 多项式定理证明 | 多项式定理推论 1 项数是非负整数解个数 | 多项式定理推论 2 每项系数之和 )
【组合数学】不定方程解个数问题 ( 多重集r组合数 | 不定方程非负整数解个数 | 生成函数展开式中 r 次幂系数 | 给定范围/系数 情况下不定方程整数解个数 )
组合数是等价的 ; 此时的多重集中每个元素的个数 是无限的 或者 大于 等于
韩曙亮
2023/03/27
1K0
【组合数学】排列组合 ( 多重集组合数示例 | 三个计数模型 | 选取问题 | 多重集组合问题 | 不定方程非负整数解问题 )
球是没有区别的 , 球放到盒子里 , 球没有标号 , 盒子有标号 , 每个盒子放球的个数不同 ;
韩曙亮
2023/03/28
6540
【组合数学】指数生成函数 ( 证明指数生成函数求解多重集排列 )
文章目录 一、证明指数生成函数求解多重集排列 参考博客 : 按照顺序看 【组合数学】生成函数 简要介绍 ( 生成函数定义 | 牛顿二项式系数 | 常用的生成函数 | 与常数相关 | 与二项式系数相关 | 与多项式系数相关 ) 【组合数学】生成函数 ( 线性性质 | 乘积性质 ) 【组合数学】生成函数 ( 移位性质 ) 【组合数学】生成函数 ( 求和性质 ) 【组合数学】生成函数 ( 换元性质 | 求导性质 | 积分性质 ) 【组合数学】生成函数 ( 性质总结 | 重要的生成函数 ) ★ 【组合数学】生成函数
韩曙亮
2023/03/28
5160
【组合数学】指数生成函数 ( 指数生成函数性质 | 指数生成函数求解多重集排列 )
将上述两个 指数生成函数 相乘 , 看做一个函数 , 可以展开成另外一个数列的级数形式 ,
韩曙亮
2023/03/28
6970
【组合数学】指数型母函数 应用 ( 多重集排列问题 | 不同球放在不同盒子里 | 奇/偶数序列的指数生成函数推导 )
但是如果不是全排列 , 是选取其中某些元素进行排列 , 就要用到 指数型母函数了 ;
韩曙亮
2023/03/27
7420
【组合数学】计数模型、常见组合数与组合恒等式 ★★
除端点外 , 不接触对角线的非降路径数 参考 : 【组合数学】非降路径问题 ( 限制条件的非降路径数 )
韩曙亮
2023/03/28
7310
【组合数学】指数生成函数 ( 指数生成函数求解多重集排列示例 )
文章目录 一、指数生成函数求解多重集排列示例 参考博客 : 按照顺序看 【组合数学】生成函数 简要介绍 ( 生成函数定义 | 牛顿二项式系数 | 常用的生成函数 | 与常数相关 | 与二项式系数相关 | 与多项式系数相关 ) 【组合数学】生成函数 ( 线性性质 | 乘积性质 ) 【组合数学】生成函数 ( 移位性质 ) 【组合数学】生成函数 ( 求和性质 ) 【组合数学】生成函数 ( 换元性质 | 求导性质 | 积分性质 ) 【组合数学】生成函数 ( 性质总结 | 重要的生成函数 ) ★ 【组合数学】生成函数
韩曙亮
2023/03/28
4710
【组合数学】生成函数 ( 生成函数应用场景 | 使用生成函数求解递推方程 )
不定方程的解个数 , 之前只能求解 没有约束的情况 , 如果对变量有约束 , 如
韩曙亮
2023/03/28
1.4K0
【组合数学】生成函数 ( 生成函数应用场景 | 使用生成函数求解递推方程 )
【组合数学】生成函数 ( 使用生成函数求解不定方程解个数 )
不定方程解的个数 , 推导过程参考 : 【组合数学】排列组合 ( 多重集组合数 | 所有元素重复度大于组合数 | 多重集组合数 推导 1 分割线推导 | 多重集组合数 推导 2 不定方程非负整数解个数推导 ) 二、多重集组合 所有元素重复度大于组合数 推导 2 ( 不定方程非负整数解个数推导 )
韩曙亮
2023/03/28
7750
【组合数学】生成函数 ( 正整数拆分 | 重复有序拆分 | 不重复有序拆分 | 重复有序拆分方案数证明 )
这种形式可以使用 不定方程非负整数解个数 的生成函数计算 , 是 带系数 , 带限制条件的情况 , 参考 : 组合数学】生成函数 ( 使用生成函数求解不定方程解个数 )
韩曙亮
2023/03/28
2.8K0
排列组合的一些公式及推导(非常详细易懂)[通俗易懂]
分类计数原理:做一件事,有\(n\)类办法,在第\(1\)类办法中有\(m_1\)种不同的方法,在第\(2\)类办法中有\(m_2\)种不同的方法,…,在第\(n\)类办法中有\(m_n\)种不同的方法,那么完成这件事共有\(N=m_1+m_2+…+m_n\)种不同的方法。
全栈程序员站长
2022/09/20
3.9K0
【组合数学】多项式定理 ( 多项式系数 | 多重集全排列 | 对应放球子模型方案数 | 多项式系数相关恒等式 )
③ 不同的球放到不同盒子中 , 不允许有空盒 , 每个盒子放指定个数的球 方案个数 ;
韩曙亮
2023/03/28
4780
【组合数学】生成函数 ( 正整数拆分 | 无序 | 有序 | 允许重复 | 不允许重复 | 无序不重复拆分 | 无序重复拆分 )
一个正整数可以 拆分成若干正整数 的和 , 每种不同的拆分方法 , 就可以 看做一个方案 ;
韩曙亮
2023/03/28
1.8K0
简单易学的机器学习算法——Latent Dirichlet Allocation(理论篇)
LDA(Latent Dirichlet Allocation)称为潜在狄利克雷分布,是文本语义分析中比较重要的一个模型,同时,LDA模型中使用到了贝叶斯思维的一些知识,这些知识是统计机器学习的基础。为了能够对LDA原理有清晰的认识,也为了能够对贝叶斯思维有全面的了解,在这里对基本知识以及LDA的相关知识进行阐述,本系列包括两个部分:
felixzhao
2019/01/31
7150
简单易学的机器学习算法——Latent Dirichlet Allocation(理论篇)
【概率论与数理统计(研究生课程)】知识点总结6(抽样分布)
样本均值:\bar{X}=\frac{1}{n}\sum\limits_{i=1}^{n}X_i
Marigold
2023/08/23
3460
【组合数学】指数生成函数 ( 指数生成函数求解多重集排列示例 2 )
相加 , 奇次幂符号相反 , 直接约掉 , 偶数次幂 变为原来的两倍, 因此在外面乘以
韩曙亮
2023/03/28
4670
推荐阅读
【组合数学】排列组合 ( 多重集组合数 | 所有元素重复度大于组合数 | 多重集组合数 推导 1 分割线推导 | 多重集组合数 推导 2 不定方程非负整数解个数推导 )
8930
【组合数学】排列组合 ( 多重集排列 | 多重集全排列 | 多重集非全排列 所有元素重复度大于排列数 | 多重集非全排列 某些元素重复度小于排列数 )
1.4K0
【组合数学】生成函数 ( 使用生成函数求解多重集 r 组合数 )
1.1K0
【组合数学】多项式定理 ( 多项式定理 | 多项式定理证明 | 多项式定理推论 1 项数是非负整数解个数 | 多项式定理推论 2 每项系数之和 )
1.4K0
【组合数学】不定方程解个数问题 ( 多重集r组合数 | 不定方程非负整数解个数 | 生成函数展开式中 r 次幂系数 | 给定范围/系数 情况下不定方程整数解个数 )
1K0
【组合数学】排列组合 ( 多重集组合数示例 | 三个计数模型 | 选取问题 | 多重集组合问题 | 不定方程非负整数解问题 )
6540
【组合数学】指数生成函数 ( 证明指数生成函数求解多重集排列 )
5160
【组合数学】指数生成函数 ( 指数生成函数性质 | 指数生成函数求解多重集排列 )
6970
【组合数学】指数型母函数 应用 ( 多重集排列问题 | 不同球放在不同盒子里 | 奇/偶数序列的指数生成函数推导 )
7420
【组合数学】计数模型、常见组合数与组合恒等式 ★★
7310
【组合数学】指数生成函数 ( 指数生成函数求解多重集排列示例 )
4710
【组合数学】生成函数 ( 生成函数应用场景 | 使用生成函数求解递推方程 )
1.4K0
【组合数学】生成函数 ( 使用生成函数求解不定方程解个数 )
7750
【组合数学】生成函数 ( 正整数拆分 | 重复有序拆分 | 不重复有序拆分 | 重复有序拆分方案数证明 )
2.8K0
排列组合的一些公式及推导(非常详细易懂)[通俗易懂]
3.9K0
【组合数学】多项式定理 ( 多项式系数 | 多重集全排列 | 对应放球子模型方案数 | 多项式系数相关恒等式 )
4780
【组合数学】生成函数 ( 正整数拆分 | 无序 | 有序 | 允许重复 | 不允许重复 | 无序不重复拆分 | 无序重复拆分 )
1.8K0
简单易学的机器学习算法——Latent Dirichlet Allocation(理论篇)
7150
【概率论与数理统计(研究生课程)】知识点总结6(抽样分布)
3460
【组合数学】指数生成函数 ( 指数生成函数求解多重集排列示例 2 )
4670
相关推荐
【组合数学】排列组合 ( 多重集组合数 | 所有元素重复度大于组合数 | 多重集组合数 推导 1 分割线推导 | 多重集组合数 推导 2 不定方程非负整数解个数推导 )
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验