zoukankan      html  css  js  c++  java
  • 普通型生成函数学习笔记

      参考:http://www.matrix67.com/blog/archives/120

     前置

        广义组合数:C(n,m)=n·(n-1)·……·(n-m+1)/m! (n∈R,m∈N)

        广义二项式定理:

        等比数列求和公式:a1+a1·q+a1·q2+a1·q3+……a1·qn=a1(1-qn+1)/(1-q)


        无穷等比数列求和:a1+a1·q+a1·q2+a1·q3+……=a1/(1-q) (q∈(-1,1))

     定义:

        对于数列a0,a1,a2,a3……,定义其生成函数为f(x)=a0+a1·x+a2·x2+a3·x3+……

        如对于数列ai=C(n,i),生成函数为f(x)=(1+x)n

        很多时候是无穷级数。

        其中x没有实际意义,可以取任意值。

        组合数学中用于各种计数问题。用次数表示所选物品个数,系数表示该选择的方案数,多项式相乘可以得到所选物品总数在各种情况下的方案数。

     栗子:

        我们要从苹果、香蕉、橘子和梨中拿一些水果出来,要求苹果只能拿偶数个,香蕉的个数要是5的倍数,橘子最多拿4个,梨要么不拿,要么只能拿一个。问按这样的要求拿n个水果的方案数。

        构造出生成函数。

        苹果:f(x)=1+x2+x4+x6+……=1/(1-x2)

        香蕉:f(x)=1+x5+x10+x15+……=1/(1-x5)

        橘子:f(x)=1+x+x2+x3+x4=(1-x5)/(1-x)

        梨:f(x)=1+x

        第一项1可以看做1·x0,后面每一项都省略了系数1。

        其中苹果和香蕉都是无穷级数(虽然会受到n的限制)。因为x可以任意取值,不妨令x∈(-1,1),那么其收敛,就有了上面的结果。

        将各式相乘,表示在每一类里各选择一种。一堆抵消之后,最终结果是1/(1-x)2

        这个结果看起来没什么意义,于是继续化式子。

        1/(1-x)2=(1-x)-2=C(-2,0)·(-x)0+C(-2,1)·(-x)1+C(-2,2)·(-x)2+C(-2,3)·(-x)3+……

                =1+2x+3x2+4x3……

        稍微验证一下就会发现n次项对应的系数是选n个物品的方案数。

     应用:

        与多项式的各种运算搭配食用风味更佳。

        经常可以用来捣鼓卷积形式的递推式。

        好像也没什么好说的了。

        (怎么感觉生成函数全是权限题啊好不友善啊)

  • 相关阅读:
    图论4-floyd
    。。。
    [LOJ10164]数字游戏
    KMP模板
    无向图割点模板
    tarjan有向图模板
    LCA倍增模板
    P2149 [SDOI2009]Elaxia的路线
    树的直径dp模板
    [暑假集训]Day4 T3 平板涂色
  • 原文地址:https://www.cnblogs.com/Gloid/p/9438683.html
Copyright © 2011-2022 走看看