多重集的排列数与组合数

多重集的排列数与组合数

S = { n 1 a 1 , n 2 a 2 , … , n k a k } S = \{ n_1a_1,n_2a_2,…,n_ka_k\} S={ n1a1,n2a2,,nkak} 是由 n 1 n_1 n1 a 1 a_1 a1 n 2 n_2 n2 a 2 a_2 a2,…, n k n_k nk a k a_k ak组成的多重集。
N = n 1 + n 2 + n 3 + . . . + n k N=n_1+n_2+n_3+...+n_k N=n1+n2+n3+...+nk, n i n_i ni被称为元素 a i a_i ai的重数, k k k成为多重集合的类别数


多重集的排列数

S S S 中任选 r r r 个元素的排列称为 S S S r r r排列,当 r = n r=n r=n时不考虑相同的元素,其全排列的个数为 ( ∑ i = 1 k n i ) ! (\sum_{i=1}^{k}n_i)! (i=1kni)!

S S S的全排列个数为:
A = ( ∑ i = 1 k n i ) ! π i = 1 k ( n i ! ) 或 N ! n 1 ! n 2 ! . . . n k ! ( N = ∑ i = 1 k n i ) A =\frac{(\sum_{i=1}^{k}n_i)!}{\pi_{i=1}^{k}(n_i!)}或\frac{N!}{n_1!n_2!...n_k!}(N=\sum_{i=1}^{k}n_i) A=πi=1k(ni!)(i=1kni)!n1!n2!...nk!N!(N=i=1kni)
N = n 1 + n 2 + n 3 + . . . + n k N=n_1+n_2+n_3+...+n_k N=n1+n2+n3+...+nk


多重集的组合数

S S S 中任选 r r r 个元素的组合称为 S S S r r r组合;
问题一:
给定一个多重集 S = { n 1 a 1 , n 2 a 2 , . . . , n k a k } S=\{n_1a_1,n_2a_2,...,n_ka_k\} S={ n1a1,n2a2,...,nkak}
以及一个整数 r r r,并且 r ≤ n i ( ∀ i ∈ [ 1 , k ] ) r≤n_i(\forall i \in[1,k]) rnii[1,k] 【即 r r r小于等于 n i n_i ni的最小值】
求从S中取出任意r个元素可以 n i n_i ni产生的不同多重集数量

我们设 a i a_i ai x i x_i xi个,那么原问题就等价于不定方程 ∑ i = 1 k x i = r ( x ≥ 0 ) \sum^{k}_{i=1}x_i=r (x≥0) i=1kxi=r(x0)的解的个数。
就是就是要给每个 x i x_i xi赋值 [ 0 , m ] [0,m] [0,m]中的任意整数,且所有 x i x_i xi的和为 m m m,
由于条件 r ≤ n i ( ∀ i ∈ [ 1 , k ] ) r≤n_i(\forall i \in[1,k]) rnii[1,k]所以不用考虑 x i > n i x_i>n_i xi>ni的情况
等价于一共有 r r r个苹果,分给 k k k个人,可以有人拿 0 0 0个苹果,求所有的方案数。
用隔板法计算,其方案数为 C r + k − 1 k − 1 C_{r+k-1}^{k-1} Cr+k1k1 【隔板法传送门】

问题二:
给定一个多重集 S = { n 1 a 1 , n 2 a 2 , . . . , n k a k } S=\{n_1a_1,n_2a_2,...,n_ka_k\} S={ n1a1,n2a2,...,nkak}
以及一个整数 r r r,并且 r ≤ ∑ i = 1 k n i r≤\sum_{i=1}^{k}n_i ri=1kni 【即 r r r小于 N N N
求从S中取出任意r个元素可以 n i n_i ni产生的不同多重集数量

先不考虑 n i n_i ni个元素的限制,即从多重集 S ′ = { ∞ a 1 , ∞ a 2 , … , ∞ a k } S^′= \{∞a_1,∞a_2,…,∞a_k\} S={ a1,a2,,ak}中取 r r r个元素的组合数。
此时 x i x_i xi不受 n i n_i ni限制,就与问题一类似,方案数为 C r + k − 1 k − 1 C_{r+k-1}^{k-1} Cr+k1k1

