精华内容
下载资源
问答
  • 免费软件,可自动分析C/C++/Java/Python/C#/Objective-C等项目的源代码并生成函数调用关系图,支持源代码定位,可快速查找调用链
  • 自动生成函数调用关系图

    热门讨论 2013-09-06 20:21:17
    自动生成c++函数调用关系图,里面包含了所有要用到的软件,一站式服务; 通过本人亲测的使用总结; 还有使用到的配置文件(c++的),实在不会配置可以直接使用; 改一改配置文件,应该还可以生成c,java,c#语言的调用...
  • 概率生成函数

    千次阅读 2019-05-14 20:50:06
    概率生成函数 随机变量 XXX 的概率生成函数为: F(z)=∑i=0∞P(X=i)zi F(z)=\sum_{i=0}^\infty P(X=i)z^i F(z)=i=0∑∞​P(X=i)zi 均值与方差 E(X)=F′(1) E(X)=F'(1) E(X)=F′(1) V(X)=E(X2)−E(X)2=F′′...

    概率生成函数

    随机变量 X X X 的概率生成函数为:
    F ( z ) = ∑ i = 0 ∞ P ( X = i ) z i F(z)=\sum_{i=0}^\infty P(X=i)z^i F(z)=i=0P(X=i)zi

    均值与方差

    E ( X ) = F ′ ( 1 ) E(X)=F'(1) E(X)=F(1)

    V ( X ) = E ( X 2 ) − E ( X ) 2 = F ′ ′ ( 1 ) + F ′ ( 1 ) − F ′ ( 1 ) 2 V(X)=E(X^2)-E(X)^2 =F''(1)+F'(1)-F'(1)^2 V(X)=E(X2)E(X)2=F(1)+F(1)F(1)2
    Proof:
    E ( X 2 ) = ∑ i = 0 ∞ P ( X = i ) i 2 = ∑ i = 0 ∞ P ( X = i ) i ( i − 1 ) z i − 2 + i z i − 1 = F ′ ′ ( 1 ) + F ′ ( 1 ) E(X^2)=\sum_{i=0}^\infty P(X=i)i^2=\sum_{i=0}^\infty P(X=i)i(i-1)z^{i-2}+iz^{i-1}=F''(1)+F'(1) E(X2)=i=0P(X=i)i2=i=0P(X=i)i(i1)zi2+izi1=F(1)+F(1)

    然后就可以做题了…


    1

    十连测:http://zhengruioi.com/contest/269/problem/637

    期望是一个无穷级数的形式,所以考虑概率生成函数。设第 i 号桶中年份的概率生成函数为 F i ( z ) = ∑ i = 0 ∞ P ( X = i ) z i F_i(z)=\sum_{i=0}^\infty P(X=i)z^i Fi(z)=i=0P(X=i)zi。我们想要求方差,由于 V ( X ) = E ( X 2 ) − E ( X ) 2 V(X)=E(X^2)-E(X)^2 V(X)=E(X2)E(X)2,并且根据题意年份为 i 的酒价值为 i·z^i,因此 E ( X ) E(X) E(X) 就等于 F ′ ( z ) ⋅ z F'(z)·z F(z)z (z 是常数),并且 E ( X 2 ) = ∑ i = 0 ∞ P ( X = i ) i 2 z 2 i = ∑ i = 0 ∞ P ( X = i ) i ( i − 1 ) z 2 i + i z 2 i = F ′ ′ ( z 2 ) z 4 ⋅ F ′ ( z 2 ) ⋅ z 2 E(X^2)=\sum_{i=0}^\infty P(X=i)i^2z^{2i}=\sum_{i=0}^\infty P(X=i)i(i-1)z^{2i}+iz^{2i}=F''(z^2)z^4·F'(z^2)·z^2 E(X2)=i=0P(X=i)i2z2i=i=0P(X=i)i(i1)z2i+iz2i=F(z2)z4F(z2)z2

    那么我们就要求出 F F F。记每一年流出第 i 个桶的酒量为 g,那么有 F i = F i ( 1 − g ) z + ∑ k &lt; i F k ⋅ c k , i ⋅ z F_i=F_i(1-g)z+\sum_{k&lt;i}F_k·c_{k,i}·z Fi=Fi(1g)z+k<iFkck,iz。注意到 1 号桶的生成函数是可以直接求出封闭形式的,那么就可以推到第二个桶,以此类推。而且,我们只需要知道 F n ′ ( z ) , F n ′ ( z 2 ) , F n ′ ′ ( z 2 ) F_n&#x27;(z),F_n&#x27;(z^2),F_n&#x27;&#x27;(z^2) Fn(z),Fn(z2),Fn(z2),因此可以一开始就把 z 带入递推,时刻维护这些值即可。


    附一些求导法则:
    ( u ( x ) v ( x ) ) ′ = u ′ ( x ) v ( x ) + u ( x ) v ′ ( x )   ( u ( x ) v ( x ) ) ′ = u ′ ( x ) v ( x ) − u ( x ) v ′ ( x ) v 2 ( x )   u ( v ( x ) ) ′ = v ( x ) ′ u ′ ( v ( x ) ) (u(x)v(x))&#x27;=u&#x27;(x)v(x)+u(x)v&#x27;(x)\\ ~\\ \left(\frac {u(x)}{v(x)}\right)&#x27;=\frac{u&#x27;(x)v(x)-u(x)v&#x27;(x)}{v^2(x)}\\ ~\\ u(v(x))&#x27;=v(x)&#x27;u&#x27;(v(x)) (u(x)v(x))=u(x)v(x)+u(x)v(x) (v(x)u(x))=v2(x)u(x)v(x)u(x)v(x) u(v(x))=v(x)u(v(x))

    展开全文
  • 生成函数(母函数)——目前最全的讲解

    万次阅读 多人点赞 2018-10-27 20:38:24
    生成函数(母函数) 什么是生成函数:wiki上的介绍 在数学中,某个序列(an)n∈N\large {\displaystyle (a_{n})_{n\in \mathbb {N} }}(an​)n∈N​ 的母函数(又称生成函数,英语:Generating function)是一种形式幂...

    生成函数(母函数)

    什么是生成函数:wiki上的介绍

    在数学中,某个序列 ( a n ) n ∈ N \large {\displaystyle (a_{n})_{n\in \mathbb {N} }} (an)nN母函数(又称生成函数,英语:Generating function)是一种形式幂级数,其每一项的系数可以提供关于这个序列的信息。使用母函数解决问题的方法称为母函数方法

    母函数可分为很多种,包括普通母函数指数母函数L级数贝尔级数狄利克雷级数。对每个序列都可以写出以上每个类型的一个母函数。构造母函数的目的一般是为了解决某个特定的问题,因此选用何种母函数视乎序列本身的特性和问题的类型。

    母函数,又称生成函数,是ACM竞赛中经常使用的一种解题算法,常用来解决组合方面的题目。

    生成函数的定义: g ( x ) = a 0 + a 1 x + a 2 x 2 + a 3 x 3 + . . . \large g(x)=a_0+a_1x+a_2x^2+a_3x^3+... g(x)=a0+a1x+a2x2+a3x3+... g ( x ) \large g(x) g(x)是序列 a 0 , a 1 , a 2 , . . . a_0,a_1,a_2,... a0,a1,a2,...的生成函数。

    小题


    一、

    有1克、2克、3克、4克的砝码各一枚,能称出哪几种重量?每种重量各有几种可能方案?
    

    我们用母函数来解决这个问题

    1个1克砝码可以看成1+x^1,1表示不取,x^1表示取一个,以下同理
    1个2克砝码可以看成1+x^2
    1个3克砝码可以看成1+x^3
    1个4克砝码可以看成1+x^4
    

    那么生成函数就是

    g ( x ) = ( 1 + x 1 ) ( 1 + x 2 ) ( 1 + x 3 ) ( 1 + x 4 ) = 1 + x + x 2 + 2 x 3 + 2 x 4 + 2 x 5 + 2 x 6 + 2 x 7 + x 8 + x 9 + x 10 \large g(x)=(1+x^1)(1+x^2)(1+x^3)(1+x^4)\\=1+x+x^2+2x^3+2x^4+2x^5+2x^6+2x^7+x^8+x^9+x^{10} g(x)=(1+x1)(1+x2)(1+x3)(1+x4)=1+x+x2+2x3+2x4+2x5+2x6+2x7+x8+x9+x10

    这个函数中可以看出重量为3克的方案有两种,重量为7的方案有两种,重量为10的有1种。

    不难发现指数表示重量,系数表示方案数。


    二、

    求用1分、2分、3分的邮票贴出不同数值的方案数:
    大家把这种情况和第一种比较有何区别?第一种每种是一个,而这里每种是无限的。
    

    那么生成函数就是 g ( x ) = ( 1 + x + x 2 + x 3 + . . . ) ( 1 + x 2 + x 4 + x 6 + . . . ) ( 1 + x 3 + x 6 + x 9 + . . . ) \large g(x)=(1+x+x^2+x^3+...)(1+x^2+x^4+x^6+...)(1+x^3+x^6+x^9+...) g(x)=(1+x+x2+x3+...)(1+x2+x4+x6+...)(1+x3+x6+x9+...)

    以展开后的x^4为例,其系数为4,即4拆分成1、2、3之和的拆分方案数为4;

    即 :4=1+1+1+1=1+1+2=1+3=2+2


    三、

    设有n个标志为1,2,…,n的网袋,第i个(i=1,2,…n)网袋里放有ni个球。不同网袋里的球是不同的,而同一网袋里的球则是没有差别的,认为是相同的。询问从中取r个球的方案数。
    

    设生成函数 g ( x ) = ( 1 + x 1 + x 2 + . . . + x n 1 ) ( 1 + x 1 + x 2 + . . . + x n 2 ) . . . \large g(x)=(1+x^1+x^2+...+x^{n1})(1+x^1+x^2+...+x^{n2})... g(x)=(1+x1+x2+...+xn1)(1+x1+x2+...+xn2)...

    最后指数为r的那一项的系数就是方案数。


    总结一下,生成函数大多用来解决有限或无限物体的组合方案。

    给出通用模板,其实就是暴力拆这个函数罢了。

    #include<cstdio>
    using namespace std;
    int N,g[2][125];
    int main(){
    	while(~scanf("%d",&N)){
    		for(int i=0;i<=N;++i) g[1][i]=1,g[0][i]=0;
    		for(int i=2;i<=N;++i){
    			for(int j=0;j<=N;++j)
    			for(int k=0;k<=N-j;k+=i) g[i&1][j+k]+=g[1-(i&1)][j];
    			for(int j=0;j<=N;++j) g[1-(i&1)][j]=0;
    		}
    		printf("%d\n",g[N&1][N]);
    	}
    	return 0;
    }
    

    以上是一些基础,接下来给一道难题(反正我一点也不会,逃):BZOJ4001

    不会也没有关系,我们慢慢来。


    特殊情况

    a = { 1 , 1 , 1 , 1 , . . . } a=\{1,1,1,1,...\} a={1,1,1,1,...} f ( x ) = 1 + x + x 2 + x 3 + . . . = 1 1 − x \large f(x)=1+x+x^2+x^3+...=\frac{1}{1-x} f(x)=1+x+x2+x3+...=1x1

    这又是为什么呢?

    我们发现 f ( x ) \large f(x) f(x)是一个等比数列

    又因为 x ∈ ( − 1 , 1 ) x∈(-1,1) x(1,1)

    所以当 n → ∞ n \to \infty n时, 1 − x n 1 − x \frac{1-x^n}{1-x} 1x1xn中, x n → 0 x^n \to 0 xn0,所以 f ( x ) = 1 + x + x 2 + x 3 + . . . = 1 1 − x \large f(x)=1+x+x^2+x^3+...=\frac{1}{1-x} f(x)=1+x+x2+x3+...=1x1

    同理 f ‘ ( x ) = 1 + 2 x + 3 x 2 + 4 x 3 + . . . = 1 ( 1 − x ) 2 = ( 1 1 − x ) 2 = f 2 ( x ) \large f`(x)=1+2x+3x^2+4x^3+...=\frac{1}{(1-x)^2}=(\frac{1}{1-x})^2=f^2(x) f(x)=1+2x+3x2+4x3+...=(1x)21=(1x1)2=f2(x)

    f ‘ ‘ ( x ) = 1 + 3 x + 6 x 2 + 10 x 3 + 15 x 4 . . . = 1 ( 1 − x ) 3 = f 3 ( x ) \large f``(x)=1+3x+6x^2+10x^3+15x^4...=\frac{1}{(1-x)^3}=f^3(x) f(x)=1+3x+6x2+10x3+15x4...=(1x)31=f3(x)

    推广 1 ( 1 − x ) k = ∑ i ∞ C i + k − 1 k − 1 x i = f k ( x ) \large \frac{1}{(1-x)^k}=\sum_{i}^{\infty} C_{i+k-1}^{k-1}x^i=f^k(x) (1x)k1=iCi+k1k1xi=fk(x)

    用组合数学中的所谓“隔板法”求一下,第 i i i项的系数就是 C i + k − 1 k − 1 C_{i+k-1}^{k-1} Ci+k1k1


    斐波那契通项公式

    下面我们用生成函数求斐波那契数列的通项公式:

    首先 f ( x ) = x + x 2 + 2 x 3 + 3 x 4 + 5 x 5 + . . . \large f(x)=x+x^2+2x^3+3x^4+5x^5+... f(x)=x+x2+2x3+3x4+5x5+...

    f ( x ) f(x) f(x)乘上个 x x x,然后相减

    f ( x ) − x ∗ f ( x ) = ( x + x 2 + 2 x 3 + 3 x 4 + . . . ) − ( x 2 + x 3 + 2 x 4 + 3 x 5 + . . . ) = x + x 3 + x 4 + 2 x 5 + 3 x 6 = x + x 2 f ( x ) \large f(x)-x*f(x)=(x+x^2+2x^3+3x^4+...)-(x^2+x^3+2x^4+3x^5+...)=x+x^3+x^4+2x^5+3x^6=x+x^2f(x) f(x)xf(x)=(x+x2+2x3+3x4+...)(x2+x3+2x4+3x5+...)=x+x3+x4+2x5+3x6=x+x2f(x)

    f ( x ) f(x) f(x) f ( x ) = x 1 − x − x 2 f(x)=\frac{x}{1-x-x^2} f(x)=1xx2x

    然后如何还原成序列呢?

    先因式分解

    x 1 − x − x 2 = x ( 1 − 1 − 5 2 x ) ( 1 − 1 + 5 2 x ) \large \frac{x}{1-x-x^2}=\frac{x}{(1-\frac{1-\sqrt{5}}{2}x)(1-\frac{1+\sqrt{5}}{2}x)} 1xx2x=(1215 x)(121+5 x)x

    用裂项法 1 n ( n + k ) = 1 k ( 1 n − 1 n + k ) \frac{1}{n(n+k)}=\frac{1}{k}(\frac{1}{n}-\frac{1}{n+k}) n(n+k)1=k1(n1n+k1)

    x ( 1 − 1 − 5 2 x ) ( 1 − 1 + 5 2 x ) = 1 ( 1 − 1 − 5 2 x ) ( ( 1 − 1 − 5 2 x + ( − 5 x ) ) x = 1 − 5 ( 1 1 − 1 − 5 2 x − 1 1 − 1 + 5 2 x ) = − 1 5 1 1 − 1 − 5 2 x + 1 5 1 1 − 1 + 5 2 x \large \frac{x}{(1-\frac{1-\sqrt{5}}{2}x)(1-\frac{1+\sqrt{5}}{2}x)}\\ \large=\frac{1}{(1-\frac{1-\sqrt{5}}{2}x)((1-\frac{1-\sqrt{5}}{2}x+(-\sqrt{5}x))}x\\ \large=\frac{1}{-\sqrt{5}}(\frac{1}{1-\frac{1-\sqrt{5}}{2}x}-\frac{1}{1-\frac{1+\sqrt{5}}{2}x})\\ \large=-\frac{1}{\sqrt{5}}\frac{1}{1-\frac{1-\sqrt{5}}{2}x}+\frac{1}{\sqrt{5}}\frac{1}{1-\frac{1+\sqrt{5}}{2}x} (1215 x)(121+5 x)x=(1215 x)((1215 x+(5 x))1x=5 1(1215 x1121+5 x1)=5 11215 x1+5 1121+5 x1

    把他分裂成等比数列的形式。

    a n = − 1 5 ( 1 − 5 2 ) n + 1 5 ( 1 + 5 2 ) n \large a_n=-\frac{1}{\sqrt{5}}(\frac{1-\sqrt{5}}{2})^n+\frac{1}{\sqrt{5}}(\frac{1+\sqrt{5}}{2})^n an=5 1(215 )n+5 1(21+5 )n

    这就是斐波那契数列通项公式。


    终于写完了,接下来就是多刷例题训练了。

    HDU1028

    HDU1085

    洛谷P2000

    BZOJ3028

    展开全文
  • 组合数学之三 —— 生成函数

    万次阅读 多人点赞 2017-12-20 19:02:14
    前言:我觉得生成函数是一个很玄妙的东西 知识铺垫 我们在这里简单的介绍一下几种为人熟知的数列(给出公式及部分证明): 算术数列,其中的每一项比前一项大一个常数q(等差数列) 几何数列,其中的每一项...

    前言:我觉得生成函数是一个很玄妙的东西

    知识铺垫

    我们在这里简单的介绍一下几种为人熟知的数列(给出公式及部分证明):

    算术数列,其中的每一项比前一项大一个常数q(等差数列)
    几何数列,其中的每一项是前一项的常数q倍(等比数列)

    一 . 算术数列

    A n = A 0 + n q A_n=A_0+nq An=A0+nq
    S n = ( n − 1 ) ∗ A 0 + ( q ∗ n ∗ ( n + 1 ) ) 2 S_n=( n-1 ) * A_0+{( q * n *(n+1)) \over 2} Sn=(n1)A0+2(qn(n+1))

    二 . 几何数列

    A n = A 0 ∗ q n A_n=A_0*q^n An=A0qn
    S n = A 0 ∗ q n − 1 q − 1 − − − > ( q ! = 1 ) Sn=A_0*{ q^n-1 \over q-1 } ---> (q!=1) Sn=A0q1qn1>(q!=1)

    三 . 斐波那契数列

    f ( n ) = f ( n − 1 ) + f ( n − 2 ) ( n > = 2 ) f(n)=f(n-1)+f(n-2) (n>=2) f(n)=f(n1)+f(n2)(n>=2)
    f ( 0 ) = 0 , f ( 1 ) = 1 f(0)=0,f(1)=1 f(0)=0f(1)=1
    S n = f ( 0 ) + f ( 1 ) + f ( 2 ) + . . . + f ( n ) = f ( n + 2 ) − 1 S_n=f(0)+f(1)+f(2)+...+f(n)=f(n+2)-1 Sn=f(0)+f(1)+f(2)+...+f(n)=f(n+2)1

    我们简单的用归纳法证明一下:
    S n + 1 S_{n+1} Sn+1
    = f ( 0 ) + f ( 1 ) + f ( 2 ) + . . . + f ( n ) + f ( n + 1 ) =f(0)+f(1)+f(2)+...+f(n)+f(n+1) =f(0)+f(1)+f(2)+...+f(n)+f(n+1)
    = [ f ( 0 ) + f ( 1 ) + f ( 2 ) + . . . + f ( n ) ] + f ( n + 1 ) =[f(0)+f(1)+f(2)+...+f(n)]+f(n+1) =[f(0)+f(1)+f(2)+...+f(n)]+f(n+1)
    = f ( n + 2 ) − 1 + f ( n + 1 ) =f(n+2)-1+f(n+1) =f(n+2)1+f(n+1)
    = f ( n + 3 ) − 1 =f(n+3)-1 =f(n+3)1

    ④ 斐波那契数 f ( n ) f(n) f(n)是偶数当且仅当n能被3整除
    ⑤ 斐波那契数列通项公式:
    这里写图片描述

    ⑥ 在帕斯卡三角形从左上到右下的对角线上的二项式系数的和是斐波那契数列
    这里写图片描述

    生成函数

    简单来说,生成函数是数列的一个副产品:


    h 0 , h 1 , h 2 , . . . , h n , . . . h_0 , h_1 , h_2 , ... , h_n , ... h0,h1,h2,...,hn,...
    是一个无穷数列
    ta的生成函数定义为无穷函数:这里写图片描述

    形式很简单,我们主要通过例题来看一下:

    ∞ 例一

    每一项都是1的无穷数列,ta的生成函数是?

    g ( x ) = 1 + x + x 2 + . . . + x n + . . . . = = 1 / ( 1 − x ) g(x)=1+x+x^2+...+x^n+....==1/(1-x) g(x)=1+x+x2+...+xn+....==1/(1x)

    ∞ 例二

    m m m是正整数,二项式系数
    C ( m , 0 ) , C ( m , 1 ) , C ( m , 2 ) , . . . , C ( m , m ) C(m,0),C(m,1),C(m,2),...,C(m,m) C(m,0)C(m,1)C(m,2)...C(m,m)
    的生成函数是?

    g ( x ) = C ( m , 0 ) + C ( m , 1 ) x + C ( m , 2 ) x 2 + . . . + C ( m , m ) x m g(x)=C(m,0)+C(m,1)x+C(m,2)x^2+...+C(m,m)x^m g(x)=C(m,0)+C(m,1)x+C(m,2)x2+...+C(m,m)xm
    根据二项式定理:这里写图片描述

    g ( x ) = ( x + 1 ) m g(x)=(x+1)^m g(x)=(x+1)m

    注:实际上 m m m为任意实数,都有上式

    ∞ 例三 (重点)

    k k k为整数,并设数列 ( h 0 , h 1 , h 2 , h 3 , . . . , h n , . . . ) (h_0,h_1,h_2,h_3,...,h_n,...) h0,h1,h2,h3,...,hn,...由令hn等于方程 ( e 1 + e 2 + e 3 + . . . + e k = n ) (e_1+e_2+e_3+...+e_k=n) e1+e2+e3+...+ek=n的非负整数解的数目定义?

    (建议多读几遍题)
    首先我们要搞清楚 h n h_n hn到底是什么:
    实际上我们可以将问题看做: n n n个1,把ta们分成k份,每一份中允许不含有任何元素
    这是隔板法的经典问题:
    h n = C ( n + k − 1 , k − 1 ) h_n=C(n+k-1,k-1) hn=C(n+k1,k1)

    那么 h n h_n hn的生成函数就是:
    这里写图片描述
    我们在这里先给出结论:
    这里写图片描述
    于是我们有:
    这里写图片描述

    听说你们想知道 1 ( 1 − x ) n 1 \over (1-x)^n (1x)n1的证明,百度一下
    ( x + y ) n = ∑ k = 0 n C ( n , k ) x k y n − k (x+y)^n=\sum_{k=0}^{n}C(n,k)x^ky^{n-k} (x+y)n=k=0nC(n,k)xkynk
    ( 1 + x ) n = ∑ k = 0 n C ( n , k ) x k (1+x)^n=\sum_{k=0}^{n}C(n,k)x^k (1+x)n=k=0nC(n,k)xk
    考虑到组合数的性质,上式可以改写为
    ( 1 + x ) n = ∑ k = 0 ∞ C ( n , k ) x k (1+x)^n=\sum_{k=0}^{∞}C(n,k)x^k (1+x)n=k=0C(n,k)xk

    如果指数是负数,则有
    ( 1 + x ) − n = ∑ k = 0 ∞ C ( − n , k ) x k = ∑ k = 0 ∞ ( − 1 ) k C ( n + k − 1 , k ) x k (1+x)^{-n}=\sum_{k=0}^{∞}C(-n,k)x^k=\sum_{k=0}^{∞}(-1)^kC(n+k-1,k)x^k (1+x)n=k=0C(n,k)xk=k=0(1)kC(n+k1,k)xk

    我们把 x x x换成 − x -x x
    ( 1 + ( − x ) ) − n = ∑ k = 0 ∞ ( − 1 ) k C ( n + k − 1 , k ) ( − x ) k (1+(-x))^{-n}=\sum_{k=0}^{∞}(-1)^kC(n+k-1,k)(-x)^k (1+(x))n=k=0(1)kC(n+k1,k)(x)k

    = ∑ k = 0 ∞ ( − 1 ) k C ( n + k − 1 , k ) ( − 1 ) k x k = ∑ k = 0 ∞ C ( n + k − 1 , k ) x k =\sum_{k=0}^{∞}(-1)^kC(n+k-1,k)(-1)^kx^k=\sum_{k=0}^{∞}C(n+k-1,k)x^k =k=0(1)kC(n+k1,k)(1)kxk=k=0C(n+k1,k)xk

    ( 1 − x ) − n = ∑ k = 0 ∞ C ( n + k − 1 , k ) x k = ∑ k = 0 ∞ C ( n + k − 1 , n − 1 ) x k (1-x)^{-n}=\sum_{k=0}^{∞}C(n+k-1,k)x^k=\sum_{k=0}^{∞}C(n+k-1,n-1)x^k (1x)n=k=0C(n+k1,k)xk=k=0C(n+k1,n1)xk

    n n n k k k交换一下:
    ( 1 − x ) − k = ∑ n = 0 ∞ C ( k + n − 1 , k − 1 ) x n {(1-x)}^{-k}=\sum_{n=0}^{∞}C(k+n-1,k-1)x^n (1x)k=n=0C(k+n1,k1)xn

    在上面的记法中, x e i x^{e_i} xei是第i个因子的代表项,于是我们由题意得:
    x e 1 ∗ x e 2 ∗ . . . x e k = x n x^{e_1}*x^{e_2}*...x^{e_k}=x^n xe1xe2...xek=xn
    e 1 + e 2 + . . . + e k = n e_1+e_2+...+e_k=n e1+e2+...+ek=n
    这样,此生成函数** x n x^n xn的系数**就是n对应的答案

    ∞ 例四

    什么样的数列的生成函数如下式?
    ( 1 + x + x 2 + x 3 + x 4 + x 5 ) ( 1 + x + x 2 ) ( 1 + x + x 2 + x 3 + x 4 ) (1+x+x^2+x^3+x^4+x^5)(1+x+x^2)(1+x+x^2+x^3+x^4) (1+x+x2+x3+x4+x5)(1+x+x2)(1+x+x2+x3+x4)

    x e 1 ( 0 < = e 1 < = 5 ) , x e 2 ( 0 < = e 2 < = 2 ) , x e 3 ( 0 < = e 3 < = 4 ) x^{e_1}(0<=e_1<=5) , x^{e_2}(0<=e_2<=2) , x^{e_3}(0<=e_3<=4) xe10<=e1<=5,xe20<=e2<=2,xe30<=e3<=4) 分别表示第一个因子,第二个因子,第三个因子的代表项
    假设: e 1 + e 2 + e 3 = n e_1+e_2+e_3=n e1+e2+e3=n
    则: x e 1 ∗ x e 2 ∗ x e 3 = x n x^{e_1} * x^{e_2} * x^{e_3}=x^n xe1xe2xe3=xn

    因此乘积中 x n x^n xn的系数是 e 1 + e 2 + e 3 = n e_1+e_2+e_3=n e1+e2+e3=n整数解的个数 h n h_n hn,其中 0 < = e 1 < = 5 , 0 < = e 2 < = 2 , 0 < = e 3 < = 4 0<=e_1<=5 , 0<=e_2<=2 , 0<=e_3<=4 0<=e1<=5,0<=e2<=2,0<=e3<=4 ,当 n > 5 + 2 + 4 = 11 时 , h n = 0 n>5+2+4=11时,h_n=0 n>5+2+4=11hn=0

    ∞ 例五

    求装有苹果,香蕉,橘子和梨的果篮的数量 h n h_n hn
    其中在每个果篮中苹果数是偶数,香蕉数是5的倍数,橘子最多拿4个,梨要么不拿,要么只能拿一个

    我们要是用组合数学的方法,估计就要光速弃疗了。。。
    于是我们用生成函数的角度去考虑:
    这里写图片描述
    这里写图片描述

    这样我们就使用代数的方法,解决了组合数学问题!

    ∞ 例六

    设{h_n}为方程:{3e_1+4e_2+2e_3+5e_4=n}
    的非负整数解得个数。求 h 0 , h 1 , . . . , h n , . . . h_0,h_1,...,h_n,... h0h1...hn...的生成函数 g ( x ) g(x) g(x)

    我们作如下变量替换:
    f 1 = 3 ∗ e 1 , f 2 = 4 ∗ e 2 , f 3 = 2 ∗ e 3 , f 4 = 5 ∗ e 4 f_1=3*e_1 , f_2=4*e_2 , f_3=2*e_3 , f_4=5*e_4 f1=3e1,f2=4e2,f3=2e3,f4=5e4
    则: f 1 + f 2 + f 3 + f 4 = n f_1+f_2+f_3+f_4=n f1+f2+f3+f4=n
    其中 f 1 f_1 f1是3的倍数, f 2 f_2 f2是4的倍数, f 3 f_3 f3是2的倍数, f 4 f_4 f4是5的倍数
    那我们就可以得到这样的式子:
    这里写图片描述
    这里写图片描述


    我们在这里提出一个定理

    这里写图片描述

    可以评测的例题

    指数生成函数

    之前我们利用下面的单项式的集合为数列(h0 , h1 , h2 , h3 …)定义了生成函数:
    { 1 , x , x 2 , x 3 , . . . } \{1,x,x^2,x^3,...\} {1xx2x3...}
    这个生成函数特别适用于某些计数数列,特别是那些涉及二项式系数的数列,这是因为ta有二项式定理的形式
    然而,对于某些计数排列的项的数列,更有效的是考虑下面单项式集合的生成函数:
    { 1 , x , x 2 2 ! , x 3 3 ! , x 4 4 ! , . . . } \{1,x,{x^2 \over 2!},{x^3 \over 3!},{x^4 \over 4!},...\} {1x2!x23!x34!x4...}
    这些单项式出现在泰勒级数(e作为数学常数,是自然对数函数的底数):
    这里写图片描述

    数列 h 0 , h 1 , h 2 , h 3 , h 4 , . . . h_0,h_1,h_2,h_3,h_4,... h0h1h2h3h4...的指数生成函数定义为:
    这里写图片描述

    常用指数生成函数的闭形式

    这里写图片描述

    这里写图片描述

    这就是知识介绍,很简单明白,我们还是看一些例题:

    ∞ 例一

    n n n是正整数,确定下面数列的质数生成函数:
    P ( n , 0 ) , P ( n , 1 ) , P ( n , 2 ) , . . . , P ( n , n ) P(n,0),P(n,1),P(n,2),...,P(n,n) P(n,0)P(n,1)P(n,2)...P(n,n)

    其中 P ( n , k ) P(n,k) P(n,k)表示 n n n元素的 k k k排列数目,因此对于 k = 0 , 1 , . . . , n k=0,1,...,n k=01...n,这个排列的数目是 n ! ( n − k ) ! n! \over (n-k)! (nk)!n!,因此指数生成函数是:

    仔细一看,这 x k x^k xk的系数实际上是 C ( n , k ) C(n,k) C(n,k)
    实际上这个生成函数也恰恰是下面数列的普通生成函数:
    C ( n , 0 ) , C ( n , 1 ) , C ( n , 2 ) , . . . , C ( n , n ) C(n,0),C(n,1),C(n,2),...,C(n,n) C(n,0)C(n,1)C(n,2)...C(n,n)

    ∞ 例二

    如果a是任意一个实数,则数列
    1 , a , a 2 , a 3 , . . . 1,a,a^2,a^3,... 1aa2a3...
    的指数生成函数是:

    这里写图片描述

    这个时候,我们提出一个小问题:
    对于正整数 k , k n k,k^n kkn表示有 k k k种不同类型的对象且每一种对象都有无穷重数的多重集合的 n n n排列数。因此,这个计数数列的指数生成函数就是 e k x e^{kx} ekx


    我们在这里提出一个定理

    S S S是多重集合 { n 1 ∗ a 1 , n 2 ∗ a 2 , n 3 ∗ a 3 , . . . , n k ∗ a k } \{ n_1*a_1,n_2*a_2,n_3*a_3,...,n_k*a_k \} {n1a1n2a2n3a3...nkak}(第 i i i种元素 a i a_i ai n i n_i ni个),其中 n i n_i ni是非负整数
    h n h_n hn S S S n n n排列数,那么数列 ( h 0 , h 1 , h 2 , . . . , h k ) (h_0,h_1,h_2,...,h_k) h0h1h2...hk的指数生成函数由下式给出:

    这里写图片描述

    我们简单的证明一下:

    这里写图片描述
    ( h 0 , h 1 , h 2 , . . . , h n , . . . ) (h_0,h_1,h_2,...,h_n,...) h0h1h2...hn...的指数生成函数
    注意,当 n > n 1 + n 2 + n 3 + . . . + n k n>n_1+n_2+n_3+...+n_k n>n1+n2+n3+...+nk h n = 0 h_n=0 hn=0,所以 g ( x ) g(x) g(x)是有限和

    我们把①式展开,对于一个单项式得到的应该是下面的形式:
    这里写图片描述

    其中: 0 < = m 1 < = n 1 , 0 < = m 2 < = n 2 , 0 < = m 3 < = n 3 , . . . , 0 < = m k < = n k 0<=m_1<=n_1,0<=m_2<=n_2,0<=m_3<=n_3,...,0<=m_k<=n_k 0<=m1<=n10<=m2<=n20<=m3<=n3...0<=mk<=nk
    n = m 1 + m 2 + . . . + m k n=m_1+m_2+...+m_k n=m1+m2+...+mk,于是上式化为:
    这里写图片描述

    因此在①式 x n n ! x^n \over n! n!xn的系数就是这个玩意。。。
    这里写图片描述

    其中的求和就是对所有满足下面条件的 m 1 , m 2 , m 3 , . . . , m k m_1,m_2,m_3,...,m_k m1m2m3...mk的求和
    0 < = m 1 < = n 1 , 0 < = m 2 < = n 2 , 0 < = m 3 < = n 3 , 0 < = m k < = n k 0<=m_1<=n_1,0<=m_2<=n_2,0<=m_3<=n_3,0<=m_k<=n_k 0<=m1<=n10<=m2<=n20<=m3<=n30<=mk<=nk
    m 1 + m 2 + m 3 + . . . + m k = n m_1+m_2+m_3+...+m_k=n m1+m2+m3+...+mk=n
    对于确定的 m 1 , m 2 , m 3 , . . . , m k m_1,m_2,m_3,...,m_k m1m2m3...mk S S S的组合 { m 1 ∗ a 1 , m 2 ∗ a 2 , m 3 ∗ a 3 , . . . , m k ∗ a k } \{m_1*a_1,m_2*a_2,m_3*a_3,...,m_k*a_k\} {m1a1m2a2m3a3...mkak}的n排列数就是:
    这里写图片描述

    显然对于上式的求和,就是原问题的解
    原式得证


    ∞ 例三

    h n h_n hn表示由数字1,2,3构造的n位数的个数,其中1的个数是偶数,2的个数至少是3,而3的个数至少是4
    确定最终的数列 ( h 0 , h 1 , h 2 , . . . , h n , . . . . ) (h_0,h_1,h_2,...,h_n,....) h0h1h2...hn....的指数生成函数

    h i ( x ) h_i(x) hi(x)表示对应因子的指数生成函数:
    这里写图片描述

    ∞ 例四

    用红,白,蓝三种颜色给1*n的棋盘着色,要求红色的方格数是偶数,确定给这个棋盘着色的方法数

    h n h_n hn表示这样的着色数,其中我们定义 h 0 = 1 h_0=1 h0=1
    h n h_n hn等于有3种颜色(红,白,蓝)的多重集合的n排列数,其中每一种颜色的重数是无穷
    且要求红色出现的次数是偶数
    我们能过得到一个生成函数(参见上文的定理):
    这里写图片描述

    ∞ 例五

    确定满足下面条件的n位数的个数hn:每个数字都是奇数且数字1和数字3出现偶数次?

    h 0 = 1 h_0=1 h0=1,数 h n h_n hn等于多重集合 { ∞1,∞3,∞5,∞7,∞*9 }的n排列中1,3出现偶数次的n排列个数
    我们可以得到生成函数:
    这里写图片描述

    ∞ 例六

    确定用红,黄,蓝三色给 1 ∗ n 1*n 1n棋盘着色中,要求红格数是偶数,且至少有一个蓝格的着色方法数

    可以评测的例题

    展开全文
  • 生成函数和特征函数

    千次阅读 2018-05-25 17:44:17
    生成函数 生成函数我理解是一种为了方便求解特定的某些问题所可以套用的模型。例如我们要求解骰子取值的期望、方差、或是两个骰子点数和的概率等等这些问题,可以用同一个生成函数解决。常见的生成函数如这里所示。...

    生成函数

    生成函数我理解是一种为了方便求解特定的某些问题所可以套用的模型。例如我们要求解骰子取值的期望、方差、或是两个骰子点数和的概率等等这些问题,可以用同一个生成函数解决。常见的生成函数如这里所示。
    概率论中常常用到矩母函数或叫动差生成函数(moment generating function,MGF)

    特征函数

    特征函数

    展开全文
  • 一些常见数列的生成函数推导

    千次阅读 2016-11-14 23:07:07
    曾经有人问过我:“斐波那契数列的生成函数长啥样?” 。。。所以这东西我还是写一发吧 它有什么用?它没啥用。。。1.齐次线性递推数列定义:给定常数k,a1,a2,...,ak,h0,h1,...,hk−1k,a_1,a_2,...,a_k,h_0,h_1,.....
  • 矩母函数和生成函数

    千次阅读 2018-04-12 09:28:04
    关于矩母函数和生成函数,今天来说道说道。系本人自身学习理解,不对之处,还望各位看官海涵。 首先,这是两个名字,二者不是一个东西,这是首先需要搞清楚的;但是二者的定义却有着相同的目的即:求若干独立随机...
  • 超级简单清晰的生成函数入门教程《生成函数从入门到升天(一)》生成函数全家桶
  • MATLAB m 序列生成函数 & 相关函数

    千次阅读 2020-03-16 21:24:03
    PN 序列生成函数 function x = PNseq(p) %Linear shift register for generating PN sequence of polynomial p N = length(p) - 1; %not include the location 0 p = fliplr(p); X = [1 zeros(1...
  • PyCharm 不能自动生成函数注释

    千次阅读 2020-07-01 23:52:55
    另外,PyCharm在定义函数之后,可以自动生成包括参数和返回值在内的注释,具体使用方法为1: 函数定义后,另起一行,输入三个引号(单引号和双引号均可),后回车。 def f(b,c): ''' 结果为: def a(b,c): '''...
  • 使用Doxygen+Graphviz+HtmlHelp 生成函数调用关系图 在写这篇博客之前,首先感谢一下另外一篇博主的文章,Windows平台下Doxygen+GraphViz+HtmlHelp自动生成函数调用关系图。 附上原文链接:...
  • VS2017 生成函数注释

    千次阅读 2017-08-21 11:28:45
    我在写程序时,很希望看到自己写的对函数(方法)的注释,但往往总是看不到。 今天找了一下,发现这样可以: 在函数上方写下这样的注释即可:/* * Comments:初始化List * Param hWnd : 控件 hWnd * Param ...
  • 解决Pycharm不能自动生成函数注释

    千次阅读 2020-10-11 22:42:32
    PyCharm在定义函数之后,可以自动生成包括参数和返回值在内的注释,具体使用方法为: 函数定义后,另起一行,输入三对引号(单引号和双引号均可),后回车def f(b,c): ''' 输出结果为def a(b,c): '...
  • 利用数列对应的生成函数求解数列的通项式 参考资料: 《数学女孩》 ----结城浩
  • JS动态生成函数

    千次阅读 2016-11-30 19:13:27
    用 Function 类直接创建函数的语法如下: var function_name = new function(arg1, arg2, ..., argN, function_body) 在上面的形式中,每个 arg 都是一个参数,最后一个参数是函数主体(要执行的代码)。这些...
  • Android Studio生成函数注释

    千次阅读 2017-09-28 10:50:45
    1、函数名上输入 ---> /**,然后回车,即自动生成基本注释(参数,返回等) ...---> 鼠标停留在函数体内,按下设置的快捷键即可生成基本注释 快捷键设置方法:在"Fix doc comment"上右键进行快捷键设置。
  • 除了《静态分析C语言生成函数调用关系的利器——calltree》一文中介绍的calltree,我们还可以借助cflow辅助我们阅读理解代码。(转载请指明出于breaksoftware的csdn博客)cflow的说明和安装 cflow是一款静态分析...
  • java随机数生成函数

    千次阅读 2017-07-23 11:58:44
    首先加载相应的包,相当于c++中的头文件 1、import java.util.Random; 然后定义一个对象r 2、Random r=new Random(); 3、nextInt(x)方法用与获取 0-x 之间的整数数,不包括x。...如果要获取指定范
  • 【转】MATLAB各种矩阵生成函数

    千次阅读 2019-04-08 01:46:00
    转自: MATLAB矩阵生成 转载于:https://www.cnblogs.com/yhjd/p/10668317.html
  • MATLAB中常用的几种随机数生成函数

    万次阅读 2016-11-16 15:43:04
    1:rand函数的用法 命令:rand(N),rand(M,N)等 对于rand(N),通过help rand得到的解释是:R = rand(N) returns an N-by-N matrix containing pseudorandom values drawn from the standard uniform distribution ...
  • 起初在VS中手动查看OpenCV源码,发现简单的函数能够很快整理出该函数的层次调用关系,但是遇到一些复杂的函数时,一层一层的往下查看一会儿脑袋就大了。并且,在查看源码的过程中,发现很多底层的函数都会被重复调用...
  • C++ 类自动生成函数

    千次阅读 2016-06-08 14:44:54
    每个类只有一个析构函数和一个赋值函数,但可以有多个构造函数(包含一个拷贝 构造函数,其它的称为普通构造函数)。对于任意一个类 A,如果不想编写上述函数, C++编译器将自动为 A 产生四个缺省的函数,如...
  • matlab 噪声(随机数)生成函数

    万次阅读 2018-05-16 10:34:23
     2、 matlab函数randn:产生正态分布的随机数或矩阵的函数 3、Matlab中产生正态分布随机数的函数normrnd 4、Matlab - 产生高斯噪声 5、normrnd和randn的区别噪声,扰动,离群点,本质上就是生成服从某种分布的...
  • 完整的m序列序列生成函数和调用

    千次阅读 2017-10-03 17:25:47
    上午写的m序列的产生方法(点这里),下午我又把调用方法简单化了一下,把所有的代码贴上来,供大家参考。mseq.m生成m序列的主文件,调用的时候直接用生成系数的二进制或者八进制都行。...% 此函数用来生成
  • 如何利用Callgraph生成函数调用图?

    千次阅读 2018-05-06 21:02:31
    Ubuntu版本:ubuntu-gnome-16.04-desktop-amd64,gnome版-----------------------------------------------------------------------1....一个是用于生成 C 函数调用树的 cflow 或者 calltree,下文主要介绍 cf...
  • VS工具使用——代码生成函数关系图

    万次阅读 多人点赞 2016-03-14 16:52:39
    关系依赖图更接近我们画的包图,它是自动生成的框架,方便我们对整个程序中的函数的依赖关系和层于层之间的理解。
  • ABAP 流水号自动生成函数

    千次阅读 2018-09-27 09:28:43
    call function ‘NUMBER_GET_NEXT’ exporting nr_range_nr = ‘01’ object = p_object importing number = p_billcode exceptions interval_not_found = 1 number...
  • MATLAB图像生成函数Plot()总结

    千次阅读 2015-05-05 21:59:36
    生成的图形是以序号为横坐标、数组y的数值为纵坐标画出的折线。   (2)>> x=linspace(0,2*pi,30); % 生成一组线性等距的数值 >> y=sin(x); >> plot(x,y) 生成的图形是上30个点连成的光滑的正弦曲线。 二、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,137,951
精华内容 855,180
关键字:

生成函数