博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
放球问题 组合数学 转自百度百科
阅读量:5889 次
发布时间:2019-06-19

本文共 2858 字,大约阅读时间需要 9 分钟。

放球是指把 n个球放到 m个盒子里的方案数。它是组合数学的一个非常重要的问题。根据球是否相同,盒子是否有区别,是否允许有空盒以及n与m 的大小关系,放球问题可分成 16 个子问题。不同情况总结见下表。
 
1,n 个球有区别,m 个盒子有区别,允许有空盒,n≥m≥1
由于可以有空盒,所以每个球可以放到m个盒子的任意一个盒子里。又因为盒子是有区别的,所以对于任意一个球有m种不同的选择。 n个球是有区别的,所以总共有
  
种方案。比如,当n=3 时,第 1 个球有m种不同选择,第 2 个球有m种不同选择,第3个球有m种不同选择,据乘法法则总共有
  
种方案。
2. n 个球有区别,m 个盒子有区别,允许有空盒,m>n≥1。
由于可以有空盒,所以每个球可以放到m个盒子的任意一个盒子里。又因为盒子是有区别的,所以对于任意一个球有m种不同的选择。n个球是有区别的,所以总共有
  
种方案。
3. n 个球有区别,m 个盒子无区别,无空盒,n≥m≥1
  根据 [1]  中第二类司特林数的定义,n个有区别的球放到m个相同的盒子中,要求无一空盒,其不同的方案数为S(n,m)。
4. n 个球有区别,m 个盒子无区别,无空盒,m>n≥1
  由于m>n,而n个球至多可放入n个盒子里,所以必定有空盒。故满足此条件的方案数为 0。
  5. n 个球有区别,m 个盒子有区别,无空盒,n≥m≥1
  对于这个问题,可以先假设m个盒子是无区别的,这样根据 3 可知总共有S(n,m)种不同的方案数。然后再把m个盒子进行全排列,所以总共有m!S(n,m)种方案。
  6. n 个球有区别,m 个盒子有区别,无空盒,m>n≥1
  由于m>n, 而n个球至多可放入n个盒子里,所以必定有空盒。故满足此条件的方案数为 0。
  7. n 个球有区别,m 个盒子无区别,允许有空盒,n≥m≥1
  因为允许有空盒,我们可以设非空的盒子数是k个。则问题变成n个有区别的球放到k个无区别的盒子里,要求无一空盒。据3可知,总共有S(n,k) 种方案。因为n≥m, k的取值范围是[1, m], 所以共有S(n, 1) + S(n, 2) + …… + S(n, m)种方案。
8. n 个球有区别,m 个盒子无区别,允许有空盒,m>n≥1
  因为允许有空盒,我们可以设非空的盒子数是k个。则问题变成n个有区别的球放到k个无区别的盒子里,要求无一空盒。据3可知,总共有S(n,k) 种方案。因为m>n, k的取值范围是[1, n], 所以共有S(n, 1) + S(n, 2) + …… + S(n, n)种方案。
9. n 个球无区别,m 个盒子有区别,允许有空盒,n≥m≥1
  先介绍允许重复的组合的概念。允许重复的组合是指从集合A={1,2,……,n}中取r个元素{
  
},
  
并且允许当
  
时,
  
.例如A={1,2,3}, 取A中2个元素作允许重复的组合,除了不重复的{1,2}, {1,3}和{2,3}外,还包含{1,1}, {2,2}, {3,3}。根据 [1]  可知,在n个不同的元素中取r个作允许重复的组合,其组合数为C(n+r-1, r)。设m个不同的盒子构成集合M。每次从集合M中取出n个元素作允许重复的组合。若组合中,第i个盒子出现了k次(n≥k≥0),则表示第i个盒子中有k个球。因此问题可表示为 从m个不同的元素中取n个作允许重复的组合,其方案数为C(m+n-1, n)。
也可利用“插板法”来理解。假设n个球和m-1个板放到n+m-1个位置,第1个板前的放进第一个盒子,第i-1个版和第i个版之间的球放进第i个盒子,则共有C(m+n-1,n)种放法。由于此时板可以连续放,故对应允许有空盒的情况。
10. n 个球无区别,m 个盒子有区别,允许有空盒,m>n≥1
此问题可表示为从m个不同的元素中取n个作允许重复的组合,其方案数为C(m+n-1, n)。
11. n 个球无区别,m 个盒子有区别,无空盒,n≥m≥1
  由于要求无空盒,而且n个球无区别,所以先取出m个球放入m个盒子里。此时,这个问题可转化为求将(n-m)个无区别的球放入m个有区别的盒子里,允许有空盒的方案数。这 个 问 题 就 变 成 了 9 所 解 决 的 问 题 。 因此有C(m+(n-m)-1, n-m)=C(n-1, n-m)=C(n-1, n-1-(n-m))=C(n-1,m-1)种方案。
