组合数学及其应用——递推关系和生成函数

  将计数结果或者某个特殊数列的信息,呈现在一个函数关系式中,我们称之为生成函数,如这个名字,我们本质上讨论的是一个函数解析式,但是这个解析式以一个无穷级数的形式蕴藏着某个计数数列。

                           

 

  目前来看对于给出的这个“生成函数”的新定义,我们似乎看不到有什么很好的用处,但是随着问题的深入,它的作用便会呈现出来,例如在求解Catalan数的非齐次递推关系的时候就用到了生成函数的概念。

 

  例子1:

   

  在一些问题中,我们借助生成函数的概念,通过其他的运算定理,将一个∑形式的生成函数转化成其他的形式然后进行函数层次上的操作,能够使得我们处理问题站在一个新的视角。

 

  例子2:

   

 

  例子3:

  什么样的数列的生成函数是如下式子?

   

 

  例子4:确定苹果、香蕉、橘子和梨的n组合个数,其中每个n组合苹果的个数是偶数,香蕉的个数是奇数,橘子的个数是0到4之间,而且至少有一个梨.

   

  例子5:

  求装有苹果、香蕉、橘子和梨的果篮的可能数h(n),其中每个果篮中苹果数是偶数,香蕉数是5的倍数,橘子树最多有4个,而梨的个数是0或1.

   

 

                             

   这种形式虽然给出了线性递推关系,但是各项系数不全为常数,下面我们引入一种求解线性常系数递推关系的通解求法。

  

 

  这一定理的作用在于:能够将需要O(n)时间复杂度求解的的数列,在O(logn)得到。

 

  Ex2:

  一串由a、b、c组成的通信文字的长度为n,要求通信文字中不能够有连续两个a出现,那么请问共有多少种情况?

 

 

  呼应其一开始我们给出的结论:求解递推关系为了更快的计算序列中的某项h[n],对比1、2两个例题我们发现,如果就编程计算而言,Ex1用这种方法是很好的,因为最终的形式比较的简单不含根号。而Ex2的形式如果交给计算机计算,就显得有些丑陋。例如斐波那契数列,利用该定理求得的解也带有根号,此时为了简化求得数列中某一项的时间复杂度,我们就要去寻求其他的方法(例如矩阵快速幂)。

 

转载于:https://www.cnblogs.com/rhythmic/p/6124323.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值