(组合数学笔记)格点路径问题分析求解
写在前面
分析求解一道组合数学的经典问题——格点路径问题,以及其母函数形式导出。
例题
设m,n∈Zm,\,n\in\mathbb{Z}m,n∈Z,am,na_{m,\,n}am,n是从格点(0,0)(0,\,0)(0,0)到格点(m,n)(m,\,n)(m,n)的路径数,但要求路径中的每一步只允许以下三种走法:
- R:(x,y)→(x+1,y)R\,:\,(x,\,y)\to(x+1,\,y)R:(x,y)→(x+1,y) ;
- U:(x,y)→(x,y+1)U\,:\,(x,\,y)\to(x,\,y+1)U:(x,y)→(x,y+1) ;
- D+:(x,y)→(x+1,y+1)D^+\,:\,(x,\,y)\to(x+1,\,y+1)D+:(x,y)→(x+1,y+1) ;
试求序列{am,n}m,n⩾0\{a_{m,\,n}\}_{m,\,n\geqslant0}{am,n}m,n⩾0的普通型母函数F(x,y)F(x,\,y)F(x,y).
分析及求解
不妨设m⩾nm\geqslant nm⩾n,则从格点(0,0)(0,\,0)(0,0)到格点(m,n)(m,\,n)(m,n)的路径数为三元集S={U,R,D+}S=\{U,\,R,\,D^+\}S={U,R,D+}的重排列。
下面进行分类计数。
将路径以含有kkk个UUU步(向上步)分类,则必有n−kn-kn−k 个D+D^+D+步,m−(n−k)m-(n-k)m−(n−k)个RRR步,即重集
{k⋅U,(n−k)⋅R,(m−n+k)⋅D+}\big\{k\cdot U,\,(n-k)\cdot R,\,(m-n+k)\cdot D^+\big\} {k⋅U,(n−k)⋅R,(m−n+k)⋅D+}
的全排列数,所以直接得
am,n=∑k=0n(m+kk,n−k,m−n+k)=∑k=0n(m+km)(mn−k),a_{m,\,n}=\sum_{k=0}^n\binom{m+k}{k,\,n-k,\,m-n+k}=\sum_{k=0}^n\binom{m+k}{m}\binom{m}{n-k}, am,n=k=0∑n(k,n−k,m−n+km+k)=k=0∑n(mm+k)(n−km),
于是序列{am,n}m,n⩾0\{a_{m,\,n}\}_{m,\,n\geqslant0}{am,n}m,n⩾0的普通型母函数F(x,y)F(x,\,y)F(x,y)为
F(x,y)=∑m⩾0∑n⩾0am,nxmyn=∑m⩾0∑n⩾0∑k=0n(m+km)(mn−k)xmyn=∑m⩾0∑k⩾0(m+km)[∑n⩾k(mn−k)yn]xm=∑m⩾0∑k⩾0(m+km)[∑n⩾k(mn−k)yn−k]xmyk=∑m⩾0xm(1+y)m[∑k⩾0(m+kk)yk]=∑m⩾0xm(1+y)m[∑k⩾0(m+k)(m+k−1)⋯(m+1)k!yk]=∑m⩾0xm(1+y)m[∑k⩾0(−m−k)(−m−k+1)⋯(−m−1)k!(−y)k]=∑m⩾0xm(1+y)m(1−y)−m−1=11−y∑m⩾0(x+xy1−y)m=11−y⋅11−x+xy1−y=11−y−x−xy\begin{aligned} F(x,\,y) &=\sum_{m\geqslant 0}\sum_{n\geqslant 0}a_{m,\,n}x^my^n\\ &=\sum_{m\geqslant 0}\sum_{n\geqslant 0}\sum_{k=0}^{n}\binom{m+k}{m}\binom{m}{n-k}x^my^n\\ &=\sum_{m\geqslant 0}\sum_{k\geqslant 0}\binom{m+k}{m}\Bigg[\sum_{n\geqslant k}\binom{m}{n-k}y^n\Bigg]x^m\\ &=\sum_{m\geqslant 0}\sum_{k\geqslant 0}\binom{m+k}{m}\Bigg[\sum_{n\geqslant k}\binom{m}{n-k}y^{n-k}\Bigg]x^my^k\\ &=\sum_{m\geqslant 0}x^m(1+y)^m\Bigg[\sum_{k\geqslant 0}\binom{m+k}{k}y^k\Bigg]\\ &=\sum_{m\geqslant 0}x^m(1+y)^m\Bigg[\sum_{k\geqslant 0}\frac{(m+k)(m+k-1)\cdots(m+1)}{k!}y^k\Bigg]\\ &=\sum_{m\geqslant 0}x^m(1+y)^m\Bigg[\sum_{k\geqslant 0}\frac{(-m-k)(-m-k+1)\cdots(-m-1)}{k!}(-y)^k\Bigg]\\ &=\sum_{m\geqslant 0}x^m(1+y)^m(1-y)^{-m-1}\\ &=\frac{1}{1-y}\sum_{m\geqslant 0}\bigg(\frac{x+xy}{1-y}\bigg)^m\\ &=\frac1{1-y}\cdot\frac1{1-\frac{x+xy}{1-y}}\\ &=\frac1{1-y-x-xy} \end{aligned} F(x,y)=m⩾0∑n⩾0∑am,nxmyn=m⩾0∑n⩾0∑k=0∑n(mm+k)(n−km)xmyn=m⩾0∑k⩾0∑(mm+k)[n⩾k∑(n−km)yn]xm=m⩾0∑k⩾0∑(mm+k)[n⩾k∑(n−km)yn−k]xmyk=m⩾0∑xm(1+y)m[k⩾0∑(km+k)yk]=m⩾0∑xm(1+y)m[k⩾0∑k!(m+k)(m+k−1)⋯(m+1)yk]=m⩾0∑xm(1+y)m[k⩾0∑k!(−m−k)(−m−k+1)⋯(−m−1)(−y)k]=m⩾0∑xm(1+y)m(1−y)−m−1=1−y1m⩾0∑(1−yx+xy)m=1−y1⋅1−1−yx+xy1=1−y−x−xy1
主要方法
上面的推导过程主要利用求和换序(需要注意变量的依赖关系)、广义牛顿二项式定理,由此即得结论。
广义牛顿二项式定理
(x+y)α=∑k=0∞(αk)xα−kyk,(x+y)^\alpha=\sum_{k=0}^{\infty} {\binom{\alpha}{k}x^{\alpha-k}y^{k}}, (x+y)α=k=0∑∞(kα)xα−kyk,
其中
(αk)=α(α−1)…(α−k+1)k!=(α)kk!,\binom{\alpha}{k}=\frac{\alpha(\alpha-1) \ldots(\alpha-k+1)}{k !}=\frac{(\alpha)_{k}}{k !}, (kα)=k!α(α−1)…(α−k+1)=k!(α)k,
这里α∈R\alpha\in\mathbb{R}α∈R.
(组合数学笔记)格点路径问题分析求解相关推荐
- 最大熵学习笔记(六)优缺点分析
生活中我们经常听到人们说"不要把鸡蛋放到一个篮子里",这样可以降低风险.深究一下,这是为什么呢?其实,这里边包含了所谓的最大熵原理(The Maximum Entropy Prin ...
- (组合数学笔记)Pólya计数理论_Part.10_Pólya定理的推广——De Bruijn定理的母函数形式
文章目录 写在前面 引入 模式清单 引理1 引理2 母函数型的De Bruijn定理 定理的特殊情况 XXX上没有置换群 YYY上没有置换群 X,YX,\,YX,Y上均没有置换群 例题 分析 写在前面 ...
- python常用模块用法_python笔记之常用模块用法分析
python笔记之常用模块用法分析 内置模块(不用import就可以直接使用) 常用内置函数 help(obj) 在线帮助, obj可是任何类型 callable(obj) 查看一个obj是不是可以像 ...
- Apache Nutch 1.3 学习笔记十(插件机制分析)
1. 一些对象说明 PluginRepository:这是一个用于存储所有插件描述对象(PluginDescriptor),插件扩展点(ExtensionPoint)和被激活的插件. PluginDe ...
- 第七章:小朱笔记hadoop之源码分析-hdfs分析 第四节:namenode-LeaseManagerMonitor
第七章:小朱笔记hadoop之源码分析-hdfs分析 第四节:namenode分析 4.4 namenode文件租约分析LeaseManagerMonitor 文件租约就是将操作的文件和操作它的客户端 ...
- 第七章:小朱笔记hadoop之源码分析-hdfs分析 第三节:hdfs实现分析
第七章:小朱笔记hadoop之源码分析-hdfs分析 第三节:hdfs实现分析 3.3 namenode (1)FSDirectory FSDirectory用来管理HDFS整个文件系统的namesp ...
- 第七章:小朱笔记hadoop之源码分析-hdfs分析 第四节:namenode分析-namenode启动过程分析...
第七章:小朱笔记hadoop之源码分析-hdfs分析 第四节:namenode分析 4.1 namenode启动过程分析 org.apache.hadoop.hdfs.server.namenode. ...
- 第七章:小朱笔记hadoop之源码分析-hdfs分析 第五节:Datanode 分析
第七章:小朱笔记hadoop之源码分析-hdfs分析 第五节:Datanode 分析 5.1 Datanode 启动过程分析 5.2 Datanode 心跳分析 5.3 Datanode 注册分析 5 ...
- tensorflow笔记:多层CNN代码分析
tensorflow笔记系列: (一) tensorflow笔记:流程,概念和简单代码注释 (二) tensorflow笔记:多层CNN代码分析 (三) tensorflow笔记:多层LSTM代 ...
最新文章
- 深度学习之好的博客文章
- python数值运算答案_笨方法学Python 习题3:数字和数学计算
- What Are You Talking About
- Lindström–Gessel–Viennot lemma
- php 剪贴板,之Windows中的剪贴板
- 乐高机器人亮剑_2500名选手大比拼 全球机器人广州从化“亮剑”
- 无盘XP系统全套安装说明
- 创建struct fib_info
- 4 谐波_谐波的基础知识
- java并发:interrupt进程终止
- sqlmap md5怎么解密_三十九,hackthebox渗透之DirBuster扫描路径及Sqlmap
- linux telnet命令不可用的解决办法
- java ssh架构_JAVA SSH 框架介绍(转)
- 加速度传感器和角度传感器
- 数码管动态扫描显示程序内消影流程
- 苹果电脑系统重装 —— U盘操作
- 虚拟机主机服务器出现SSH已启用,ESXi去掉 SSH已经启用的警告信息
- python图书搜索与书籍封面下载
- python随机生成英文字符串_如何用Python语言生成随机字符串 | 学步园
- 项目经理(Project Manager)和产品经理(Product Manager),简称PM。