文章目录

  • 母函数与递推关系(recurrence relation)
    • 1.递推关系定义
    • 2.母函数推出递推关系
    • 3.HANOI问题
      • (1)HANOI问题
      • (2)HANOI问题与母函数
    • 4.偶数个5问题
    • 5.小结

母函数与递推关系(recurrence relation)

1.递推关系定义

递推关系即差分方程,是一种递推的定义一个序列的方程式,序列的每一项定义为前若干项的函数。

2.母函数推出递推关系

常见泰勒展开

(1−ax)−1=1+ax+a2x2+⋯(1-ax)^{-1}=1+ax+a^2x^2+\cdots(1−ax)−1=1+ax+a2x2+⋯求母函数2−3x(1−x)(1−2x)\frac{2-3x}{(1-x)(1-2x)}(1−x)(1−2x)2−3x​的递推关系?
2−3x(1−x)(1−2x)=11−x+11−2x=∑k=0∞xk+∑k=0∞2kxk=∑k=0∞(1+2k)xk\frac{2-3x}{(1-x)(1-2x)}=\frac{1}{1-x}+\frac{1}{1-2x}=\sum_{k=0}^{\infty}x^k+\sum_{k=0}^{\infty} 2^kx^k=\sum_{k=0}^\infty(1+2^k)x^k(1−x)(1−2x)2−3x​=1−x1​+1−2x1​=k=0∑∞​xk+k=0∑∞​2kxk=k=0∑∞​(1+2k)xk得到 2−3x(1−x)(1−2x)\frac{2-3x}{(1-x)(1-2x)}(1−x)(1−2x)2−3x​是序列f(k)=2k+1f(k)=2^k+1f(k)=2k+1的母函数。
因为:f(k)=2k+1(1)f(k)=2^k+1\space(1)f(k)=2k+1 (1)所以:f(k−1)=2k−1+1(2)f(k-1)=2^{k-1}+1\space(2)f(k−1)=2k−1+1 (2)(1)式-(2)式乘2:f(k)−2f(k−1)=−1f(k)-2f(k-1)=-1f(k)−2f(k−1)=−1所以得到递推式:f(k)=2f(k−1)−1f(k)=2f(k-1)-1f(k)=2f(k−1)−1

母函数 2−3x(1−x)(1−2x)\frac{2-3x}{(1-x)(1-2x)}(1−x)(1−2x)2−3x​ 部分分式分解

(1−ax)−1=1+ax+a2x2+⋯(1-ax)^{-1}=1+ax+a^2x^2+\cdots(1−ax)−1=1+ax+a2x2+⋯

数字序列 f(k)=2k+1f(k)=2^k+1f(k)=2k+1 递推序列 f(k)=2f(k−1)−1f(k)=2f(k-1)-1f(k)=2f(k−1)−1

3.HANOI问题

(1)HANOI问题

  • 大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。
  • 大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。
  • 在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。
    可以通过两个盘子的挪动方法递推出nnn个盘子的挪动方法。
    假设挪动nnn个盘子的复杂度为h(n)h(n)h(n).
    分为两部分,前n−1n-1n−1个盘子复杂度为h(n−1)h(n-1)h(n−1),和最大一个盘子nnn。

n-1个盘子的转移算法已经从确定复杂度为h(n-1) 把A下面一个圆盘移到C上:h(1) 把B上的n-1个圆盘经过A转移到C上:h(n-1) 复杂度为三步之和 递推关系

h(n)=2h(n−1)+1,h(1)=1,h(0)=0h(n)=2h(n-1)+1,h(1)=1,h(0)=0h(n)=2h(n−1)+1,h(1)=1,h(0)=0

