【组合数学】生成函数 ( 使用生成函数求解多重集 r 组合数 )

举报
韩曙亮 发表于 2022/01/11 02:30:38 2022/01/11
【摘要】 文章目录 一、使用生成函数求解多重集 r 组合数二、使用生成函数求解多重集 r 组合数 示例 参考博客 : 【组合数学】生成函数 简要介绍 ( 生成函数定义 | 牛顿二项式系数 |...



参考博客 :





一、使用生成函数求解多重集 r 组合数



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} 是多重集 , 其含有 k k k 个种类的元素 , n 1 , n 2 , ⋯   , n k n_1, n_2, \cdots, n_k n1,n2,,nk 是每种元素的重复度 ,

多重集的 r r r 组合数 , 是 不定方程 x 1 + x 2 + ⋯ + x k = r x_1 + x_2 + \cdots + x_k = r x1+x2++xk=r 的非负整数解 , 前提是 x i ≤ n i x_i \leq n_i xini , 每个元素所取的个数 x i x_i xi , 不能超过其重复度 n i n_i ni ;

相当于 a 1 a_1 a1 x 1 x_1 x1 个 , a 2 a_2 a2 x 2 x_2 x2 个 , ⋯ \cdots , a k a_k ak x k x_k xk 个 , 总共取 r r r 个 ;

n i n_i ni 是无穷个数时 , 多重集的 r r r 组合数是 C ( k + r − 1 , r ) C(k + r - 1, r) C(k+r1,r)


回顾多重集排列组合 :

  • 可重复的元素 , 有序的选取 , 对应 多重集的排列 ; 全 排 列 = n ! n 1 ! n 2 ! ⋯ n k ! 全排列 = \cfrac{n!}{n_1! n_2! \cdots n_k!} =n1!n2!nk!n! , 非全排列 k r ,    r ≤ n i k^r , \ \ r\leq n_i kr,  rni
  • 可重复的元素 , 无序的选取 , 对应 多重集的组合 ; N = C ( k + r − 1 , r ) N= C(k + r - 1, r) N=C(k+r1,r)

上述的 多重集 r r r 组合数 C ( k + r − 1 , r ) C(k + r - 1, r) C(k+r1,r) 是在重复度不受限制的情况下的选取结果 , 如果重复度受限制 , 就需要使用生成函数进行计算 ;

如添加如下限制 : a 1 a_1 a1 最多能取 3 3 3 , a 2 a_2 a2 最少取 4 4 4 个 , 最多取 10 10 10 个 ;


生成函数 :

G ( y ) = G(y) = G(y)= ( 1 + y + ⋯ + y n 1 ) (1 + y + \cdots + y^{n_1}) (1+y++yn1) ( 1 + y + ⋯ + y n 2 ) (1 + y + \cdots + y^{n_2}) (1+y++yn2) ⋯ \cdots ( 1 + y + ⋯ + y n k ) (1 + y + \cdots + y^{n_k}) (1+y++ynk)

多重集中的每个元素的取值个数作为 y y y 的次幂 , 如 a 1 a_1 a1 元素的取值个数是 0 0 0 n 1 n_1 n1 , 则该项对应的 生成函数项是 y y y 0 0 0 次幂 , y y y n 1 n_1 n1 次幂 相加 ; 构成项 ( 1 + y + ⋯ + y n 1 ) (1 + y + \cdots + y^{n_1}) (1+y++yn1) ;

将所有元素的上述 生成函数项 乘到一起 , 就构成上述生成函数 ;


按照多项式乘法 , 多重集中取 r r r 个元素 ,

从第一个因式 ( 1 + y + ⋯ + y n 1 ) (1 + y + \cdots + y^{n_1}) (1+y++yn1) 拿出 y x 1 y^{x_1} yx1 ,

从第二个因式 ( 1 + y + ⋯ + y n 2 ) (1 + y + \cdots + y^{n_2}) (1+y++yn2) 拿出 y x 2 y^{x_2} yx2 ,

⋮ \vdots

从第 k k k 个因式 ( 1 + y + ⋯ + y n k ) (1 + y + \cdots + y^{n_k}) (1+y++ynk) 拿出 y x k y^{x_k} yxk ,


