【DM】多重集合组合

编程入门 行业动态 更新时间:2024-10-20 07:57:56

【DM】多重集合<a href=https://www.elefans.com/category/jswz/34/1769978.html style=组合"/>

【DM】多重集合组合

  • 多重集的 r r r 组合是指从集合中无序地选出 r r r 个元素。 r r r 组合自身也是一个多重集,例如我们给定多重集: M = { 4 ⋅ a , 2 ⋅ b , 3 ⋅ c } M=\{4\cdot a,2\cdot b,3\cdot c\} M={4⋅a,2⋅b,3⋅c}那么该多重集的 2 2 2 组合会包括诸如 { a , a } , { b , b } , { c , c } \{a,a\},\{b,b\},\{c,c\} {a,a},{b,b},{c,c} 这样的多重集。

  • 定理】给定多重集 M = { ∞ ⋅ a 1 , ∞ ⋅ a 2 , ⋯ , ∞ ⋅ a k } M=\{\infin\cdot a_1,\infin\cdot a_2,\cdots,\infin\cdot a_k\} M={∞⋅a1​,∞⋅a2​,⋯,∞⋅ak​},其 r r r 组合的数量为: ( k − 1 + r r ) \binom{k-1+r}{r} (rk−1+r​)
  • 证明.1】不难发现, r r r 组合本质上可以视为多重集 M M M 的一个 r r r 元子集,设其 r r r 组合为: { x 1 ⋅ a 1 , x 2 ⋅ a 2 , ⋯ , x k ⋅ a k } \{x_1\cdot a_1,x_2\cdot a_2,\cdots,x_k\cdot a_k\} {x1​⋅a1​,x2​⋅a2​,⋯,xk​⋅ak​}其中重数满足: x 1 + x 2 + ⋯ + x k = r (*) x_1+x_2+\cdots+x_k=r\tag{*} x1​+x2​+⋯+xk​=r(*)那么上述求取多重集 r r r 组合数量的问题就转换为求解 ( ∗ ) (*) (∗) 式中 { x i ∣ i = 1 , 2 , ⋯ , k } \{x_i|i=1,2,\cdots,k\} {xi​∣i=1,2,⋯,k} 有多少组非负整数解,非负整数解与 r r r 组合之间的映射关系是双射函数。
  • 一种极为巧妙的方法是,我们将一组非负整数解表示为如下的 0 , 1 0,1 0,1 序列: 11111 ⋯ 11 ⏞ x 1 0 1111 ⋯ 11 ⏞ x 2 0 ⋯ 0 111 ⋯ 11 ⏞ x k (1) \overbrace{11111\cdots11}^{x_1}~0~\overbrace{1111\cdots11}^{x_2}~0~\cdots~0~\overbrace{111\cdots11}^{x_k}\tag{1} 11111⋯11 x1​ 0 1111⋯11 x2​ 0 ⋯ 0 111⋯11 xk​(1)该 0 , 1 0,1 0,1 序列的构造方法是:将长度为 x i x_i xi​ 的 1 1 1 串之间用 0 0 0 隔开,不难发现整个序列中 0 0 0 有 k − 1 k-1 k−1 个, 1 1 1 有 r r r 个,所以形如 ( 1 ) (1) (1) 的序列可以视为如下多重集的一个全排列: M ′ = { r ⋅ 1 , ( k − 1 ) ⋅ 0 } M'=\{r\cdot1,(k-1)\cdot0\} M′={r⋅1,(k−1)⋅0}那么回顾在《多重集合排列》中给出的定理,我们知道这样的全排列数量为: ( k − 1 + r ) ! r ! ⋅ ( k − 1 ) ! = ( k − 1 + r r ) \frac{\big(k-1+r\big)!}{r!\cdot\big(k-1\big)!}=\binom{k-1+r}{r} r!⋅(k−1)!(k−1+r)!​=(rk−1+r​)

  • 证明.2】相较于证明 1 1 1,证明 2 2 2 稍显复杂,但其中用的原理都是类似的。即离散数学中关于映射的如下定理:对于给定的任意集合(即包括无限集合) A , B A,B A,B,如果有一个从 A A A 到 B B B 的双射函数,那么称 A A A 和 B B B 等势,即 ∣ A ∣ = ∣ B ∣ . |A|=|B|. ∣A∣=∣B∣. 另外关于集合的势,有着很显然但意义深远的三歧性定理:给定集合 A , B A,B A,B,那么 ∣ A ∣ < ∣ B ∣ , ∣ A ∣ = ∣ B ∣ , ∣ A ∣ > ∣ B ∣ |A|<|B|,|A|=|B|,|A|>|B| ∣A∣<∣B∣,∣A∣=∣B∣,∣A∣>∣B∣ 中恰有一个成立。
  • 在上一部分的证明中,我们将多重集 r r r 组合数量通过双射函数转化为方程 ( ∗ ) (*) (∗) 的非负整数解数量,并后续通过形如 ( 1 ) (1) (1) 的 0 , 1 0,1 0,1 序列来表示非负整数解,最终得到结果。
  • 构造多重集: M ′ = { ∞ ⋅ 1 , ∞ ⋅ 2 , ⋯ , ∞ ⋅ k } M'=\{\infin\cdot1,\infin\cdot2,\cdots,\infin\cdot k\} M′={∞⋅1,∞⋅2,⋯,∞⋅k}以及映射 f : M f:M f:M 的 r r r 组合全体 → \rightarrow → M ′ M' M′ 的 r r r 组合全体,如下: { x 1 ⋅ a 1 , x 2 ⋅ a 2 , ⋯ , x k ⋅ a k } ⟼ { 1 , ⋯ , 1 ⏞ x 1 , 2 , ⋯ , 2 ⏞ x 2 , ⋯ , k , ⋯ , k ⏞ x k } \{x_1\cdot a_1,x_2\cdot a_2,\cdots,x_k\cdot a_k\}\longmapsto\{\overbrace{1,\cdots,1}^{x_1},\overbrace{2,\cdots,2}^{x_2},\cdots,\overbrace{k,\cdots ,k}^{x_k}\} {x1​⋅a1​,x2​⋅a2​,⋯,xk​⋅ak​}⟼{1,⋯,1 ​x1​​,2,⋯,2 ​x2​​,⋯,k,⋯,k ​xk​​}其中 { x i } \{x_i\} {xi​} 满足和为 r r r 的约束,不难证明 f f f 是一个双射函数。
  • 构造集合: M ′ ′ = { 1 , 2 , ⋯ , k + r − 1 } M''=\{1,2,\cdots,k+r-1\} M′′={1,2,⋯,k+r−1}以及映射 g : M ′ g:M' g:M′ 的 r r r 组合全体 → M ′ ′ \rightarrow M'' →M′′ 的 r r r 组合全体,如下: { b 1 , b 2 , ⋯ , b r } ⟼ { b 1 + 0 , b 2 + 1 , ⋯ , b r + r − 1 } \{b_1,b_2,\cdots,b_r\}\longmapsto\{b_1+0,b_2+1,\cdots,b_r+r-1\} {b1​,b2​,⋯,br​}⟼{b1​+0,b2​+1,⋯,br​+r−1}不难证明 g g g 也是一个双射函数,这里我们不妨假设 1 ≤ b 1 ≤ b 2 ≤ ⋯ ≤ b r ≤ k 1\leq b_1\leq b_2\leq\cdots\leq b_r\leq k 1≤b1​≤b2​≤⋯≤br​≤k,那么则有: b i + i − 1 ≤ b i + 1 + i − 1 < b i + 1 + i (2) b_i+i-1\leq b_{i+1}+i-1<b_{i+1}+i\tag{2} bi​+i−1≤bi+1​+i−1<bi+1​+i(2)于 ( 2 ) (2) (2) 式中取遍 i = 1 , 2 , ⋯ , r − 1 i=1,2,\cdots,r-1 i=1,2,⋯,r−1,分别能够得到: b 1 + 0 < b 2 + 1 b_1+0<b_2+1 b1​+0<b2​+1 b 2 + 1 < b 3 + 2 b_2+1<b_3+2 b2​+1<b3​+2 ⋯ \cdots ⋯ b r − 1 + r − 2 < b r + r − 1 b_{r-1}+r-2<b_r+r-1 br−1​+r−2<br​+r−1因此 { b 1 + 0 , b 2 + 1 , ⋯ , b r + r − 1 } \{b_1+0,b_2+1,\cdots,b_r+r-1\} {b1​+0,b2​+1,⋯,br​+r−1} 是集合 M ′ ′ M'' M′′ 的一个 r r r 组合,并且其数量显然为: ( k − 1 + r r ) \binom{k-1+r}{r} (rk−1+r​)基于前面给出的集合势的定理,我们知道,多重集 M M M 的 r r r 组合数量也由上式给出。

  • 定理】稍加改变,对于给定的多重集 M = { ∞ ⋅ a 1 , ∞ ⋅ a 2 , ⋯ , ∞ ⋅ a k } M=\{\infin\cdot a_1,\infin\cdot a_2,\cdots,\infin\cdot a_k\} M={∞⋅a1​,∞⋅a2​,⋯,∞⋅ak​},要求其 r r r 排列中 a i a_i ai​ 都至少出现一次, r ≥ k r\geq k r≥k,这样的 r r r 组合数为: ( r − 1 k − 1 ) \binom{r-1}{k-1} (k−1r−1​)
  • 证明】可以类比上面的证明 1 1 1 完成, r r r 组合数等于方程: x 1 + x 2 + ⋯ + x k = r x_1+x_2+\cdots+x_k=r x1​+x2​+⋯+xk​=r 解个数,其中 x i x_i xi​ 须满足 x i ≥ 1 x_i\geq1 xi​≥1,因此我们令 y i = x i − 1 y_i=x_i-1 yi​=xi​−1,则将 ( ∗ ) (*) (∗) 式改写如下: y 1 + y 2 + ⋯ + y k = r − k (**) y_1+y_2+\cdots+y_k=r-k\tag{**} y1​+y2​+⋯+yk​=r−k(**)此时满足条件的 r r r 组合数等于上述方程 ( ∗ ∗ ) (**) (∗∗) 的非负整数解,即为: ( ( k − 1 ) + ( r − k ) r − k ) = ( r − 1 r − k ) = ( r − 1 k − 1 ) \binom{(k-1)+(r-k)}{r-k}=\binom{r-1}{r-k}=\binom{r-1}{k-1} (r−k(k−1)+(r−k)​)=(r−kr−1​)=(k−1r−1​)证毕.

更多推荐

【DM】多重集合组合

本文发布于:2024-02-07 10:21:15,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1756158.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:组合   DM

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!