zoukankan      html  css  js  c++  java
  • 转 母函数

    在数学中,某个序列的母函数(Generating function,又称生成函数)是一种形式幂级数,其每一项的系数可以提供关于这个序列的信息。使用母函数解决问题的方法称为母函数方法

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

     母函数的作用:

    1.“把组合问题的加法法则和幂级数的乘幂对应起来”

    2.“母函数的思想很简单 — 就是把离散数列和幂级数一 一对应起来,把离散数列间的相互结合关系对应成为幂级数间的运算关系,最后由幂级数形式来确定离散数列的构造. 

    刚好(a1 a2)的组合数目就是x2的系数(取x2的数目有多少个)

    这里X的指数(比如X3,3),表示所有元素的三种取值的数目,因为都是1+x形系数都是为1,至于1的含义(就是取与不取1*x0+1*x3);

    所以一下题,邮票可重复取n,如果只取1枚,则就如上面天平问题

    (1+x+x2+x3+,,,+xn)

    (1+x2+x4+x6+,,,+x2n)

    (1+x3+x6+x9+,,,+x3n)


    我们首先来看下这个多项式乘法: 

    由此可以看出:

    1. x的系数是a1,a2,…an的单个组合的全体。

    2. x2的系数是a1,a2,…a2的两个组合的全体。

    ………

    n. xn的系数是a1,a2,….an的n个组合的全体(只有1个)

    母函数的定义

    对于序列a0,a1,a2,…构造一函数:
     
    称函数G(x)是序列a0,a1,a2,…的母函数。 

    第一种:

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

    考虑用母函数来解决这个问题:

    我们假设x表示砝码,x的指数表示砝码的重量,这样:

    1个1克的砝码可以用函数1+x表示,

    1个2克的砝码可以用函数1+x2表示,

    1个3克的砝码可以用函数1+x3表示,

    1个4克的砝码可以用函数1+x4表示,

    上面这四个式子懂吗?

    我们拿1+x2来说,前面已经说过,x表示砝码,x的指数表示重量,即这里就是一个质量为2的砝码,那么前面的1表示什么?1代表重量为2的砝码数量为0个。(理解!)

    不知道大家理解没,我们这里结合前面那句话:

    把组合问题的加法法则和幂级数的乘幂对应起来

     

    1+x2表示了两种情况:1表示质量为2的砝码取0个的情况,x2表示质量为2的砝码取1个的情况。

    这里说下各项系数的意义:

    在x前面的系数a表示相应质量的砝码取a个,而1就表示相应砝码取0个,这里可不能简单的认为相应砝码取0个就该是0*x2(想下为何?结合数学式子)。

     

    所以,前面说的那句话的意义大家可以理解了吧?

    几种砝码的组合可以称重的情况,可以用以上几个函数的乘积表示:

    (1+x)(1+x2)(1+x3)(1+x4)

    =(1+x+x2+x3)(1+x3+x4+x7)

    =1+x+x2+2x3+2x4+2x5+2x6+2x7+x8+x9+x10

    从上面的函数知道:可称出从1克到10克,系数便是方案数。(!!!经典!!!)

    例如右端有2x5 项,即称出5克的方案有2:5=3+2=4+1;同样,6=1+2+3=4+2;10=1+2+3+4。

    故称出6克的方案有2,称出10克的方案有1 

     

    第二种:

    求用1分、2分、3分的邮票贴出不同数值的方案数:

    大家把这种情况和第一种比较有何区别?第一种每种是一个,而这里每种是无限的。

     

    母函数图(4)

     

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

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

     

    这里再引出两个概念"整数拆分"和"拆分数":

    所谓整数拆分即把整数分解成若干整数的和(相当于把n个无区别的球放到n个无标志的盒子,盒子允许空,也允许放多于一个球)。

    整数拆分成若干整数的和,办法不一,不同拆分法的总数叫做拆分数


    转自:http://www.wutianqi.com/?p=596

  • 相关阅读:
    with异常
    内建函数的重写
    布尔测试函数重写
    函数重写
    类中的对象属性管理函数
    类中的迭代器__iter__
    多继承
    多态
    封装
    深入理解Java:类加载机制及反射
  • 原文地址:https://www.cnblogs.com/--ZHIYUAN/p/6102885.html
Copyright © 2011-2022 走看看