【组合数学】生成函数

目录

  • 1.形式幂级数
  • 2.生成函数性质
  • 3.生成函数求解递推关系
  • 4.生成函数在计数问题中的应用

1.形式幂级数

生成函数是解决计数问题的一种有效方法,它的中心思想是:对于一个有限或无限数列 a 0 , a 1 , a 2 , . . . {a_0,a_1,a_2,...} a0,a1,a2,...,用 { x i } ( i = 0 , 1 , . . . ) \{x^i\}(i=0,1,...) {xi}(i=0,1,...)这样的生成基构成形式幂级数 A ( x ) = a 0 + a 1 x + a 2 x 2 + . . . A(x)=a_0+a_1x+a_2x^2+... A(x)=a0+a1x+a2x2+... 使 { a i } \{a_i\} {ai} { x i } \{x^i\} {xi} 成一一对应关系,由此 { a i } \{a_i\} {ai} { x i } \{x^i\} {xi} 构成了一个整体,通过研究幂级数 A ( x ) A(x) A(x),导出数列 { a 0 , a 1 , a 2 , . . . } \{a_0,a_1,a_2,...\} {a0,a1,a2,...}的构造和性质。
A ( x ) A(x) A(x) 为序列 { a 0 , a 1 , a 2 , . . . } \{a_0,a_1,a_2,...\} {a0,a1,a2,...} 的生成函数,并记为 G ( a n ) G(a_n) G(an)

对于形式幂级数可以像收敛的幂级数那样进行运算,运算的定义和规则完全相同

定义 1.1:对于任意 A ( x ) = ∑ k = 0 ∞ a k x k A(x)=\sum^{\infty}_{k=0}a_kx^k A(x)=k=0akxk,规定 D A ( x ) DA(x) DA(x) A ( x ) A(x) A(x) 的导数且 D A ( x ) ≡ ∑ k = 0 ∞ k a k x k − 1 DA(x)\equiv \sum^{\infty}_{k=0}ka_kx^{k-1} DA(x)k=0kakxk1

2.生成函数性质

一个数列和它的生成函数是一一对应的。 已知数列便得知它的生成函数(系数项确定)。同理求得生成函数,则数列也随之而定。
数列 { a 0 , a 1 , a 2 , . . . } \{a_0,a_1,a_2,...\} {a0,a1,a2,...} 的生成函数为 A ( x ) = ∑ k = 0 ∞ a k x k A(x)=\sum^{\infty}_{k=0}a_kx^k A(x)=k=0akxk
数列 { b 0 , b 1 , b 2 , . . . } \{b_0,b_1,b_2,...\} {b0,b1,b2,...} 的生成函数为 B ( x ) = ∑ k = 0 ∞ b k x k B(x)=\sum^{\infty}_{k=0}b_kx^k B(x)=k=0bkxk
可以得到生成函数的如下一些性质

