文章目录




参考博客 :​ 按照顺序看





一、证明指数生成函数求解多重集排列



多重集 S = { n 1 ⋅ a 1 , n 2 ⋅ a 2 , ⋯   , n k ⋅ a k } S=\{ n_1 \cdot a_1 , n_2 \cdot a_2 , \cdots , n_k \cdot a_k \} S={n1⋅a1,n2⋅a2,⋯,nk⋅ak}

多重集 S S S 的 r r r 排列数 组成数列 { a r } \{ a_r \} {ar} , 对应的指数生成函数是 :



G e ( x ) = f n 1 ( x ) f n 2 ( x ) ⋯ f n k ( x ) G_e(x) = f_{n_1}(x) f_{n_2}(x) \cdots f_{n_k}(x) Ge(x)=fn1(x)fn2(x)⋯fnk(x) ★



其中每个生成函数项 f n i ( x ) f_{n_i}(x) fni(x) 是

f n i ( x ) = 1 + x + x 2 2 ! + ⋯ + x n i n i ! f_{n_i}(x) = 1 + x + \cfrac{x^2}{2!} + \cdots + \cfrac{x^{n_i}}{n_i!} fni(x)=1+x+2!x2+⋯+ni!xni ★



将 G e ( x ) G_e(x) Ge(x) 展开 , 其中的 r r r 系数就是多重集的排列数 ;​ ★




证明上述指数生成函数用途 :

将上述 指数生成函数 展开 ,

指数生成函数项 G e ( x ) = f n 1 ( x ) f n 2 ( x ) ⋯ f n k ( x ) G_e(x) = f_{n_1}(x) f_{n_2}(x) \cdots f_{n_k}(x) Ge(x)=fn1(x)fn2(x)⋯fnk(x) , 由 k k k 个因式相乘得到 ,

每个因式都会提供一个 x m 1 m 1 ! \cfrac{x^{m_1}}{m_1!} m1!xm1 成分 ,



x m 1 m 1 ! \cfrac{x^{m_1}}{m_1!} m1!xm1 来自第一个因式 ,

x m 2 m 2 ! \cfrac{x^{m_2}}{m_2!} m2!xm2 来自第二个因式 ,

⋮ \vdots ⋮

x m k m k ! \cfrac{x^{m_k}}{m_k!} mk!xmk 来自第 k k k 个因式 ,



上述因式相乘 x m 1 m 1 ! ⋅ x m 2 m 2 ! ⋯ x m k m k ! \cfrac{x^{m_1}}{m_1!} \cdot \cfrac{x^{m_2}}{m_2!} \cdots \cfrac{x^{m_k}}{m_k!} m1!xm1⋅m2!xm2⋯mk!xmk

其中 m 1 + m 2 + ⋯ + m r = r     , m_1 + m_2 + \cdots + m_r = r \ \ \ , m1+m2+⋯+mr=r   ,

0 ≤ m i ≤ n i    , 0 \leq m_i \leq n_i \ \ , 0≤mi≤ni  , i = 0 , 1 , 2 , ⋯   , k i= 0,1,2, \cdots , k i=0,1,2,⋯,k




x m 1 m 1 ! ⋅ x m 2 m 2 ! ⋯ x m k m k ! \cfrac{x^{m_1}}{m_1!} \cdot \cfrac{x^{m_2}}{m_2!} \cdots \cfrac{x^{m_k}}{m_k!} m1!xm1⋅m2!xm2⋯mk!xmk 对应了指数生成函数展开后的分项 ;




     x m 1 m 1 ! ⋅ x m 2 m 2 ! ⋯ x m k m k ! \ \ \ \ \cfrac{x^{m_1}}{m_1!} \cdot \cfrac{x^{m_2}}{m_2!} \cdots \cfrac{x^{m_k}}{m_k!}     m1!xm1⋅m2!xm2⋯mk!xmk

= x m 1 + m 2 + ⋯ + m k m 1 ! m 2 ! ⋯ m k ! =\cfrac{x^{m_1 + m_2 + \cdots + m_k}}{m_1!m_2!\cdots m_k!} =m1!m2!⋯mk!xm1+m2+⋯+mk

= x r m 1 ! m 2 ! ⋯ m k ! ⋅ r ! r ! =\cfrac{x^{r}}{m_1!m_2!\cdots m_k!} \cdot \cfrac{r!}{r!} =m1!m2!⋯mk!xr⋅r!r!

= x r r ! ⋅ r ! m 1 ! m 2 ! ⋯ m k ! =\cfrac{x^{r}}{r!} \cdot \cfrac{r!}{m_1!m_2!\cdots m_k!} =r!xr⋅m1!m2!⋯mk!r!



r ! m 1 ! m 2 ! ⋯ m k ! \cfrac{r!}{m_1!m_2!\cdots m_k!} m1!m2!⋯mk!r! 是多重集 r r r 个元素的全排列数



选了 r r r 个元素 , 选择的方法数是 m 1 + m 2 + ⋯ + m r = r m_1 + m_2 + \cdots + m_r = r m1+m2+⋯+mr=r 非负整数解个数 , 配置完成后 , 再 进行全排列 , 就可以得到 r r r 排列 ;

( 先选择 , 再进行全排列 )



a r = ∑ r ! m 1 ! m 2 ! ⋯ m k ! a_r = \sum\cfrac{r!}{m_1!m_2!\cdots m_k!} ar=∑m1!m2!⋯mk!r!

上述求和 , 每个分项都是满足 m 1 + m 2 + ⋯ + m r = r m_1 + m_2 + \cdots + m_r = r m1+m2+⋯+mr=r 方程的非负整数解 , 每个非负整数解都对应了多重集的 S S S 的 r r r 组合 ;

组合的全排列数是 r ! m 1 ! m 2 ! ⋯ m k ! \cfrac{r!}{m_1!m_2!\cdots m_k!} m1!m2!⋯mk!r! ,

上述求和 a r = ∑ r ! m 1 ! m 2 ! ⋯ m k ! a_r = \sum\cfrac{r!}{m_1!m_2!\cdots m_k!} ar=∑m1!m2!⋯mk!r! 是 针对所有满足方程的一切非负整数解进行求和 ;