12. n 个球无区别,m 个盒子有区别,无空盒,m>n≥1
  由于n<m,而n个球至多可放入n个盒子里,所以必定有空盒。故满足此条件的方案数为 0。
  13. n 个球无区别,m 个盒子无区别,允许有空盒,n≥m≥1
  此问题相当于把n个球分成k堆,其中m>=k>1。根据 [1]  中2.9 节的推论:设n≥m,n拆分成最多m个数的和的拆分数等于将n拆分成最大数不超过m的拆分数。据上述推论可把问题转化为把整数n拆分成最大数不超过m的拆分数。而把整数拆分成最大不超过m的拆分数
  
的母函数为
  
故满足条件的方案数等于把n用{1,2,...,m}进行拆分的拆分数,等于G(x)的
  
项系数。
  14. n 个球无区别,m 个盒子无区别,允许有空盒,m>n≥1
  此问题相当于把n个球分成k堆。其中m>=k>1且n>=k>1。又因m>n,所以k的取值范围为n>=k>1。
  据13 可知此问题可转化为把整数n拆分成最大数不超过n的拆分数。而把整数拆分成 最 大不 超 过n的 拆 分 数的母函数为
故满足条件的方案数等于把n用{1,2,...,n}进行拆分的拆分数,等于G(x)的
  
项系数。
15. n 个球无区别,m 个盒子无区别,无空盒,n≥m≥1
  我们可先将每个盒子放一个球,然后利用类比13题,即
满足条件的方案数等于G(x)的
  
项系数。
16. n 个球无区别,m 个盒子无区别,无空盒,m>n≥1
  由于n<m, 而n个球至多可放入n个盒子里,所以必定有空盒。故满足此条件的方案数为0。

 

n个球是否有区别
  
m个盒是否有区别 是否允许空盒 n是否大于m 方案数 简要解释
  是
每个球有m种可能
每个球有m种可能
类比盒无区别时,再乘以盒的可能排列
盒比球多,必有空盒
枚举有球盒的数量,再利用斯特林数
枚举有球盒的数量,再利用斯特林数
  
根据斯特林数定义
盒比球多,必有空盒
  
插板法或根据可重组合计算公式
同上
先给每盒放一球,然后利用n-m个球,m个盒子有空盒的解
盒比球多,必有空盒
  
  
的系数
母函数方法
  
的系数
母函数方法
  
的系数
母函数方法
盒比球多,必有空盒

转载于:https://www.cnblogs.com/l609929321/p/9555155.html

你可能感兴趣的文章
JavaScript---事件
查看>>
Android NDK入门实例 计算斐波那契数列一生成jni头文件
查看>>
c/c++性能优化--I/O优化(上)
查看>>
将HTML特殊转义为实体字符的两种实现方式
查看>>
jquery 保留两个小数的方法
查看>>
网站架构设计的误区
查看>>
Standard C++ Programming: Virtual Functions and Inlining
查看>>
html5 Web Workers
查看>>
iis 故障导致网站无法访问
查看>>
作业抄袭简单检测
查看>>
ASP.NET 回调技术(CallBack)
查看>>
Spark源码分析 – BlockManager
查看>>
JS中的this
查看>>
人生, 不要在别扭的事上纠结
查看>>
C的面向对象编程
查看>>
日志服务器架构设计
查看>>
使用Unity开发Android的几种调试方法
查看>>
C++ 基础笔记(一)
查看>>
编译内核出错:invalid option `abi=aapcs-linux' 解决办法
查看>>
System.Func<>与System.Action<>
查看>>