如果上述乘积 y x 1 y x 2 ⋯ y x k y^{x_1}y^{x_2}\cdots y^{x_k} yx1yx2yxk 的结果 是 y r y^{r} yr , 即 y x 1 y x 2 ⋯ y x k = y r y^{x_1}y^{x_2}\cdots y^{x_k} = y^{r} yx1yx2yxk=yr , 相当于指数 x 1 + x 2 + ⋯ + x k = r x_1 + x_2 + \cdots + x_k = r x1+x2++xk=r , 也就是不定方程的非负整数解 ;





二、使用生成函数求解多重集 r 组合数 示例



多重集 S = { 3 ⋅ a , 4 ⋅ b , 5 ⋅ c } S = \{3\cdot a , 4 \cdot b , 5 \cdot c \} S={3a,4b,5c} , 求该多重集的 10 10 10 组合数 ;


上述多重集元素的 重复度 3 , 4 , 5 3,4,5 3,4,5 都不超过 10 10 10 ;

对应 a a a 元素 , 其 重复度取值范围是 0 0 0 ~ 3 3 3 , 对应的生成函数项是 y 0 + y 1 + y 2 + y 3 y^0 +y^1 + y^2 + y^3 y0+y1+y2+y3

对应 b b b 元素 , 其 重复度取值范围是 0 0 0 ~ 4 4 4 , 对应的生成函数项是 y 0 + y 1 + y 2 + y 3 + y 4 y^0 +y^1 + y^2 + y^3 + y^4 y0+y1+y2+y3+y4

对应 c c c 元素 , 其重 复度取值范围是 0 0 0 ~ 5 5 5 , 对应的生成函数项是 y 0 + y 1 + y 2 + y 3 + y 4 + y 5 y^0 +y^1 + y^2 + y^3 + y^4 + y^5 y0+y1+y2+y3+y4+y5


将上述项相乘 , 得到完整的生成函数 ;

G ( x ) = ( y 0 + y 1 + y 2 + y 3 ) ( y 0 + y 1 + y 2 + y 3 + y 4 ) ( y 0 + y 1 + y 2 + y 3 + y 4 + y 5 ) G(x) = (y^0 +y^1 + y^2 + y^3)(y^0 +y^1 + y^2 + y^3 + y^4)(y^0 +y^1 + y^2 + y^3 + y^4 + y^5) G(x)=(y0+y1+y2+y3)(y0+y1+y2+y3+y4)(y0+y1+y2+y3+y4+y5)

           = ( 1 + y 1 + y 2 + y 3 ) ( 1 + y 1 + y 2 + y 3 + y 4 ) ( 1 + y 1 + y 2 + y 3 + y 4 + y 5 ) \ \ \ \ \ \ \ \ \ \ =(1 +y^1 + y^2 + y^3)(1 +y^1 + y^2 + y^3 + y^4)(1 +y^1 + y^2 + y^3 + y^4 + y^5)           =(1+y1+y2+y3)(1+y1+y2+y3+y4)(1+y1+y2+y3+y4+y5)

           = ( 1 + 2 y 1 + 3 y 2 + 4 y 3 + 4 y 4 + 3 y 5 + 2 y 6 + y 7 ) ( 1 + y 1 + y 2 + y 3 + y 4 + y 5 ) \ \ \ \ \ \ \ \ \ \ =(1 +2y^1 + 3y^2 + 4y^3 + 4y^4 + 3y^5 + 2y^6 + y^7 )(1 +y^1 + y^2 + y^3 + y^4 + y^5)           =(1+2y1+3y2+4y3+4y4+3y5+2y6+y7)(1+y1+y2+y3+y4+y5)


统计上述两项相乘 , y y y 的次幂值为 10 10 10 的项 :

第一个因式的 3 y 5 3y^5 3y5 与第二个因式的 y 5 y^5 y5 , 相乘为 3 y 10 3y^{10} 3y10

第一个因式的 2 y 6 2y^6 2y6 与第二个因式的 y 4 y^4 y4 , 相乘为 2 y 10 2y^{10} 2y10

第一个因式的 y 7 y^7 y7 与第二个因式的 y 3 y^3 y3 , 相乘为 y 10 y^{10} y10

y 10 y^{10} y10 项前的系数是 3 + 2 + 1 = 6 3 + 2+1 = 6 3+2+1=6


因此上述 多重集的 10 10 10 组合 ,选择方案有 6 6 6 种 ;

文章来源: hanshuliang.blog.csdn.net,作者:韩曙亮,版权归原作者所有,如需转载,请联系作者。

原文链接:hanshuliang.blog.csdn.net/article/details/109332046

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。