(2)HANOI问题与母函数

  • 求HANOI问题对应的母函数?
    已知递推关系 h(n)=2h(n−1)+1,h(1)=1,h(0)=0h(n)=2h(n-1)+1,h(1)=1,h(0)=0h(n)=2h(n−1)+1,h(1)=1,h(0)=0因为: H(x)=h(1)x+h(2)x2+h(3)x3+⋯(1)H(x)=h(1)x+h(2)x^2+h(3)x^3+\cdots(1)H(x)=h(1)x+h(2)x2+h(3)x3+⋯(1)2xH(x)=2h(1)x2+2h(2)x3+2h(3)x4+⋯(2)2xH(x)=\space2h(1)x^2+2h(2)x^3+2h(3)x^4+\cdots(2)2xH(x)= 2h(1)x2+2h(2)x3+2h(3)x4+⋯(2)因为:
    h(2)−2h(1)=1,h(3)−2h(2)=1,h(4)−2h(3)=1⋯h(2)-2h(1)=1,h(3)-2h(2)=1,h(4)-2h(3)=1\cdotsh(2)−2h(1)=1,h(3)−2h(2)=1,h(4)−2h(3)=1⋯所以(1)式-(2)式:
    (1−2x)H(x)=h(1)x+x2+x3+x4+⋯(1-2x)H(x)=h(1)x+x^2+x^3+x^4+\cdots(1−2x)H(x)=h(1)x+x2+x3+x4+⋯已知:
    h(1)=1h(1)=1h(1)=1所以: (1−2x)H(x)=x+x2+x3+x4+⋯(1-2x)H(x)=x+x^2+x^3+x^4+\cdots(1−2x)H(x)=x+x2+x3+x4+⋯由泰勒展开可得:
    (1−2x)H(x)=x1−x(1-2x)H(x)=\frac{x}{1-x}(1−2x)H(x)=1−xx​得到母函数
    H(x)=x(1−x)(1−2x)H(x)=\frac{x}{(1-x)(1-2x)}H(x)=(1−x)(1−2x)x​化为部分分式展开得:
    H(x)=11−2x−11−xH(x)=\frac{1}{1-2x}-\frac{1}{1-x}H(x)=1−2x1​−1−x1​由泰勒展开可得:
    H(x)=(1+2x+22x2+23x3+⋯)−(1+x+x2+x3+⋯)H(x)=(1+2x+2^2x^2+2^3x^3+\cdots)-(1+x+x^2+x^3+\cdots)H(x)=(1+2x+22x2+23x3+⋯)−(1+x+x2+x3+⋯)所以最终母函数结果为:
    H(x)=∑k=1∞(2k−1)xkH(x)=\sum_{k=1}^{\infty}(2^k-1)x^kH(x)=k=1∑∞​(2k−1)xk2k−12^k-12k−1即h(k)h(k)h(k)HANOI的复杂度。

  • 那么挪动64个圆盘,1s挪动一次需要多长时间挪动成功?
    计算如下图:

4.偶数个5问题

求nnn位十进制数中出现偶数个5的数的个数?

