二项式定理与生成函数

一.二项式定理

二项式定理

∀ \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=0n​Cni​xiyn−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∞​Cai​xiyn−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∞​Cai​yi ( ∣ 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−1i​yi (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−1i​yi (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=0n​ai​xi

生成函数可以用于解决许多组合问题,也能使用生成函数将数列递推公式转化成数列通项公式。

比如下面这个经典的问题:

求方程 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−1i​xi

我们现在要求的是该式中的 k 次项系数,即求式子 ∑ i = 0 ∞ C a i x i {\sum_{i = 0}^\infty C_a^i x^{i}} ∑i=0∞​Cai​xi 的 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 写这篇文章的目的主要是巩固一下知识)

关于生成函数和二项式定理相关推荐

  1. bzoj3028 食物 生成函数+广义二项式定理

    首先我们有一些函数推收敛式的套路. (这些是知名伪证,结论是对的,但是证明过程是胡扯)比如对于y=1+x+x2y=1+x+x^2y=1+x+x2 ,我们知道xy=x+x2+x3xy=x+x^2+x^3 ...

  2. BZOj 3208 食物 生成函数+广义二项式定理

    曾经搞过几天的生成函数,也没做几道题,后来放弃了,今天讲了生成函数和背包问题的结合,趁着脑子清醒整理一下: 题目描述: 明明这次又要出去旅游了,和上次不同的是,他这次要去宇宙探险!  我们暂且不讨论他 ...

  3. [BZOJ4001] [TJOI2015] 概率论 [期望计数] [卡特兰数打表 / 生成函数广义二项式定理]

    [Link\frak{Link}Link] 预备结论们 卡特兰数 Cn=(2nn)−(2nn±1)C_n={2n\choose n}-{2n\choose n\pm1}Cn​=(n2n​)−(n±12 ...

  4. BZOJ2137: submultiple(生成函数,二项式定理)

    Description 设函数g(N)表示N的约数个数.现在给出一个数M,求出所有M的约数x的g(x)的K次方和. Input 第一行输入N,K.N表示M由前N小的素数组成.接下来N行,第i+1行有一 ...

  5. 【UOJ #390】【UNR #3】百鸽笼(指数型生成函数,二项式定理)

    题面

  6. 【集训队作业2018】复读机【指数型生成函数】【单位根反演】【二项式定理】

    传送门 单位根反演听着高级,其实没啥技术含量-- 本文是篇几乎没有证明的佛系讲解 单位根反演的式子长这样: 1n∑i=0n−1ωnik=[k∣n]\frac{1}{n}\sum_{i=0}^{n-1} ...

  7. 生成函数(常见幂级数、广义二项式定理、生成函数的应用)

    文章目录 生成函数 引言 定义 有关幂级数的有用事实 形式幂级数 幂级数的和.积 广义二项式定理 常见的生成函数 使用生成函数解决计数问题 不定方程的解的个数 完全背包问题的方案数 有顺序的背包问题的 ...

  8. BZOJ 3028: 食物 [生成函数 隔板法 | 广义二项式定理]

    3028: 食物 Time Limit: 3 Sec  Memory Limit: 128 MB Submit: 497  Solved: 331 [Submit][Status][Discuss] ...

  9. 洛谷P5488 | FFT+生成函数+二项式定理

    前言 因为最近在学习生成函数和多项式有关的内容,很多这方面的东西也不是很懂,所以很多地方可能讲得不好或者是不清楚还请读者们见谅. 那么关于这道题呢,它是我前段时间刚学生成函数时见过的题目.当时由于是刚 ...

最新文章

  1. Linux技巧总结(个人经验版)
  2. Luogu P1082 同余方程(NOIP 2012) 题解报告
  3. gevent -1073740791
  4. php图片上传报502,PHPStrom上传文件报502错误原因,_PHP教程
  5. SpringBoot_入门-Spring Boot简介
  6. WEB前端必须掌握的一些算法题
  7. 序列化和反序列化的概念_序列化的概念
  8. mysql udp服务器_netty学习:UDP服务器与Spring整合(2)
  9. android5.1移植记录
  10. 项目管理学习总结(6)——产品经理常用的工具有哪些?
  11. 如何安装和配置Tomcat(全网最详)
  12. think in java 读书笔记 1 ——移位
  13. 基于simHash的图像检索系统
  14. 用鼠标获取任意窗口的句柄, 并把它当作干儿子
  15. 当前音乐推荐系统研究中的挑战和愿景
  16. 微星主板Ubuntu16.04安装教程
  17. 破防了,原来这才是机房运维的正确方法
  18. register int 与 int 的区别
  19. C语言不使用中间变量交换两个变量的数据
  20. The destination is read-only

热门文章

  1. 大模型为什么是深度学习的未来?
  2. unity 鼠标放置 ui_ui层次结构以及不常见但至关重要的任务放置在哪里
  3. R语言train函数调参(caret包)
  4. Java基础篇——面向对象编程
  5. Cocos Creator基于热更新的分包方案
  6. DCM+BUFG的使用
  7. 推荐系统和搜索引擎的比较
  8. 发票核验API 分享推荐
  9. Java中com.jcraft.jsch.JSch讲解
  10. Tomcat4.1、5.5、6.0的连接池配置及测试程序