这里的方案数显然包含了 x i > n i x_i>n_i xi>ni的不合法方案
考虑每个 a i a_i ai取值受 x i x_i xi的限制,设不满足第 i i i个限制的方案集合为 F i F_i Fi
即答案为 C r + k − 1 k − 1 − ∣ ⋃ i = 1 k F i ∣ C_{r+k-1}^{k-1}-|\bigcup^{k}_{i=1}F_i| Cr+k1k1i=1kFi

∣ ⋃ i = 1 k F i ∣ |\bigcup^{k}_{i=1}F_i| i=1kFi用容斥原理计算:

对于 F i F_i Fi,我们从 S S S中取出 n i + 1 n_i+1 ni+1 a i a_i ai【即这样已经是非法方案了,那么我们选择的任意 m − n i − 1 m-n_i-1 mni1个元素都是非法方案】,再从S中任意(注意可以是 a i a_i ai也可以是别的) m − n i − 1 m-n_i-1 mni1个元素构成 F i F_i Fi集合
这样我们可以看成是一共有 ( r − n i − 1 ) (r-n_i-1) (rni1)个苹果,分给 k k k个人,可以有人拿0个苹果,求所有方案数。
由问题一可得: C r − n i − 1 + k − 1 k − 1 → C r − n i + k − 2 k − 1 C_{r-n_i-1+k-1}^{k-1}→C_{r-n_i+k-2}^{k-1} Crni1+k1k1Crni+k2k1
我们得出的结论是所有 x i > n i x_i>n_i xi>ni的不合法方案;但是我们发现我们还多算上了 ∣ F i ⋂ F j ∣ \left|F_i\bigcap F_j\right | FiFj的数量。(即同时包含了至少 n i + 1 n_i+1 ni+1 a i a_i ai和至少 n j + 1 n_j+1 nj+1 a j a_j aj的多重集)
多算的原因:看上方绿色字体,我们选择剩余元素的方案中,包含同时选择了至少 n j + 1 n_j+1 nj+1 a j a_j aj的多重集的方案。
我们求一下 ∣ F i ⋂ F j ∣ |F_i\bigcap F_j| FiFj,也就是我们取 n i + 1 n_i+1 ni+1 a i a_i ai,再取 n j + 1 n_j+1 nj+1 a j a_j aj ,其余的 r − n i − n j − 2 r-n_i-n_j-2 rninj2个元素任意取。还是类似于问题一的方法:得出 ∣ F i ⋂ F j ∣ = C k + r − n i − n j − 3 k − 1 |F_i\bigcap F_j|=C_{k+r-n_i-n_j-3}^{k-1} FiFj=Ck+rninj3k1

反复容斥可得:

∣ ⋃ i = 1 k F i ∣ = ∑ i = 1 k C r − n i + k − 2 k − 1 − ∑ 1 ≤ i < j ≤ n C k + r − n i − n j − 3 k − 1 + . . . + ( − 1 ) k C k + r − ∑ i = 1 k n i − ( k + 1 ) k − 1 \left |\bigcup^{k}_{i=1}F_i \right| = \sum_{i=1}^{k}C_{r-n_i+k-2}^{k-1}-\sum_{1≤ii=1kFi=i=1kCrni+k2k11i<jnCk+rninj3k1+...+(1)kCk+ri=1kni(k+1)k1

最终答案:
C r + k − 1 k − 1 − ∑ i = 1 k C r − n i + k − 2 k − 1 + ∑ 1 ≤ i < j ≤ n C k + r − n i − n j − 3 k − 1 − . . . + ( − 1 ) k C k + r − ∑ i = 1 k n i − ( k + 1 ) k − 1 C_{r+k-1}^{k-1}-\sum_{i=1}^{k}C_{r-n_i+k-2}^{k-1} + \sum_{1≤iCr+k1k1i=1kCrni+k2k1+1i<jnCk+rninj3k1...+(1)kCk+ri=1kni(k+1)k1

你可能感兴趣的:(组合数,容斥原理)