当前位置: 首页 > news >正文

以序列计数问题为例浅谈生成函数运用

序列计数问题解析

问题描述

现有若干种颜色不同的骨牌,其中大小为 \(1 \times i\) 的骨牌共有 \(a_i\) 种,且每种骨牌都可以无限量使用。要求计算用这些骨牌不重叠地铺满一排 \(1 \times n\) 的方格,共有多少种方法(其中 \(a_i, n \leq 5000\))。

基础生成函数定义

针对 “只选择一种骨牌” 的情况,定义基础生成函数 \(A(x)\) 为:

\(A(x) = \sum_{i=1}^{\infty} a_i x^i\)

其中 \(x^i\) 的系数 \(a_i\) 表示大小为 \(1 \times i\) 的骨牌的种类数。

答案生成函数的推导

方法一:递推推导(基于最后一个决策点)

通过分析铺满方格的最后一步选择的骨牌类型,建立递推关系,进而推导出答案生成函数。

步骤 i:建立递推关系

\(f(n)\) 表示铺满长度为 \(n\) 的方格的方案数。考虑最后一个放置的骨牌大小为 \(i\)\(i \leq n\)),则该骨牌左侧需要铺满长度为 \(n-i\) 的方格,对应的方案数为 \(f(n-i)\)。由于大小为 \(i\) 的骨牌有 \(a_i\) 种选择,因此递推关系为:

\[f(n) = \sum_{i=1}^{n} a_i f(n-i) \]

(注:规定 \(f(0) = 1\),表示长度为 0 的方格有 1 种空铺方案)。

步骤 ii:定义答案生成函数

设答案的生成函数 \(F(x)\) 为:

\[F(x) = \sum_{n=0}^{\infty} f(n) x^n \]

其中 \(x^n\) 的系数即为铺满长度为 \(n\) 的方格的方案数 \(f(n)\)

步骤 iii:代入递推关系到生成函数

将递推关系代入生成函数 \(F(x)\),可得:

\[F(x) = \sum_{n=0}^{\infty} \left( \sum_{i=1}^{n} a_i f(n-i) \right) x^n \]

\(n=0\) 时,内层求和 \(\sum_{i=1}^{0} a_i f(0-i)\) 为空(无意义),结合 \(f(0)=1\),可拆分表达式为:

\[F(x) = f(0)x^0 + \sum_{n=1}^{\infty} \left( \sum_{i=1}^{n} a_i f(n-i) \right) x^n = 1 + \sum_{n=1}^{\infty} \left( \sum_{i=1}^{n} a_i f(n-i) \right) x^n \]

步骤 iv:指标反转与化简

交换求和顺序,先对骨牌大小 \(i\) 求和,再对剩余长度求和:

\[F(x) = 1 + \sum_{i=1}^{\infty} a_i \sum_{n=i}^{\infty} f(n-i) x^n \]

\(k = n - i\)(即 \(n = k + i\)),当 \(n = i\)\(k = 0\),因此内层对 \(n\) 的求和可转化为对 \(k\) 的求和:

\[\sum_{n=i}^{\infty} f(n-i) x^n = \sum_{k=0}^{\infty} f(k) x^{k+i} = x^i \sum_{k=0}^{\infty} f(k) x^k = x^i F(x) \]

代入上式可得:

\[F(x) = 1 + \sum_{i=1}^{\infty} a_i \cdot x^i F(x) = 1 + F(x) \sum_{i=1}^{\infty} a_i x^i \]

由于 \(\sum_{i=1}^{\infty} a_i x^i = A(x)\),因此:\(F(x) = 1 + A(x) F(x)\)

步骤 v:求解生成函数关系

\(F(x) = 1 + A(x) F(x)\) 移项并求解 \(F(x)\):$$F(x) - A(x) F(x) = 1 \implies F(x) (1 - A(x)) = 1 \implies F(x) = \frac{1}{1 - A(x)}$$

方法二:直接组合意义分析

通过组合意义直接推导生成函数关系:

  1. 子问题拆分:铺满长度为 \(n\) 的方格可按使用骨牌的数量 \(k\) 拆分子问题(\(k = 0, 1, 2, \dots\)),其中 \(k=0\) 对应空铺方案。当前的子问题是k个骨牌铺满长度n,第一个骨牌谁都可选,方案数生成函数A(x),第二个骨牌谁都可选,方案数生成函数A(x),第三个骨牌谁都可选,方案数生成函数A(x)......

  2. 单个骨牌的生成函数:选择任意一个骨牌的方案数生成函数为 \(A(x)\),因此选择 \(k\) 个骨牌的方案数生成函数为 \(A(x)^k\)(乘法原理)。

  3. 总生成函数:根据加法原理,所有可能骨牌数量的方案数生成函数之和为:

\[F(x) = \sum_{k=0}^{\infty} A(x)^k \]

  1. 化简公式:根据无穷等比数列求和公式(当 \(|A(x)| < 1\) 时),上式可化简为:

\[F(x) = \frac{1}{1 - A(x)} \]

结论

铺满 \(1 \times n\) 方格的方案数为生成函数 $$F(x) = \frac{1}{1 - A(x)}$$ 中 \(x^n\) 的系数,即 \([x^n]F(x) = [x^n]\frac{1}{1 - A(x)}\)

http://www.sczhlp.com/news/14811/

相关文章:

  • 专门做二维码的网站营销软文推广平台
  • 网站如何做移动网站百度的电话人工客服电话
  • 云南网站建设的步骤上海推广网络营销咨询热线
  • 外贸资讯平台长沙网站seo公司
  • 天河建设网站企业汽车网站建设
  • 好的网站建设公司排名如何找外包的销售团队
  • 广州免费设计网站建设素材网
  • 搜狗整站优化网址收录查询
  • 揭阳企业免费建站网络营销的基本功能
  • 政府网站asp今日头条搜索优化
  • 海南网站建设哪家不错潍坊关键词优化排名
  • 网站公安备案什么意思茶叶网络营销策划方案
  • 深圳网站建设公司排行个人怎么做推广
  • wordpress阿里秀模板常德seo招聘
  • 河南无限动力做网站怎么样百度置顶广告多少钱
  • 扬州网站定制怎么买到精准客户的电话
  • 企业所得税如何征收长沙网站优化推广方案
  • 东莞公司建站模板品牌广告语
  • 公司做网站需要什么手续吗收录优美图片崩了
  • 收费报名网站怎么做营销策划的十个步骤
  • 怎么识别网站开发语言软文推广
  • 交易网站域名网站seo排名优化工具在线
  • wordpress登录密码忘记seo如何建立优化网站
  • 网站建设的费用明细网站关键词优化有用吗
  • 网站怎么做跳转品牌整合营销案例
  • it企业网站模板下载百度搜索网页
  • 成华网站制作深圳网站seo优化
  • 高手做网站深圳百度网站排名优化
  • 做设计找素材的 网站有哪些千锋教育北京校区
  • 前端做网站直播网站排名怎么做上去