【组合数学】生成函数 ( 生成函数应用场景 | 使用生成函数求解递推方程 )

举报
韩曙亮 发表于 2022/01/11 02:35:46 2022/01/11
【摘要】 文章目录 一、生成函数应用场景二、使用生成函数求解递推方程 参考博客 : 【组合数学】生成函数 简要介绍 ( 生成函数定义 | 牛顿二项式系数 | 常用的生成函数 | 与常数相关 ...



参考博客 :





一、生成函数应用场景



生成函数应用场景 :

  • 求解递推方程
  • 多重集 r r r 组合计数
  • 不定方程解个数
  • 整数拆分

多重集 r r r 组合计数 , 之前 只能计数特殊情况下的组合数 , 也就是选取数 r r r 小于多重集每一项的重复度 , 才有 组合数 N = C ( k + r − 1 , r ) N= C(k + r - 1, r) N=C(k+r1,r) , 如果 r r r 大于重复度 , 就需要使用生成函数进行求解 ;

不定方程的解个数 , 之前只能求解 没有约束的情况 , 如果对变量有约束 , 如 x 1 x_1 x1 只能在某个区间取值 , 这种情况下 , 就必须使用生成函数进行求解 ;

整数拆分 , 将一个正数拆分多若干整数之和 , 拆分方案个数 , 也可以通过生成函数进行计算 ;


回顾多重集排列组合 :

  • 可重复的元素 , 有序的选取 , 对应 多重集的排列 ; 全 排 列 = 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)




二、使用生成函数求解递推方程



递推方程 : a n − 5 a n − 1 + 6 a n − 2 = 0 a_n - 5a_{n-1} + 6a_{n-2} = 0 an5an1+6an2=0

初值 : a 0 = 1 , a 1 = 2 a_0 = 1, a_1 = 2 a0=1,a1=2


{ a n } \{a_n\} {an} 数列为 { a 0 , a 1 , a 2 , a 3 , ⋯   , a n , ⋯   } \{ a_0 , a_1, a_2, a_3 , \cdots , a_n , \cdots\} {a0,a1,a2,a3,,an,}

a n a_n an对应的生成函数是 G ( x ) = a 0 + a 1 x + a 2 x 2 + a 3 x 3 + ⋯ G(x) = a_0 + a_1 x + a_2 x^2 + a_3x^3 + \cdots G(x)=a0+a1x+a2x2+a3x3+


根据递推方程 , 同时为了使得后面的项可以约掉 , 使用 − 5 x -5x 5x 乘以 G ( x ) G(x) G(x) 生成函数 , 使用 + 6 x 2 +6x^2 +6x2 乘以 G ( x ) G(x) G(x) , 得到如下三个式子 ,

− 5 x -5x 5x 乘以 G ( x ) G(x) G(x) 得到的第一项就是 x x x 的一次方项 , 将该项对应到 G ( x ) G(x) G(x) 中的 x x x 一次方项下面 ,

+ 6 x 2 +6x^2 +6x2 乘以 G ( x ) G(x) G(x) 得到的第一项就是 x x x 的二次方项 , 将该项对应到 G ( x ) G(x) G(x) 中的 x x x 二次方项下面 ;


                         G ( x ) = a 0 + a 1 x + a 2 x 2 + a 3 x 3 + ⋯ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ G(x) = a_0 + a_1 x + a_2 x^2 + a_3x^3 + \cdots                         G(x)=a0+a1x+a2x2+a3x3+

                 − 5 x   G ( x ) =      − 5 a 0 x − 5 a 1 x 2 − 5 a 2 x 3 − ⋯ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ -5x \ G(x) = \ \ \ \ -5a_0x - 5a_1x^2 - 5a_2x^3 - \cdots                 5x G(x)=    5a0x5a1x25a2x3

                   6 x 2   G ( x ) =                  +   6 a 0 x 2 + 6 a x 3 + ⋯ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 6x^2 \,G(x) = \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ + \,6a_0x^2 + 6a_x^3 + \cdots                   6x2G(x)=                +6a0x2+6ax3+


( 1 − 5 x + 6 x 2 ) G ( x ) = a 0 + ( a 1 − 5 a 0 ) x (1-5x+6x^2)G(x) =a_0 + (a_1 - 5a_0)x (15x+6x2)G(x)=a0+(a15a0)x


上述横线下的式子是 横线上面 三个式子相加的结果 ;


观察上述右侧 第三列 , 图中红框部分 ;
在这里插入图片描述

