有重复的组合计数 By ACReaper

我们都知道没有重复的组合,其计算方法本质上就在有n个元素的集合中选则r个元素的子集个数,所以可以推出其计算公式为C(n,r)

至于它的公式推导,可以这样看,我们可以先选出这些子集后,对这些r个元素的集合,进行没有重复的排列也就是p(r,r).则从n个元素

的集合中无重复的进行r排列,即p(n,r) = p(r,r) * C(n,r),p(n,r)的公式我们推导过了,所以可以很方便的推算出C(n,r)。有了这些最基本

的知识,我下面介绍有重复的组合。


假设我们有三种水果,苹果,梨,香蕉若干放在一个碗中,现在我们要拿出四个水果,问有几种拿出的类型,我们只关注类型的个数,如:(苹果:3个,香蕉:1个,梨:0个),但是不考虑先后拿,问有几种方式。


对于这个问题,我们可以这样看,我们把它抽象为数学本质,其实就是从{苹果,梨,香蕉}这三元素的集合中选出4个可以重复的组合(这里指的重复是指水果)。

我们用两块竖线就可以表示三个区域,这三个区域就分别代表苹果,梨,香蕉,接着就是要把4个水果分别放入三个区域,我们此时把4个水果也看成竖线,则一共有7根竖线,

现在问题就简单了,我们只需要在这7根竖线中选择4根转化为水果,这就可以把他们的类型区分开了,所以一共有C(6,4) = C(6,2) = 15种。


于是我们可以总结出重复组合的计数定理:

假设有一个集合T,有n个元素,重中选择元素组合成r可重复排列,则它的个数是C(n - 1 + r,r) = C(n + r - 1,r) = C(n + r - 1,n - 1);

证明方法:就是用组合的方式证明,打字太幸苦,这里就不再证明了。


2013 04 23 

By ACReaper 

posted @ 2013-04-23 22:58  算法黑魔王  阅读(316)  评论(0编辑  收藏  举报