【专题】两种不同的母函数

    母函数又叫生成函数,是很吊的一种函数,半年之前与之有过一次邂逅,现在再次相遇便把握机会总结一下,也希望自己能够更深入的了解他。下面大多数列子和题目都来自互联网!


        在我介绍母函数之前,先推荐一篇我很喜欢的文章:http://www.wutianqi.com/?p=596。我就是看着这片文章弄懂的母函数。


第一种母函数的应用:

生成函数最绝妙的是,某些生成函数可以化简为一个很简单的函数。也就是说,不一定每个生成函数都是用一长串多项式来表示的。比如,这个函数f(n)=1 (n当然是属于自然数的),它的生成函数就应该是g(x)=1+x+x^2+x^3+x^4+...(每一项都是一,即使n=0时也有x^0系数为1,所以有常数项)。再仔细一看,这就是一个有无穷多项的等比数列求和嘛。如果-1<x<1,那么g(x)就等于1/(1-x)了。在研究生成函数时,我们都假设级数收敛,因为生成函数的x没有实际意义,我们可以任意取值。于是,我们就说,f(n)=1的生成函数是g(x)=1/(1-x)。
现在我们引用《组合数学》上暴经典的一个例题。很多书上都会有这类题。
我们要从苹果、香蕉、橘子和梨中拿一些水果出来,要求苹果只能拿偶数个,香蕉的个数要是5的倍数,橘子最多拿4个,梨要么不拿,要么只能拿一个。问按这样的要求拿n个水果的方案数。
结合刚才的k个(1+x+x^2+x^3+x^4+...)相乘,我们也可以算出这个问题的生成函数。
g(x)=(1+x^2+x^4+...)(1+x^5+x^10+..)(1+x+x^2+x^3+x^4)(1+x)

=[1/(1-x^2)]*[1/(1-x^5)]*[(1-x^5)/(1-x)]*(1+x) (前两个分别是公比为2和5的几何级数,
第三个嘛,(1+x+x^2+x^3+x^4)*(1-x)不就是1-x^5了吗)
=1/(1-x)^2 (约分,把一大半都约掉了)
=(1-x)^(-2)=C(1,0)+C(2,1)x+C(3,2)x^2+C(4,3)x^3... (参见刚才对1/(1-x)^k的展开)
=1+2x+3x^2+4x^3+5x^4+....

于是,拿n个水果有n+1种方法。我们利用生成函数,完全使用代数手段得到了答案!

我们最后看一个例子。我们介绍硬币兑换问题:我有1分、2分和5分面值的硬币。请问凑出n分钱有多少种方法。想一下刚才的水果,我们不难得到这个问题的生成函数:g(x)=(1+x+x^2+x^3+...)(1+x^2+x^4+...)(1+x^5+x^10+..)=1/[(1-x)(1-x^2)(1-x^5)]。

现在,我们需要把它变成通项公式。我们的步骤同刚才的步骤完全相同。我们把(1-x)(1-x^2)(1-x^5)展开,得到1-x-x^2+x^3-x^5+x^6+x^7-x^8。我们求出-1+x+x^2-x^3+x^5-x^6-x^7+x^8=0的解,得到了以下8个解:-1,1,1,1,-(-1)^(1/5),(-1)^(2/5),-(-1)^(3/5),(-1)^(4/5)。这个不是我解出来的,我还是用的Mathematica 5.0。不是我不想解,而是我根本不会解这个8次方程。这也是为什么信息学会涉及这些东西的原因:次数稍微一高,只好交给计算机解决了。于是,(1-x)(1-x^2)(1-x^5)=(1+x)(1-x)^3(1+(-1)^(1/5) x)()()() (省略不写了)。注意那个(1-x)^3。由于等根的出现,我们不得不把(1-x)^3所包含的(1-x)和(1-x)^2因子写进一会儿的分母里,不然会导致解不出合适的c来。你可以看到很多虚数。不过没关系,这些虚数同样参与运算,就像刚才的根式一样不会影响到最后结果的有理性。然后,我们像刚才一样求出常数满足1/(1-x)(1-x^2)(1-x^5)=c1/()+c2/(1-x)+c3/(1-x)^2+c4/(1-x)^3...+c8/()。这个解太复杂了,我用Mathematica解了几分钟,打印出了起码几十KB的式子。虽然复杂,但我确实是得到了通项公式。你有兴趣的话可以尝试用Mathematica解决一下1/[(1-x)(1-x^3)] (只有1分和3分的硬币)。解c的值时可以用SolveAlways[]函数。你可以亲眼见到,一个四五行的充满虚数的式子最后总是得到正确的整数答案。

     下面出个题目:

1.有质量为1,2,3的砝码各一枚,问:

(1)可以称出多少种质量不同的东西?

(2)要称出质量为3的物品有几种方案?

2.如果上述砝码都有无数个,那对应的解答过程又是怎样?

第二种母函数的应用:

     如果对上面的“第一型母函数”(暂且这样命名吧),那下面的第二型母函数就不难理解了。

母函数对于组合类型数列的研究很有帮助,而指数型母函数可以很方便的拿来研究排列类型的数列。

  例:考虑n个元素组成的多重集,其中a1重复了n1次,a2重复了n2次……ak重复了nk次,从中取r个排列,求不同的排列数。

  如果根据母函数。取r个数组合,则组合数是:G(x)= (1+x+x^2+x^3)*(1+x+x^2)*(1+x+x^2+x^3)。

  但现在我们要求的是排列数,根据排列和组合的关系,我们可以引入如下公式:

      G(x) =(1+x+x^2/2!+x^3/3!)*(1+x+x^2/2!)*(1+x+x^2/2!+x^3/3!)

  该公式就是对应的指数型母函数。

  那么上面例子的指数型母函数就是:

      G(x) =(1+x^1/1!+x^2/2!+……+x^n1/(n1)!)*(1+x^1/1!+x^2/2!+……+x^n2/(n2)!)*……*(1+x^1/1!+x^2/2!+………+x^nk/(nk!))。

  设有数a0,a1,a2……

  转换以后就是:G(x) = a0 +a1*(x^1)/1! + a2*(x^2)/ 2! + a3*(x^3)/3! + …… ak*(x^k)/k!+……

  因为指数型母函数仍是一个形式幂级数,所以关于它们的加法、乘法、除法等运算还是按照形式幂级数的相应运算来做,不必重新定义.

下面这个列子大家就认真想想吧:

     说,有1,2,3,4这四个数组成了一个五位数,要求1出现的次数不超过两次,但不能不出现;2出现的次数不超过1次;3出现的次数最多为3次,可以不出现;4出现的次数为偶数,求满足上述条件的数的个数。

     答案是:215.

     解答过程是美好的,尽情享受吧......

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值