上述幂次对齐后 , 出现的等号右侧的第三列 + a 2 x 2 − 5 a 1 x 2 +   6 a 0 x 2 + a_2 x^2 -5a_1x^2 + \,6a_0x^2 +a2x25a1x2+6a0x2 , 将其中 x 2 x^2 x2 提取出来得到 ( a 2 − 5 a 1 + 6 a 0 ) x 2 (a_2 - 5a_1 + 6a_0)x^2 (a25a1+6a0)x2 , 正好对应递推方程 a n − 5 a n − 1 + 6 a n − 2 = 0 a_n - 5a_{n-1} + 6a_{n-2} = 0 an5an1+6an2=0 ,

因此有 a 2 − 5 a 1 + 6 a 0 = 0 a_2 - 5a_1 + 6a_0 = 0 a25a1+6a0=0 , 进而可以得到 ( a 2 − 5 a 1 + 6 a 0 ) x 2 = 0 (a_2 - 5a_1 + 6a_0)x^2 = 0 (a25a1+6a0)x2=0


由此可以看出 , 如果三个式子全部相加 , 下图 右侧蓝色矩形框内 , 全部都是 0 0 0 ;

在这里插入图片描述


目前右侧只剩下 a 0 + a 1 x − 5 a 0 x a_0 + a_1x -5a_0x a0+a1x5a0x 三项 ; 其中的 a 0 = 1 , a 1 = − 2 a_0 = 1 , a_1 = -2 a0=1,a1=2 是初值 ;

最终等式右侧是 : 1 − 2 x − 5 x = 1 − 7 x 1 - 2x - 5x = 1-7x 12x5x=17x


将上述式子代入到 ( 1 − 5 x + 6 x 2 ) G ( x ) = a 0 + ( a 1 − 5 a 0 ) x (1-5x+6x^2)G(x) =a_0 + (a_1 - 5a_0)x (15x+6x2)G(x)=a0+(a15a0)x 中 , 使用 1 − 2 x − 5 x = 1 − 7 x 1 - 2x - 5x = 1-7x 12x5x=17x 替换等式右侧的式子 , 得到 :

( 1 − 5 x + 6 x 2 ) G ( x ) = 1 − 7 x (1-5x+6x^2)G(x) =1-7x (15x+6x2)G(x)=17x

G ( x ) = 1 − 7 x 1 − 5 x + 6 x 2 G(x) = \cfrac{1-7x}{1-5x+6x^2} G(x)=15x+6x217x


使用 给定 生成函数 , 求对应的级数 的 方法 , 将上述式子展开 , 参考 【组合数学】生成函数 ( 生成函数示例 | 给定通项公式求生成函数 | 给定生成函数求通项公式 ) 二、给定生成函数求级数 方法 ,

先将分母进行因式分解 , 然后设置两个待定系数 , 通分后 , 根据 x x x 项系数写出方程组 , 最终解该方程组 , 最终可以得到 :

G ( x ) = 1 − 7 x 1 − 5 x + 6 x 2 = 5 1 − 2 x − 4 1 − 3 x G(x) = \cfrac{1-7x}{1-5x+6x^2} = \cfrac{5}{1-2x} - \cfrac{4}{1-3x} G(x)=15x+6x217x=12x513x4

5 1 − 2 x \cfrac{5}{1-2x} 12x5 对应的级数是 : ∑ n = 0 ∞ 5 ( 2 x ) n = 5 ∑ n = 0 ∞ 2 n x n \sum\limits_{n=0}^\infty 5 (2x)^n = 5\sum\limits_{n=0}^\infty 2^n x^n n=05(2x)n=5n=02nxn

4 1 − 3 x \cfrac{4}{1-3x} 13x4 对应的级数是 : ∑ n = 0 ∞ ( − 4 ) ( 3 x ) n = − 4 ∑ n = 0 ∞ 3 n x n \sum\limits_{n=0}^\infty (-4) (3x)^n = -4\sum\limits_{n=0}^\infty 3^n x^n n=0(4)(3x)n=4n=03nxn

最终生成函数的级数形式为 : G ( x ) = 5 ∑ n = 0 ∞ 2 n x n − 4 ∑ n = 0 ∞ 3 n x n G(x) = 5\sum\limits_{n=0}^\infty 2^n x^n - 4\sum\limits_{n=0}^\infty 3^n x^n G(x)=5n=02nxn4n=03nxn

递推方程的通解 : a n = 5 ⋅ 2 n − 4 ⋅ 3 n a_n = 5 \cdot 2^n - 4 \cdot 3^n an=52n43n


基本思路 : 有原来的递推方程 , 导出关于生成函数的递推方程 ;

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

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

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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