ana_nan​代表十进制数中出现偶数个5的数的个数;
bnb_nbn​代表十进制数中出现奇数个5的数的个数。
ana_nan​与bnb_nbn​之为9×10n−19×10^{n-1}9×10n−1(因为最高位不能为0)

  • 方法一:
    分类来看,前n−1n-1n−1个数为出现5的个数为偶数,则第nnn个数出现偶数个5的个数(除5之外的其它数)为9an−19a_{n-1}9an−1​
    前n−1n-1n−1个数为出现5的个数为奇数,则第nnn个数出现偶数个5的个数为bn−1b_{n-1}bn−1​
    所以:an=9an−1+bn−1a_n=9a_{n-1}+b_{n-1}an​=9an−1​+bn−1​
    同理:bn=9bn−1+an−1b_n=9b_{n-1}+a_{n-1}bn​=9bn−1​+an−1​
    假设母函数为:
    A(x)=a1+a2x+a3x2+⋯,a1=8A(x)=a_1+a_2x+a_3x^2+\cdots\space,a_1=8A(x)=a1​+a2​x+a3​x2+⋯ ,a1​=8
    B(x)=b1+b2x+b3x2+⋯,b1=1B(x)=b_1+b_2x+b_3x^2+\cdots,b_1=1B(x)=b1​+b2​x+b3​x2+⋯,b1​=1
    通过如下图的计算关系:
    得到:ak=728k−1+9210k−1a_k=\frac{7}{2}8^{k-1}+\frac{9}{2}10^{k-1}ak​=27​8k−1+29​10k−1
  • 方法二:
    分类来看,前n−1n-1n−1个数为出现5的个数为偶数,则第nnn个数出现偶数个5的个数(除5之外的其它数)为9an−19a_{n-1}9an−1​
    前n−1n-1n−1个数为出现5的个数为奇数,则第nnn个数出现偶数个5的个数为:9×10n−2−an−19×10^{n-2}-a_{n-1}9×10n−2−an−1​
    所以:an=9an−1+9×10n−2−an−1a_n=9a_{n-1}+9×10^{n-2}-a_{n-1}an​=9an−1​+9×10n−2−an−1​
    即递推式为an=8an−1+9×10n−2,a1=8a_n=8a_{n-1}+9×10^{n-2},a_1=8an​=8an−1​+9×10n−2,a1​=8
    假设母函数为A(x)=a1x+a2x2+⋯A(x)=a_1x+a_2x^2+\cdotsA(x)=a1​x+a2​x2+⋯
    经过如下图计算:
    即:(1−8x)A(x)=8x+9x21−10x(1-8x)A(x)=8x+\frac{9x^2}{1-10x}(1−8x)A(x)=8x+1−10x9x2​A(x)=x(8−71x)(1−8x)(1−10x)=12(7x1−8x−9x1−10x)A(x)=\frac{x(8-71x)}{(1-8x)(1-10x)}=\frac{1}{2}(\frac{7x}{1-8x}-\frac{9x}{1-10x})A(x)=(1−8x)(1−10x)x(8−71x)​=21​(1−8x7x​−1−10x9x​)所以:A(x)=12∑k=1∞(7⋅8k−1+9⋅10k−1)xkA(x)=\frac{1}{2}\sum_{k=1}^{\infty}(7\cdot8^{k-1}+9\cdot10^{k-1})x^kA(x)=21​k=1∑∞​(7⋅8k−1+9⋅10k−1)xk得到:ak=728k−1+9210k−1a_k=\frac{7}{2}8^{k-1}+\frac{9}{2}10^{k-1}ak​=27​8k−1+29​10k−1与方法一结果相同。

5.小结

母函数搭建了序列递推关系桥梁

序列 母函数 递推关系

  • 母函数:G(x)=a1+a2x+a3x2+⋯G(x)=a_1+a_2x+a_3x^2+\cdotsG(x)=a1​+a2​x+a3​x2+⋯
  • 从G(x)G(x)G(x)得到序列ana_nan​。关键在于搭起从序列到母函数,从母函数到序列这两座桥。
    如下图:思考:
    有理分式的分项表示,分母系数有特殊意义?
    母函数方法对递推关系的适用性

