常见排列组合问题的计算公式

在进行排列组合计算以及概率计算时我们经常会遇到一些具有相同性质的问题。假设问题的样本空间Ω中一共有k种类型的元素α, β,γ... κ。每种类型的元素个数分别为Nα, Nβ,Nγ... Nκ。那么这些元素组成的重复元素的集合Ω为: Ω= { Nα * α, Nβ * β, Nγ * γ, ... Nκ * κ}

总的元素数量 N = Nα + Nβ + Nγ + ... Nκ

在实践中我们会遇到从集合Ω中取子集Ε的问题,取子集的问题从概率论的角度来说就是某种事件出现的概率。 如果是同时取的话就不会考虑排列的顺序因此这就会归类为一个求组合的问题。而如果是依次取的话就需要考虑排列的顺序了因此这个就可以归类为一个排列的问题,而对于排列的问题我们又可以细分为放回排列和不放回排列两种场景。因此我们可以将从集合Ω中取元素分类为三种大类型的问题:组合、放回排列、不放回排列。

组合


对于组合类型的问题来说总是描述为从N个元素的集合Ω中同时取出M个元素组成的子集Ε, 然后再问其中的某种类型元素或者某几种类型元素出现的个数的问题。 这里之所以用组合的原因是强调同时以及不需要排列的概念,因此不需要考虑每次取的顺序,就不存在排列的问题。因此我们从N个元素里面取M个元素的总共的取法有 C(N,M) 种方法。

子问题1: 某种类型元素γ刚好出现R次。

这里的γ 是k种类型的元素中的任意一种,数量为Nγ。 因为所有M个元素中γ的数量固定为R,因此其他剩下的元素的组合数量是C(N-Nγ, M-R), 而在Nγ个中取R个元素γ的组合数量是 C(Nγ, R)。因此一共有:

C(Nγ,R) * C(N-Nγ, M-R)

举例1:一个袋中有5个白球,3个红球。一次取2个问取到的是2个红球的概率?

_ 答 _ :C(5,0) * C(3,2) / C(8,2) = 3 / 28

举例2:一个袋中有5个白球,3个红球。一次取2个问取到的是2个相同的球的取法?

_ 答 _: C(5,0) * C(3,2) + C(3,0) * C(5,2) = 13

子问题2: 某种类型元素γ最多出现R次。

这个问题可以理解为分别计算出现0次到R次的和:

R ΣC(Nγ, i) * C(N-Nγ, M-i) i=0

举例1:一个袋中有5个白球,3个红球。一次取2个,取到的不是红球的概率?

C(5,2) * C(3,0) / C(8,2) = 10 / 28 //红球0次

子问题3: 某种类型元素γ最少出现R次。

M Σ C(Nγ, i) * C(N-Nγ, M-i) i=R

子问题4: 元素α出现A次,元素β出现B次... 元素γ出现R次。A + B + .. R <= M

C(Nα, A) * C(Nβ, B) * ... C(Nγ, R) * C(Nα-Nβ - ... Nγ , M - A - B -... R)

举例1:一个袋中有5个白球,3个红球。一次取2个,取到的是一个白球和一个红球的概率

_ 答 _: C(5,1) * C(3,1) * C(8-8, 2-1-1) / C(2,8) = 15 / 28

举例2:一个袋中有5个白球,3个红球。一次取3个,取到的是一个白球和一个红球的概率

_ 答 _: C(5,1) * C(3,1) * C(8-8, 3-1-1) / C(2,8) = 0 / 28 // 因为C(0,1) == 0, 这是因为白色和红色取3个,不可能只有一个白球和一个红球的情况。

举例3: 口袋中有10个球,分别标号为1到10,现在从中任选3只,问最小号为5的取法?

_ 答 _: 这个问题可以简化为 5个大于5的元素为一类,5为一类,4个小于5的元素为一类,这样就转化为了大于5的元素出现2次,等于5的元素出现1次的数量了: C(5,2) * C(1,1) * C(10 - 5 - 1, 3 -2 -1) = 10

子问题5:元素α至少出现A次,元素β出现B次。

这个问题可以先选择β 再来选择α。

    M - B C(Nβ, B) * Σ C(Nα, i ) * C(N-Nα-Nβ, M - i - B)      i = A

子问题6: 元素α至少出现A次,元素β至少出现B次... 元素γ至少出现R次。A + B + .. R <= M

M-B-..R  M-i-.. R   M - i - j -.. Σ C(Nα, i) * Σ C(Nβ, j) * ... Σ C(Nγ, w) * C(N-Nα-Nβ - ... Nγ, M - i - j - ..w ) i=A    j = B     w = R

举例1:一个袋中有10个白球,20个红球,30个黑球。 一次取18个,问取到的结果中白球至少有3个,红球至少有2个,黑球至少有4个的取法

_ 答:_ 按上述公式套入即可

子问题7: 元素α至多出现A次,元素β至多出现B次... 元素γ至多出现R次。

A     min(B, M-i) min(R, M - i - j -.. .) ΣC(Nα, i) * Σ C(Nβ, j) * ... ΣC(Nγ,w) * C(N-Nα - Nβ -... Nγ, M - i - j - ..w) i=0    j = 0    w = 0

可放回排列


可放回排列每次从N个元素中取出一个元素,然后再放回,然后再继续取,依次取M次。这样一次就有N种取法,M次就一共有N^M种取法,因为是依次取所以需要考虑排列的顺序。 可放回排列也称为n重伯努利实验。每次取的元素都是独立的。

