【组合数学】排列组合 ( 多重集排列 | 多重集全排列 | 多重集非全排列 所有元素重复度大于排列数 | 多重集非全排列 某些元素重复度小于排列数 )



排列组合参考博客 :





一、多重集



多重集表示 :

S = { n 1 ⋅ a 1 , n 2 ⋅ a 2 , ⋯   , n k ⋅ a k } ,     0 ≤ n i ≤ + ∞ S = \{ n_1 \cdot a_1 , n_2 \cdot a_2 , \cdots , n_k \cdot a_k \} , \ \ \ 0 \leq n_i \leq +\infty S={n1a1,n2a2,,nkak},   0ni+

  • 元素种类 : 多重集中含有 k k k 种不同的元素 ,
  • 元素表示 : 每个元素表示为 a 1 , a 2 , ⋯   , a k a_1 , a_2 , \cdots , a_k a1,a2,,ak ,
  • 元素个数 : 每个元素出现的次数是 n 1 , n 2 , ⋯   , n k n_1, n_2, \cdots , n_k n1,n2,,nk ,
  • 元素个数取值 : n i n_i ni 的取值要求是 大于 0 0 0 , 小于正无穷 + ∞ + \infty + ;




二、多重集全排列



多重集 :

S = { n 1 ⋅ a 1 , n 2 ⋅ a 2 , ⋯   , n k ⋅ a k } ,     0 ≤ n i ≤ + ∞ S = \{ n_1 \cdot a_1 , n_2 \cdot a_2 , \cdots , n_k \cdot a_k \} , \ \ \ 0 \leq n_i \leq +\infty S={n1a1,n2a2,,nkak},   0ni+

★ 全排列 : r = n 1 + n 2 + ⋯ + n k = n r = n_1 + n_2 + \cdots + n_k = n r=n1+n2++nk=n

N = n ! n 1 ! n 2 ! ⋯ n k ! N = \cfrac{n!}{n_1! n_2! \cdots n_k!} N=n1!n2!nk!n!

多重集的全排列数是 元素总数阶乘 , 除以 所有重复度的阶乘 ;



下面是推导过程



k k k 种元素 ,

放置元素 a 1 a_1 a1 : 在排列中先放第一种元素 a 1 a_1 a1 , 该元素有 n 1 n_1 n1 个 , n n n 个位置中选出 n 1 n_1 n1 个 位置 , 有 C ( n , n 1 ) C(n, n_1) C(n,n1) 种方法 ;

C ( n , n 1 ) = n ! ( n − n 1 ) !   n 1 ! C(n, n_1) = \cfrac{n!}{(n-n_1) ! \ n_1!} C(n,n1)=(nn1)! n1!n!

放置元素 a 2 a_2 a2 : 放置好 n 1 n_1 n1 之后放置第二种元素 a 2 a_2 a2 , 该元素有 n 2 n_2 n2 个 , 此时还有 n − n 1 n-n_1 nn1 个空位 , n − 1 n-1 n1 个位置中选择 n 2 n_2 n2 个位置有 C ( n − n 1 , n 2 ) C(n-n_1 , n_2) C(nn1,n2) 种方法 ;

C ( n − n 1 , n 2 ) = ( n − n 1 ) ! ( n − n 1 − n 2 ) !   n 2 ! C(n - n_1, n_2) = \cfrac{(n-n_1)!}{(n-n_1 - n_2) ! \ n_2!} C(nn1,n2)=(nn1n2)! n2!(nn1)!

⋮ \vdots

放置元素 a k a_k ak : 放置最后一个元素 a k a_k ak , 该元素有 n k n_k nk 个 , 此时还有 n − n 1 − ⋯ − n k − 1 n-n_1- \cdots -n_{k-1} nn1nk1 个空位 , n − n 1 − ⋯ − n k − 1 n-n_1- \cdots -n_{k-1} nn1nk1 个位置中选择 n k n_k nk 个位置有 C ( n − n 1 − ⋯ − n k − 1 , n k ) C(n-n_1- \cdots -n_{k-1} , n_k) C(nn1nk1,nk) 种方法 ;

C ( n − n 1 − ⋯ − n k − 1 , n k ) = ( n − n 1 − ⋯ − n k − 1 ) ! ( n − n 1 − ⋯ − n k − 1 − n k ) !   n k ! C(n-n_1- \cdots -n_{k-1} , n_k) = \cfrac{(n-n_1- \cdots -n_{k-1})!}{(n-n_1- \cdots -n_{k-1} - n_k) ! \ n_k!} C(nn1nk1,nk)=(nn1nk1nk)! nk!(nn1nk1)!



