设万维读者为首页 广告服务 联系我们 关于万维
简体 繁体 手机版
分类广告
版主:
万维读者网 > 灵机一动 > 帖子
三明治问题的解析方法。。。
送交者: 括号 2011年12月20日18:39:11 于 [灵机一动] 发送悄悄话
原来说过要写个生成函数的科普贴。但发现网上这方面的好贴太多了,再写难免成了狗尾续貂。但三明治这种题既是使用也是学习理解生成函数的很好的例子。所以就题论题引申一下。。。。

三明治的问题可以简单表述为在A,B,C,D,E这5种三明治中选4个(可以有重复)的组合问题。

首先看如下5个一元多项式的乘积展开:

g(x) = (1+Ax+AA*xx+AAA*xxx+....)(1+Bx+BBxx+BBB*xxx+....)*....
   = 1 
   + (A+B+C+D+E)*x 
   + (AA+BB+CC+DD+EE+AB+AC+AD+AE+...)*xx
   + (AAA+BBB+...+ABC)*xxx
   + ....

不难看出,展开前(等式左边)每个多项式x^n项的系数中三明治名称的指数(n)与该种三明治被选出来的个数对应。展开后,x^n项的系数列出了从这5种三明治中选择n个的所有组合。因此,由上面这个多项式的乘积函数g(x),可以生成5种三明治中选n个(n = 0,1,2,3,4,5,6,.....)的所有组合。g(x)就是这个组合问题的所谓生成函数。
比如,三明治问题中n=4(在这5种三明治中选4个),的所有组合就是g(x)展开式中x^4项的系数。

更进一步,三明治问题并不关心具体组合的一一罗列,而只关心n等于某一数值(比如4)时的组合总数。不难看出,在g(x)中令A=B=C=D=E=1,则展开式中x^n的系数就对应了这个所需要的总数。这时,g(x)化简为5个相同等比级数的乘积:

g(x) = (1+x + xx + xxx + x^4+....)^5 = (1/1-x)^5

推而广之,k种三明治选择n个的生成函数就是k个相同等比级数的乘积:

g(x) = (1/1-x)^k

对g(x)求n次导数并让x=0,得到g(x)级数展开式中x^n项的系数Cn满足关系式

Cn*n! = k*(k+1)*(k+2)*....*(k+n-1) = (k + n - 1)!/(k-1)!

从而得到k种三明治选择n个的组合总数:

Cn = (k + n - 1)!/(k-1)!n! = (k + n -1, n)

生成函数将组合问题表示成解析问题,通过解析变换(比如级数展开等)进行研究。。。。
0%(0)
0%(0)
标 题 (必选项):
内 容 (选填项):
实用资讯
回国机票$360起 | 商务舱省$200 | 全球最佳航空公司出炉:海航获五星
海外华人福利!在线看陈建斌《三叉戟》热血归回 豪情筑梦 高清免费看 无地区限制
一周点击热帖 更多>>
一周回复热帖
历史上的今天:回复热帖
2009: 一道经典概率题的三种解法