关于生成函数和二项式定理
二项式定理与生成函数
一.二项式定理
二项式定理
∀ \forall ∀ x , y x , y x,y ∈ \in ∈ R , n ∈ Z , n \in Z, n∈Z, 均有 ( x + y ) n = ∑ i = 0 n C n i x i y n − i (x+y)^n = \sum_{i=0}^n C_n^i x^i y^{n-i} (x+y)n=∑i=0nCnixiyn−i
证明: 对于 ( x + y ) n (x+y)^n (x+y)n 中 x i y n − i x^iy^{n-i} xiyn−i 项的系数,相当于有 n 次选择 每次选择可以挑出一个 x 或者 一个 y ,求出 n 次选择后,恰好挑了 i i i 个 x 和 ( n − i ) (n-i) (n−i) 个 y 的方案数,即 C n i C^i_n Cni 种方案。
牛顿二项式定理
∀ \forall ∀ x , y , a x , y , a x,y,a ∈ R \in R ∈R 且 ∣ x ∣ > ∣ y ∣ |x|> |y| ∣x∣>∣y∣
均有 ( x + y ) a = ∑ i = 0 ∞ C a i x i y n − i (x+y)^a = \sum_{i = 0}^\infty C_a^i x^i y^{n-i} (x+y)a=∑i=0∞Caixiyn−i (1)
其中 C a i C_a^i Cai = a ( a − 1 ) ( a − 2 ) . . . . . . ( a − i + 2 ) ( a − i + 1 ) i ! \dfrac{a(a-1)(a-2)......(a-i+2)(a-i+1)}{i!} i!a(a−1)(a−2)......(a−i+2)(a−i+1)
特别地,(1)中,我们令 x = 1 x = 1 x=1 则有 ( 1 + y ) a = ∑ i = 0 ∞ C a i y i (1+y)^a = \sum_{i = 0}^\infty C_a^i y^{i} (1+y)a=∑i=0∞Caiyi ( ∣ y ∣ < 1 |y|<1 ∣y∣<1)(2)
在(2)中,用 − a -a −a 替代 a a a
得到 ( 1 + y ) − a = ∑ i = 0 ∞ ( − 1 ) i C a + i − 1 i y i (1+y)^{-a} = {\sum_{i = 0}^\infty (-1)^iC_{a+i-1}^{i} y^{i}} (1+y)−a=∑i=0∞(−1)iCa+i−1iyi (3)
注:((3)比(2)式子多了一项 ( − 1 ) i (-1)^i (−1)i ,是因为在上述组合数的计算规则中,当 a < 0 a<0 a<0 时 组合数的正负性会发生改变,下面的(4)式就让组合数的正负性不再改变,式子也变得更加简洁 )
在 (3) 中, 用 − z -z −z 替代 z z z
得到 ( 1 − y ) − a = ∑ i = 0 ∞ C a + i − 1 i y i (1-y)^{-a} = {\sum_{i = 0}^\infty C_{a+i-1}^i y^{i}} (1−y)−a=∑i=0∞Ca+i−1iyi (4)
在 (3) 中,令 a = 1 a = 1 a=1
则有 1 1 + y \frac{1}{1+y} 1+y1 = ∑ i = 0 ∞ ( − 1 ) i y i {\sum_{i = 0}^\infty (-1)^iy^{i}} ∑i=0∞(−1)iyi (5)
同理 由 (4) 得到 1 1 − y = ∑ i = 0 ∞ y i \frac{1}{1-y} = {\sum_{i = 0}^\infty y^{i}} 1−y1=∑i=0∞yi (6)
牛顿二项式定理是化简无穷收敛级数的重要手段,也是生成函数中常用的化简技巧。
**
二.生成函数
**
对于一个任意序列 a 0 , a 1 , a 2 , . . . , a n a_0,a_1,a_2,...,a_n a0,a1,a2,...,an ,定义它的生成函数为 f ( x ) = ∑ i = 0 n a i x i f(x) = \sum_{i = 0}^n a_ix^i f(x)=∑i=0naixi
生成函数可以用于解决许多组合问题,也能使用生成函数将数列递推公式转化成数列通项公式。
比如下面这个经典的问题:
求方程 x 1 + x 2 + x 3 + . . . + x n = k x_1+x_2+x_3+...+x_n = k x1+x2+x3+...+xn=k的解的个数 其中 x 1 , x 2 , x 3 , . . . , x n x_1,x_2,x_3,...,x_n x1,x2,x3,...,xn 均为正整数。
一种非常自然的想法是对问题建立一一映射,于是原问题就变成 k个小球,要将它们分成 n 份的总方案数,可以通过插板法解决,答案为 C k − 1 n − 1 C_{k-1}^{n-1} Ck−1n−1
但是这种建立一一映射的方法通常很难想到,所以我们接下来介绍使用生成函数解决这个问题。
对于任意一项 x i x_i xi 来说, 不考虑其他项取值的限制,也不考虑 k 的大小, x i x_i xi 可为 1 到 + ∞ +\infty +∞ 之间的任何整数。
考虑构造序列 h 0 , h 1 , h 2 , h 3 , . . . h ∞ h_0,h_1,h_2,h_3,...h_{\infty} h0,h1,h2,h3,...h∞, h 0 = 0 h_0 = 0 h0=0,其他项均为一,其中对于任意j, h j h_j hj 的值表示 x i = j x_i = j xi=j 有 h j h_j hj 种不同情况。
对于每一项 x i x_i xi ,都构造一个这样的序列,将这 n 个序列的生成函数相乘,得到一个整式。
这个整式为 ( ∑ i = 1 ∞ x i ) (\sum_{i = 1}^{\infty}x^i) (∑i=1∞xi) ( ∑ i = 1 ∞ x i ) (\sum_{i = 1}^{\infty}x^i) (∑i=1∞xi) ( ∑ i = 1 ∞ x i ) (\sum_{i = 1}^{\infty}x^i) (∑i=1∞xi)… ( ∑ i = 1 ∞ x i ) (\sum_{i = 1}^{\infty}x^i) (∑i=1∞xi)
在这个式子中,第 i 个因式每一项的次数代表了 x i x_i xi 的取值。
从而,可以得到 x 1 + x 2 + x 3 + . . . + x n = k x_1+x_2+x_3+...+x_n = k x1+x2+x3+...+xn=k的解的个数为上述整式的 k 次项的系数。
考虑化简上面的整式。
先把 x 提出来,得到: x n ( ∑ i = 0 ∞ x i ) n x^n(\sum_{i = 0}^{\infty}x^i)^n xn(∑i=0∞xi)n
由(一)中的 (6)式得到
原式 = x n ( 1 1 − x ) n x^n(\dfrac{1}{1-x})^n xn(1−x1)n = x n ( 1 − x ) − n x^n({1-x})^{-n} xn(1−x)−n
由(一)中的(4)式得到
原式 = x n x^n xn ∑ i = 0 ∞ C n + i − 1 i x i {\sum_{i = 0}^\infty C_{n+i-1}^{i} x^{i}} ∑i=0∞Cn+i−1ixi
我们现在要求的是该式中的 k 次项系数,即求式子 ∑ i = 0 ∞ C a i x i {\sum_{i = 0}^\infty C_a^i x^{i}} ∑i=0∞Caixi 的 k-n 次项系数 , 为 C k − 1 k − n = C k − 1 n − 1 C_{k-1}^{k-n} = C_{k-1}^{n-1} Ck−1k−n=Ck−1n−1
生成函数是一种解决组合数学问题的有效的手段,它将一个组合问题代数化,最终求得结果。
再来看一道例题:
求只用数码 1 , 1 , 2 , 2 , 3 , 4 1,1,2,2,3,4 1,1,2,2,3,4组成的不同的四位数有多少个。
用组合的方法求解是直接分类讨论。
下面简要介绍如何使用生成函数解决这个问题:
考虑式子 24 ∗ ( x 2 / 2 + x + 1 ) 2 ( x + 1 ) 2 24*(x^2/2+x+1)^2(x+1)^2 24∗(x2/2+x+1)2(x+1)2
四次项系数即为所求。
其中 24 指的是将四位数中的四个数码视为不同的数,从而产生的不同的四位数的个数, 即 4 ! 4! 4!。
假设我们使用这种算法计算数的总个数,会发现有些数算重了。
比如说 1123 1123 1123 这样的一个数,因为在这个算法中第四位的 1 和第三位的 1 被看成两个不同的数码,从而交换这两位,产生的还是原来的 1123 1123 1123,但是被认为是另一个不同的数。
从而我们有一个结论: 若有 k 个数码重复出现了两次,则这样的一个数被多算了 2 k 2^k 2k 次。
(实际上,这种生成函数有个名字,叫做指数生成函数,上面放的这个问题也有个名字,叫做多重集的排列)
于是在生成函数的因式 ( x 2 / 2 + x + 1 ) (x^2/2+x+1) (x2/2+x+1) 中,二次项的系数是 1/2。
总结:
生成函数是一种解决数学问题的有效手段,它将问题代数化,转变成求多项式系数的问题,再搭配上二项式定理进行有效化简,问题就得以迎刃而解。
(本文作者: cjy 写这篇文章的目的主要是巩固一下知识)
关于生成函数和二项式定理相关推荐
- bzoj3028 食物 生成函数+广义二项式定理
首先我们有一些函数推收敛式的套路. (这些是知名伪证,结论是对的,但是证明过程是胡扯)比如对于y=1+x+x2y=1+x+x^2y=1+x+x2 ,我们知道xy=x+x2+x3xy=x+x^2+x^3 ...
- BZOj 3208 食物 生成函数+广义二项式定理
曾经搞过几天的生成函数,也没做几道题,后来放弃了,今天讲了生成函数和背包问题的结合,趁着脑子清醒整理一下: 题目描述: 明明这次又要出去旅游了,和上次不同的是,他这次要去宇宙探险! 我们暂且不讨论他 ...
- [BZOJ4001] [TJOI2015] 概率论 [期望计数] [卡特兰数打表 / 生成函数广义二项式定理]
[Link\frak{Link}Link] 预备结论们 卡特兰数 Cn=(2nn)−(2nn±1)C_n={2n\choose n}-{2n\choose n\pm1}Cn=(n2n)−(n±12 ...
- BZOJ2137: submultiple(生成函数,二项式定理)
Description 设函数g(N)表示N的约数个数.现在给出一个数M,求出所有M的约数x的g(x)的K次方和. Input 第一行输入N,K.N表示M由前N小的素数组成.接下来N行,第i+1行有一 ...
- 【UOJ #390】【UNR #3】百鸽笼(指数型生成函数,二项式定理)
题面
- 【集训队作业2018】复读机【指数型生成函数】【单位根反演】【二项式定理】
传送门 单位根反演听着高级,其实没啥技术含量-- 本文是篇几乎没有证明的佛系讲解 单位根反演的式子长这样: 1n∑i=0n−1ωnik=[k∣n]\frac{1}{n}\sum_{i=0}^{n-1} ...
- 生成函数(常见幂级数、广义二项式定理、生成函数的应用)
文章目录 生成函数 引言 定义 有关幂级数的有用事实 形式幂级数 幂级数的和.积 广义二项式定理 常见的生成函数 使用生成函数解决计数问题 不定方程的解的个数 完全背包问题的方案数 有顺序的背包问题的 ...
- BZOJ 3028: 食物 [生成函数 隔板法 | 广义二项式定理]
3028: 食物 Time Limit: 3 Sec Memory Limit: 128 MB Submit: 497 Solved: 331 [Submit][Status][Discuss] ...
- 洛谷P5488 | FFT+生成函数+二项式定理
前言 因为最近在学习生成函数和多项式有关的内容,很多这方面的东西也不是很懂,所以很多地方可能讲得不好或者是不清楚还请读者们见谅. 那么关于这道题呢,它是我前段时间刚学生成函数时见过的题目.当时由于是刚 ...
最新文章
- Linux技巧总结(个人经验版)
- Luogu P1082 同余方程(NOIP 2012) 题解报告
- gevent -1073740791
- php图片上传报502,PHPStrom上传文件报502错误原因,_PHP教程
- SpringBoot_入门-Spring Boot简介
- WEB前端必须掌握的一些算法题
- 序列化和反序列化的概念_序列化的概念
- mysql udp服务器_netty学习:UDP服务器与Spring整合(2)
- android5.1移植记录
- 项目管理学习总结(6)——产品经理常用的工具有哪些?
- 如何安装和配置Tomcat(全网最详)
- think in java 读书笔记 1 ——移位
- 基于simHash的图像检索系统
- 用鼠标获取任意窗口的句柄, 并把它当作干儿子
- 当前音乐推荐系统研究中的挑战和愿景
- 微星主板Ubuntu16.04安装教程
- 破防了,原来这才是机房运维的正确方法
- register int 与 int 的区别
- C语言不使用中间变量交换两个变量的数据
- The destination is read-only