组合数学6--母函数与递推关系相关推荐

  1. 组合数学9-线性常系数奇次递推关系

    文章目录 线性常系数奇次递推关系 一 定义 二 特征多项式 1.常见数列的特征多项式 2.通用特征多项式推导 (1)数学推导 (2)结论 (3) 特征多项式 C ( x ) C(x) C(x)无重根 ...

  2. HDU - 1028——母函数入门

    [题目描述] "Well, it seems the first problem is too easy. I will let you know how foolish you are l ...

  3. 清华大学计算机研究生课程表

    清华大学计算机研究生课程表 计算机系研究生课程介绍 组合数学 课程名称:组合数学 课程编号:60240013 课内学时: 48 开课学期: 秋 任课教师:黄连生 [主要内容] 主要介绍组合数学的基本内 ...

  4. 计算机系研究生课程介绍

    计算机系研究生课程介绍 课程名称:组合数学 课程编号:60240013              课内学时: 48              开课学期: 秋 任课教师:黄连生 [主要内容] 主要介绍组 ...

  5. ACM 全部算法总结

    ACM 所有算法 附带我学过的算法的博客链接 数据结构 栈 队列 链表 哈希表 哈希数组 堆 优先队列 双端队列 可并堆 左偏堆 二叉查找树 Treap 伸展树 并查集 集合计数问题 二分图的识别 平 ...

  6. ACM所有算法大全(持续更新)

    转载自: http://blog.sina.com.cn/s/blog_adb6743801019h29.html ACM 所有算法 数据结构 栈,队列,链表 哈希表,哈希数组 堆,优先队列 双端队列 ...

  7. 大学才开始的ACM应该如何正确学习

    ACM(大学生程序设计大赛)现如今已经风靡大学校园.其感染度不仅局限于信息类专业,更是染指了理学类专业.这一项靠数学才能吃香的竞赛让许多大学生沉迷其中,感受到了算法和数学的魅力. 不过,言归正传,如果 ...

  8. 球函数与勒让德多项式

    球函数与勒让德多项式 球函数的提出 勒让德方程的解 勒让德多项式的性质 球函数的提出 在上一节,我们由亥姆霍兹方程引入了勒让德函数,现在我们用同样的思路从球坐标下的Laplace 方程中导出球函数与勒 ...

  9. ACM基础算法入门及题目列表

    对于刚进入大学的计算机类同学来说,算法与程序设计竞赛算是不错的选择,因为我们每天都在解决问题,锻炼着解决问题的能力. 这里以TZOJ题目为例,如果为其他平台题目我会标注出来,同时我的主页也欢迎大家去访 ...

  10. (组合数学习题)递推关系一道经典题分析与解答

    文章目录 题目 分析与解答 求解 程序实现(C++) 题目 来看下面一道题,主要用到的是组合数学中的递推关系部分的内容. 某长度为nnn的二进制序列,要求其中至少有连续的333个000出现,问:能产生 ...

最新文章

  1. 【微服务架构】SpringCloud之Feign
  2. 小红帽怎样装图形化界面_linux安装图形化界面
  3. 使用sn.exe为程序集签名
  4. Silverlight 参考:KeyEventArgs.Handled 属性
  5. 【TypeScript】获取随机数,并随机生成年份,判断是否为闰年
  6. FD32 查询客户信贷管理中,销售值是怎么来的?
  7. poj 1981(单位圆覆盖点)
  8. Silverlight3 Tools Download link
  9. python数据分析之pandas里的Series
  10. App相互唤醒的几种方式
  11. android如何建立全局变量,如何在Android中声明全局变量?
  12. 远程LInux和秘钥认证
  13. Spring Security Oauth2 认证(获取token/刷新token)流程
  14. 基于Vue2.x的小米商城移动端项目
  15. 为什么90%的CTO 都做不好绩效管理
  16. 随机数算法 java_最全的java随机数生成算法
  17. 关于layui分页组件layPage如何动态调整页数的使用
  18. WifiManager 实现Wifi快捷开关
  19. [译]const T vs. T const ——Dan Saks 【翻译】
  20. 【UE5】多用户协同编辑

热门文章

  1. pytorch实现GAN
  2. 常用颜色透明度色值表
  3. 基于第三方QQ授权登录
  4. 自然语言处理5:jieba分词详解全模式,精确模式和搜索引擎模式
  5. 模拟双色球系统判断中奖情况
  6. 压缩包加密后门_加密后门的问题
  7. 如何利用Python开发App?
  8. dejavu中如何添加html文件,【dejavu Chrome插件图文介绍】dejavu Chrome插件图片教程 - 开发者插件 - Chrome插件网...
  9. java连连看开题报告_JAVA连连看
  10. blog增量追加ing~(1/10阶段)ctf oj