子问题1: 第i次取到是元素γ的方法。

第i次有Nγ种取法,其他M-1次都有N种。因此结果是:

Nγ * N^(M-1)

上面公式中无论哪次取的概率都是: Nγ / N。这个就像可重复抽奖一样,对于奖品每次的概率都是一样的。

子问题2: 只有第i次取到的是元素γ的方法。(1 <= i <= M)

因为只有第i次取到元素γ,因此前面和后面都不能再出现γ了,这样的数量为:

(N-Nγ)^(i-1) * Nγ * (N - Nγ)^(M-i) == Nγ * (N-Nγ)^(M-1)

子问题3: 取到γ元素R次的取法。

某元素一次可能出现在任何一个位置,某次出现的次数是: Nγ * (N-Nγ)^(M-1) 。而因为出现R次所以有:Nγ^R * (N - Nγ)^(M - R), 而这R次一共有 C(M, R)种位置摆放。因此最终的数量是:

C(M, R) * Nγ^R * (N - Nγ)^(M - R)

概率为C(M, R) * Nγ^R * (N - Nγ)^(M - R) / N^M = C(M,R) *(Nγ / N)^R * ((N-Nγ)/N)^(M-R) 。如果只有2种类型的元素,这个结果正是二项分布的公式。因此二项里面的概率p其实就是这种元素的个数Nγ/N。

举例1 骰子连续掷2次,求最小点数是2的方法?

_ 答:_ 每次有6种结果,可重复排列,因为这里要求最小为2,因此我们可以划分为 {3,4,5,6} {2} 2个集合,这样可以用 { 4 * a, 1*b} 这种形式,因此问题变为了求b出现1次或者出现2次的问题:

11*(5-1)(2-1) * C(2,1) + 12*(5-1)(2-2)*C(2,2) = 8 + 1 = 9

子问题3 : 第i次取到α, 第j次取到β, .. 第w次取到γ ( i <>j <>...<>w)。取的种类数为R

Nα * Nβ * ... Nγ * N^(M - R)

子问题4: 取到α元素A次,β元素B次,... γ元素R次。

C(M, A) * C(M-A, B) *... C(M-A-B-..., R) * Nα^A * Nβ^B *... Nγ^R * (N - Nα -Nβ - ...Nγ) ^ (M - A - B - ... R)

举例1 10个白球,4个黑球,6个红球,可放回取,取7次。问取到3颗白球和2颗黑球的方法?

_ 答: _ 10^3 * 4^2 * 6 ^ 2 * C(7,3) * C(4,2)

不放回排列


不放回排列是从N个元素里面依次取,每次取1个,然后一共取M次。这样第一次有N种取法,第二次有N-1种取法,第M次有N-M+1种取法,因此总的可取的数量是:A(N,M) 。这里的排列是要考虑顺序的。

子问题1: 第i次取到的元素是γ。(1 <= i <= M)

前i-1次不能取到γ,i+1次以后也不能取到,而第i次有Nγ种取法,因此得到:

A(N-1, i-1) * Nγ * A(N-i, M-i) = Nγ * A(N-1, M-1)

子问题2: 取到γ元素R次。 (R < Nγ)

某一个位置上一共有 A(Nγ, R) * A(N-Nγ, M-R),一共有 C(M,R)种放置方法。因此结果是:

C(M,R) * A(Nγ, R) * A(N-Nγ,M-R)

子问题3 : 第i次取到α, 第j次取到β, ... 第w次取到γ ( i <>j <>... w) 类型数量为R

这个问题因为每次取到的值和其他位置取到的值无关,每种类型的方法都是其元素的数量,因此可以用乘法,剩余的再用排列来计算。

Nα * Nβ * ...*Nγ * A(N-R, M-R)

子问题4: 取到α元素A次,β元素B次,... γ元素R次

这个问题中每种类型出现的次数固定,因此这种类型用排列,每种元素之间用乘法来实现,同时每种元素的位置则是用组合。

C(M, A)*C(M-A, B) *...C(M-A-B..., R) * A(Nα, A) *A(Nβ, B) * ..A(Nγ, R) * A(N-Nα-Nβ-...Nγ, M-A-B-...R)

举例1 10个白球,4个黑球,6个红球,不放回取,取7次。问取到3颗白球和2颗黑球的方法?

_ 答: _ C(7,3) * C(4,2) * A(10, 3) * A(4,2) * A(6 , 2)

总结

通过上面的公式,我们可以发现这些公式之间的一些相似的特征:

  • 某种元素γ出现的次数R的公式可以分解为三部分:位置部分 * 自身的排列组合部分 * 剩余元素的排列组合部分 。位置部分总是C(M,Nγ); 自身的排列组合部分则组合总是1,可放回排列则是Nγ^R,不可放回排列则是A(Nγ,R); 剩余元素的排列组合部分则组合是C(N-Nγ, M-R), 可放回排列则是(N-Nγ)^(M-R), 不可放回排列则是A(N-Nγ, M-R)。
  • 多种元素出现次数的公式则是单种元素出现次数的乘积,而且和出现的顺序是无关的,正因为如此才可以使用乘法公式。
  • 某个元素至多至少出现的R的公式则可以分解为从0到R次(至多)或者R到M次(至少)的和来计算。
  • 某些问题看似和上面描述的各种子问题无关,但是我们可以通过一定的方式来转化为上述各种子问题来求解。例如我们要把N个元素放入M个位置(N <=M)时则可以反过来看成一个可放回的排列问题把位置M当做元素而把元素N当做位置来求解。