乘法法则 : 最后根据乘法法则 , 将上述每个放置方法乘起来 , 就得到最终的结果 , 阶乘看起来很复杂 , 但是 阶乘选项如 ( n − n 1 − ⋯ − n k − 1 ) ! (n-n_1- \cdots -n_{k-1})! (nn1nk1)! 都可以约掉 , 最终结果如下 :

N = C ( n , n 1 ) C ( n − n 1 , n 2 ) C ( n − n 1 − ⋯ − n k − 1 , n k ) = n ! ( n − n 1 ) !   n 1 ! × ( n − n 1 ) ! ( n − n 1 − n 2 ) !   n 2 ! × ( n − n 1 − ⋯ − n k − 1 ) ! ( n − n 1 − ⋯ − n k − 1 − n k ) !   n k !     约 掉 部 分 阶 乘 = n ! n 1 ! n 2 ! ⋯ n k ! \begin{array}{lcl} N & = & C(n, n_1) C(n - n_1, n_2) C(n-n_1- \cdots -n_{k-1} , n_k) \\\\ & = & \cfrac{n!}{(n-n_1) ! \ n_1!} \times \cfrac{(n-n_1)!} {(n-n_1 - n_2) ! \ n_2!} \times \cfrac{(n-n_1- \cdots -n_{k-1})!}{(n-n_1- \cdots -n_{k-1} - n_k) ! \ n_k!} \ \ \ 约掉部分阶乘 \\\\ &=& \cfrac{n!}{n_1! n_2! \cdots n_k!} \end{array} N===C(n,n1)C(nn1,n2)C(nn1nk1,nk)(nn1)! n1!n!×(nn1n2)! n2!(nn1)!×(nn1nk1nk)! nk!(nn1nk1)!   n1!n2!nk!n!





三、多重集全排列示例



求多重集 S = { 3 ⋅ a , 2 ⋅ b , 1 ⋅ c } S=\{ 3 \cdot a , 2 \cdot b , 1 \cdot c \} S={3a,2b,1c} 的全排列 ?


上述多重集元素总个数是 n = 3 + 2 + 1 = 6 n = 3 + 2 + 1 = 6 n=3+2+1=6 ;

全排列个数是 :

N = 6 ! 3 ! × 2 ! × 1 ! = 6 × 5 × 4 × 3 × 2 × 1 ( 3 × 2 × 1 ) × ( 2 × 1 ) × ( 1 × 1 ) = 60 N = \cfrac{6!}{3! \times 2! \times 1!} = \cfrac{6 \times 5 \times 4 \times 3 \times 2 \times 1}{( 3 \times 2 \times 1 ) \times ( 2 \times 1 ) \times (1 \times 1)} = 60 N=3!×2!×1!6!=(3×2×1)×(2×1)×(1×1)6×5×4×3×2×1=60





三、多重集非全排列 1 所有元素重复度大于排列数 ( n i ≥ r n_i \geq r nir )



多重集 :

S = { n 1 ⋅ a 1 , n 2 ⋅ a 2 , ⋯   , n k ⋅ a k } ,     0 ≤ n i ≤ + ∞ S = \{ n_1 \cdot a_1 , n_2 \cdot a_2 , \cdots , n_k \cdot a_k \} , \ \ \ 0 \leq n_i \leq +\infty S={n1a1,n2a2,,nkak},   0ni+

★ 非全排列情况 1 1 1 : r ≤ n i r \leq n_i rni , 注意这里的 r r r 要 小于等于 最小的 n i n_i ni ;

N = k r N = k^r N=kr



推导过程 :

在上述条件下 ,

r r r 个位置 ,

每个位置的元素都有 k k k 种选择 ,

根据乘法法则 , 总的选择个数是 k × k × ⋯ × k ⏟ r 个 k \begin{matrix} \underbrace{ k \times k \times \cdots \times k } \\ r 个 k \end{matrix} k×k××krk ,

r k r^k rk ;





四、多重集非全排列 2 某些元素重复度小于排列数 ( n i ≤ r n_i \leq r nir )



上述情况只适用于重复度足够大的情况 , 即 每个元素的重复度都大于选取个数 , r ≤ n i r \leq n_i rni

如果 有一个元素的重复度小于选取个数 , r ≥ n i r \geq n_i rni ,

S = { 3 ⋅ a , 2 ⋅ b , 1 ⋅ c } S=\{ 3 \cdot a , 2 \cdot b , 1 \cdot c \} S={3a,2b,1c} 多重集的三排列 , 就无法使用公式计算了 ,

没有公式可以计算 , 但是可以 使用 包含排斥原理 , 生成函数 进行计算 ;

  • 4
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值