性质 2.1:若 b k = { 0 ( k < l ) a k − l ( k ≥ l ) b_k=\left\{\begin{matrix} 0 & (k<l)\\ a_{k-l} & (k\ge l) \end{matrix}\right. bk={0akl(k<l)(kl) B ( x ) = x l ⋅ A ( x ) B(x)=x^l\cdot A(x) B(x)=xlA(x)

性质 2.2:若 b k = a k + l b_k=a_{k+l} bk=ak+l ,则 B ( x ) = 1 x l ( A ( X ) − ∑ k = 0 l − 1 a k x k ) B(x)=\cfrac{1}{x^l}(A(X)-\sum_{k=0}^{l-1} a_kx^k) B(x)=xl1(A(X)k=0l1akxk)

性质 2.3:若 b k = ∑ i = 0 k a i b_k=\sum_{i=0}^{k}a_i bk=i=0kai,则 B ( x ) = A ( x ) 1 − x B(x)=\cfrac{A(x)}{1-x} B(x)=1xA(x)

性质 2.4:若 b k = ∑ i = k ∞ a i b_k=\sum_{i=k}^{\infty}a_i bk=i=kai,则 B ( x ) = A ( 1 ) − x A ( x ) 1 − x B(x)=\cfrac{A(1)-xA(x)}{1-x} B(x)=1xA(1)xA(x)

性质 2.5:若 b k = k a k b_k=ka_k bk=kak,则 B ( x ) = x A ( x ) B(x)=xA(x) B(x)=xA(x)

性质 2.6:若 b k = a k k + 1 b_k=\cfrac{a_k}{k+1} bk=k+1ak,则 B ( x ) = 1 x ∫ 0 x A ( t ) d t B(x)=\cfrac{1}{x}\int_{0}^{x}A(t)dt B(x)=x10xA(t)dt

性质 2.7:若 c k = α a k + β b k c_k=\alpha a_k+\beta b_k ck=αak+βbk,则 C ( x ) ≡ ∑ k = 0 ∞ c k x k = α A ( x ) + β B ( x ) C(x)\equiv \sum_{k=0}^{\infty}c_kx^k=\alpha A(x)+\beta B(x) C(x)k=0ckxk=αA(x)+βB(x)

数列生成函数
{1,1,1,…} G { 1 } = 1 1 − x G\{1\}=\cfrac{1}{1-x} G{1}=1x1
{ a 0 , a 1 , a 2 , . . . } \{a^0,a^1,a^2,...\} {a0,a1,a2,...} G { a k } = 1 1 − a x G\{a^k\}=\cfrac{1}{1-ax} G{ak}=1ax1
{0,1,2,…} G { k } = x ( 1 − x ) 2 G\{k\}=\cfrac{x}{(1-x)^2} G{k}=(1x)2x
{ 0 ⋅ 1 , 1 ⋅ 2 , 2 ⋅ 3 , . . . } \{0\cdot1,1\cdot2,2\cdot3,...\} {01,12,23,...} G { k ( k + 1 ) } = 2 x ( 1 − x ) 3 G\{k(k+1)\}=\cfrac{2x}{(1-x)^3} G{k(k+1)}=(1x)32x
{ 0 ⋅ 1 ⋅ 2 , 1 ⋅ 2 ⋅ 3 , 2 ⋅ 3 ⋅ 4 , . . . } \{0\cdot1\cdot2,1\cdot2\cdot3,2\cdot3\cdot4,...\} {012,123,234,...} G { k ( k + 1 ) ( k + 2 ) } = 6 x ( 1 − x ) 4 G\{k(k+1)(k+2)\}=\cfrac{6x}{(1-x)^4} G{k(k+1)(k+2)}=(1x)46x
{0,1,4,…} G { k 2 } = x ( 1 + x ) ( 1 − x ) 3 G\{k^2\}=\cfrac{x(1+x)}{(1-x)^3} G{k2}=(1x)3x(1+x)
{0,1,8,…} G { k 3 } = x 3 + 4 x 2 + x ( 1 − x ) 4 G\{k^3\}=\cfrac{x^3+4x^2+x}{(1-x)^4} G{k3}=(1x)4x3+4x2+x
{ 1 0 ! , 1 1 ! , 1 2 ! , . . . } \{\cfrac{1}{0!},\cfrac{1}{1!},\cfrac{1}{2!},...\} {0!1,1!1,2!1,...} G { 1 k ! } = e x G\{\cfrac{1}{k!}\}=e^x G{k!1}=ex
{ ( α 0 ) , ( α 1 ) , ( α 2 ) , . . . } \{\binom{\alpha}{0},\binom{\alpha}{1},\binom{\alpha}{2},...\} {(0α),(1α),(2α),...} G { ( α k ) } = ( 1 + x ) α G\{\binom{\alpha}{k}\}=(1+x)^\alpha G{(kα)}=(1+x)α
{ ( n + 0 0 ) , ( n + 1 1 ) , ( n + 2 2 ) , . . . } \{\binom{n+0}{0},\binom{n+1}{1},\binom{n+2}{2},...\} {(0n+0),(1n+1),(2n+2),...} G { ( n + k k ) } = 1 ( 1 − x ) n + 1 G\{\binom{n+k}{k}\}=\cfrac{1}{(1-x)^{n+1}} G{(kn+k)}=(1x)n+11

习题1、 求序列{5, 6, 7, …, n + 5, …}的生成函数

在这里插入图片描述

习题2、 利用生成函数计算 1 3 + 2 3 + . . . + n 3 1^3+2^3+...+n^3 13+23+...+n3

在这里插入图片描述

3.生成函数求解递推关系

生成函数求解递推关系基本步骤如下:

  1. A ( x ) = ∑ n = 0 ∞ f ( n ) x n A(x)=\sum_{n=0}^{\infty}f(n)x^n A(x)=n=0f(n)xn
  2. 将关于 f ( n ) f(n) f(n) 的递推关系式转化成关于 A ( x ) A(x) A(x) 的方程式
  3. 解出 A ( x ) A(x) A(x) ,将 A ( x ) A(x) A(x) 展开成 x 的幂级数, x n x^n xn 的系数即是 f ( n ) f(n) f(n)

习题3、 用生成函数求解递推关系 { f ( n ) = 4 f ( n − 2 ) f ( 0 ) = 0 , f ( 1 ) = 1 \left\{\begin{matrix} f(n)=4f(n-2)\\ f(0)=0,f(1)=1 \end{matrix}\right. {f(n)=4f(n2)f(0)=0,f(1)=1

在这里插入图片描述

习题4、 用生成函数求解递推关系 { f ( n ) = f ( n − 1 ) + 9 f ( n − 2 ) − 9 f ( n − 3 ) f ( 0 ) = 0 , f ( 1 ) = 1 , f ( 2 ) = 2 \left\{\begin{matrix} f(n)=f(n-1)+9f(n-2)-9f(n-3)\\ f(0)=0,f(1)=1,f(2)=2 \end{matrix}\right. {f(n)=f(n1)+9f(n2)9f(n3)f(0)=0,f(1)=1,f(2)=2

在这里插入图片描述

习题5、 用生成函数求解递推关系 { f ( n ) = f ( n − 1 ) + n 2 f ( 0 ) = 0 \left\{\begin{matrix} f(n)=f(n-1)+n^2\\ f(0)=0 \end{matrix}\right. {f(n)=f(n1)+n2f(0)=0

在这里插入图片描述

4.生成函数在计数问题中的应用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/287219.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Numpy教程(一)—— ndarray:多维数组对象

前言 该numpy学习笔记参考了菜鸟教程网、b站up主 孙兴华zz 的《孙兴华中文讲python数据分析三部曲》以及《北理-python数据分析与展示》&#xff0c;课本推荐使用《利用python进行数据分析》 Numpy简介&#xff1a; NumPy(Numerical Python) 是 Python 语言的一个扩展程序库&a…

Python----进程的注意点

1. 进程的注意点介绍 进程之间不共享全局变量主进程会等待所有的子进程执行结束再结束 2. 进程之间不共享全局变量 import multiprocessing import time# 定义全局变量 g_list list()# 添加数据的任务 def add_data():for i in range(5):g_list.append(i)print("add:&…

性能测试什么时候开始?性能测试流程介绍

性能测试什么时候开始? 一般在系统功能稳定没有大的缺陷之后开始执行。但前期准备工作可以从系统需求分析时就开始&#xff1a;性能目标制定、场景获取、环境申请等。 一、制定性能测试目标 在特定的并发用户数下测试特定场景的响应时间 在一定的响应时间的要求下来测试特…

STM32单片机项目实例:基于TouchGFX的智能手表设计(5)硬件驱动层程序设计

STM32单片机项目实例&#xff1a;基于TouchGFX的智能手表设计&#xff08;5&#xff09;硬件驱动层程序设计 目录 一、 概述 二、 新建工程与外设配置 三、 TouchGFX配置 四、 增加TouchGFX关键驱动 一、 概述 本文内容主要进行工程新建&#xff0c;硬件外设的配置以及添加…

使用Alpha Vantage API和Python进行金融数据分析

Alpha Vantage通过一套强大且开发者友好的数据API和电子表格&#xff0c;提供实时和历史的金融市场数据。从传统资产类别&#xff08;例如股票、ETF、共同基金&#xff09;到经济指标&#xff0c;从外汇汇率到大宗商品&#xff0c;从基本数据到技术指标&#xff0c;Alpha Vanta…

Google Analystics账号的创建

1&#xff0c;空账号 如果您原来没有用过谷歌分析&#xff0c;点开后会是下面的页面&#xff0c;点击页面中央的开始衡量&#xff08;start measuring&#xff09; 2&#xff0c;已有过账号 如果您原本有过账号需要创建新账号&#xff0c;需要点击主页左下角的管理&#xff…

JMUer-网络新技术课程期末考试复习整理

✏️write in front✏️ &#x1f4dd;个人主页&#xff1a;陈丹宇jmu &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​ &#x1f649;联系作者&#x1f648;by QQ&#xff1a;813942269&#x1f427; &#x1f308;致亲爱的读者&#xff1a;很高兴你…

Java继承特性(学习推荐版)——java三大特性之一,子类extends父类

定义 Java支持单继承和多层继承&#xff0c;但不支持多继承 # 子类构造器及super用法 解释&#xff1a;子类构造器&#xff0c;注意是子类的构造器&#xff0c;不是子类的方法的第一行默认都会有super()去调用无参构造器&#xff0c;只不过可以省略没写而已。当然也可以自己写…

openwrt 搭建web

折腾 软路由 有几年了&#xff0c;最近试了下 移动的 IPV6, 既然可以拿到 公网的 IPV6&#xff0c; 所以想折腾下, 经过不懈努力 实现了&#xff1a;通过 ipv4/ipv6 地址访问我的 web站点 (白飘不花钱的方式) 1 动态DNS 折腾 DDNS 无非是想 白飘 公网IP&#xff0c;但是 仅仅…

VueStu02-创建一个Vue实例

一、核心步骤 1.准备容器 准备一个盒子div。 2.引包 从官网引包&#xff0c;有开发版本和生产版本之分。 3.创建Vue实例 创建一个Vue实例&#xff0c;new Vue()。 4.指定配置项 指定配置项&#xff0c;用于渲染数据 。 el&#xff1a;指定挂载点。知道自己将来要管理的是…

【MySQL】 表的操作

// 创建表 create table 表名();// 查看表结构 desc 表名;// 新增一列表信息 alter table 表名 add 字段名 字段类型 (after 原表某一字段名);// 删除一列表信息 alter table 表名 drop 字段名;// 修改表字段名字 alter table 表名 change 原字段名 新字段名 类型; // 新字…

Spring Security 6.x 系列(11)—— Form表单认证流程

一、前言 在本系列文章中介绍了过滤器和相关认证组件&#xff0c;对部分源码也进行详细分析。 本章主要学习 Spring Security 中通过 HTML 表单提供用户名和密码的认证流程。 二、配置表单登录 默认情况下&#xff0c;Spring Security 表单登录处于启用状态。 但是&#xff…