程序员社区

【组合数学】指数生成函数 ( 证明指数生成函数求解多重集排列 )

文章目录

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

参考博客 : 按照顺序看

  • 【组合数学】生成函数 简要介绍 ( 生成函数定义 | 牛顿二项式系数 | 常用的生成函数 | 与常数相关 | 与二项式系数相关 | 与多项式系数相关 )
  • 【组合数学】生成函数 ( 线性性质 | 乘积性质 )
  • 【组合数学】生成函数 ( 移位性质 )
  • 【组合数学】生成函数 ( 求和性质 )
  • 【组合数学】生成函数 ( 换元性质 | 求导性质 | 积分性质 )
  • 【组合数学】生成函数 ( 性质总结 | 重要的生成函数 ) ★
  • 【组合数学】生成函数 ( 生成函数示例 | 给定通项公式求生成函数 | 给定生成函数求通项公式 )
  • 【组合数学】生成函数 ( 生成函数应用场景 | 使用生成函数求解递推方程 )
  • 【组合数学】生成函数 ( 使用生成函数求解多重集 r 组合数 )
  • 【组合数学】生成函数 ( 使用生成函数求解不定方程解个数 )
  • 【组合数学】生成函数 ( 使用生成函数求解不定方程解个数示例 )
  • 【组合数学】生成函数 ( 使用生成函数求解不定方程解个数示例 2 | 扩展到整数解 )
  • 【组合数学】生成函数 ( 正整数拆分 | 无序 | 有序 | 允许重复 | 不允许重复 | 无序不重复拆分 | 无序重复拆分 )
  • 【组合数学】生成函数 ( 正整数拆分 | 无序不重复拆分示例 )
  • 【组合数学】生成函数 ( 正整数拆分 | 正整数拆分基本模型 | 有限制条件的无序拆分 )
  • 【组合数学】生成函数 ( 正整数拆分 | 重复有序拆分 | 不重复有序拆分 | 重复有序拆分方案数证明 )
  • 【组合数学】指数生成函数 ( 指数生成函数概念 | 排列数指数生成函数 = 组合数普通生成函数 | 指数生成函数示例 )

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


多重集

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={n1a1,n2a2,,nkak}

多重集

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!xm1m2!xm2mk!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 \ \ ,

0mini  ,

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!xm1m2!xm2mk!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!xm1m2!xm2mk!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!xrr!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!xrm1!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!针对所有满足方程的一切非负整数解进行求和 ;

赞(0) 打赏
未经允许不得转载:IDEA激活码 » 【组合数学】指数生成函数 ( 证明指数生成函数求解多重集排列 )

相关推荐

  • 暂无文章

一个分享Java & Python知识的社区