【母函数|生成函数】学习母函数

参考文献(尊重原创):

二项式定理

递归和母函数

母函数(对于初学者的最容易理解的)


例题:

普通母函数:

找单词                   题解

摆花                       题解

指数性母函数:

"红色病毒"问题     题解(暂无) 

 


母函数是什么?

      母函数是求解组合数学中计数问题的重要方法,其效率高,编程规范,容易实现。但是,母函数的思想起源和最早应用确实在概率方面。母函数有两种形式,普通型母函数和指数型母函数

                                                                                                  ——《信息学奥赛之数学一本通》


 

普通型母函数:

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

2、把离散数列间的相互结合关系对应成为幂级数间的运算关系

什么是普通母函数呢,——把组合问题的加法法则和幂级数的的乘幂的相加对应起来,这句话可能一开始难以理解,不过其实学完了之后很容易理解,母函数的思想很简单—就是把离散数列和幂级数一一对应起来,把离散数列间的相互结合关系对应成为幂级数间的运算关系,最后由幂级数形式来确定离散数列的构造。

 


普通型母函数补充知识:

两个基本计数原理:

1、加法原理:

设事件A有n类方式\large A_{1},A_{2},A_{3}\cdots A_{n},每一类方式Ai 中都有mi 中方法,而在Ai , Aj 中任何两种方法都不相同,则完成事件A中的方法共有:

                                        \LARGE {\color{Red} \sum_{i=1}^{n}m_{i}=m_{1}+m_{2}+\cdots +m_{n}}

例子:

以吃饭为例子,我们可以选择不同的主食来进食,我们可以选择面条,米饭,包子,饼等。

但是我们主要选择一种 主食,那么通常都不会选其他的主食(即事件相互独立)。

但是我们每选择一种主食,我们都有不同的选择:

面条有:打卤面,炸酱面,拌面,米线,羊肉汤面,小骨汤面,大骨汤面……

包子有:白菜包子,猪肉包子,牛肉包子,韭菜包子,三鲜包子……

有:烤饼,各类馅饼(青椒、豆腐、头菜、胡萝卜、白菜、猪肉、牛肉)……

…………

所以我们选择主食的选择就是把全部可以选择的主食加起来

如上:选择主食的事件,共有:7+5+8=20种可能


2、乘法原理:

设事件A需要分n个步骤做完\large A_{1},A_{2},A_{3},\cdots,A_{n},每一类方式Ai中都有mi种方法,则完成事件A的方法共有

                                           \LARGE {\color{Red} \prod_{i=1}^{n}m_{i}=m_{1}*m_{2}*m_{3}*\cdots*m_{n}}

例子:

为了构成美好生活的一天,我们吃的选择多了。

早餐有:3种馅饼选择(青椒,头菜,肉)

午餐有:两种面条选择(打卤面,炸酱面)

晚餐有:两种面条选择(打卤面,炸酱面)

请问一天内,有多少种情况构成美好的一天呢?

答案:

ans=3*2*2=12种

(早、中、晚)三个独立的事件,而每个事件有对应的选项,满足乘法原理。


二项式定理:

1、定义:

【母函数|生成函数】学习母函数_第1张图片

2、二项式 (a+b)^n 展开式的特点:

3、两个常用的二项展开式 

4、杨辉三角_二项式展开式系数

【母函数|生成函数】学习母函数_第2张图片

递推关系式:

\LARGE {\color{Red} C_{n}^{m}=C_{n-1}^{m}+C_{n-1}^{m-1}} 

从组合数学的角度来讲:

例如:

\LARGE {\color{Red} C_{5}^{3}=C_{4}^{3}+C_{4}^{2}}

比如我们从5个球(球有序号)里拿3个球的


练习:

高中数学题目:

\large {\color{Blue} (x^2+x+y)^5}展开式中\large {\color{Blue} x^5\cdot y^2}   和  \large {\color{Blue} x^4} 的系数是多少?

解:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1、\large {\color{Blue} x^5\cdot y^2}的系数为:\large {\color{Red} C_{5}^{2}*C_{3}^{1}=30}

2、\large {\color{Blue} x^4}的系数为:\large {\color{Red} C_{5}^{2}*C_{3}^{3}+C_{5}^{1}*C_{4}^{2}*C_{2}^{2}+C_{5}^{4}*C_{1}^{1}=10+5*6+5=45}


 

 有重量为1、2、3(克)砝码各三个,问:

1、如上图,请问从源点到汇点共有多少种情况?

2、可以称出多少种不同重量的物品?

3、若要称出重量为7克的物品,所使用的砝码有多少中本质上的不同的情况?


解:

1、所有情况总共为:\large {\color{Red} \prod_{i=1}^{n}a[i]}

2、3+6+9=18(种)不同重量的物品

3、若要称出7克的物品???????

解法(1)、枚举。

解法(2)、普通型母函数

对于每一种砝码来讲,以它自身取多少个砝码为独立事件。

就是说,完成一次称重,必须从1g,2g,3g砝码中选取。

至于具体从1g砝码里选取多少个,需要看1g砝码有多少个?

 

那么砝码种类之间存在的是乘法关系,而选取砝码个数存在的是加法关系。

 

设a,b,c分别为1g,2g,3g砝码,那么下标代表拿去多少个砝码?

例如:\LARGE {\color{Red} a_{2}} 代表的是:两个重量为1g的砝码。

我们把一次称重的事件设为:W

我们写成编译语言:

\LARGE {\color{Red} W=(a_{0}\|a_{1}\|a_{2}\|a_{3})\&\&(b_{0}\|b_{1}\|b_{2}\|b_{3})\&\&(c_{0}\|c_{1}\|c_{2}\|c_{3})}

转化为命题联结词:

\LARGE {\color{Red} W=(a_{0}\vee a_{1}\vee a_{2}\vee a_{3})\wedge (b_{0}\vee b_{1}\vee b_{2}\vee b_{3})\wedge (c_{0}\vee c_{1}\vee c_{2}\vee c_{3})}

 转化为数字逻辑:

\LARGE {\color{Red} W=(a_{0}+a_{1}+a_{2}+a_{3})*(b_{0}+b_{1}+b_{2}+b_{3})*(c_{0}+c_{1}+c_{2}+c_{3})}

发现:砝码种类之间存在的是乘法关系,而选取砝码个数存在的是加法关系

 

问题来了?请问怎样表示这个\LARGE {\color{Red} a_{0}} ,\LARGE {\color{Red} a_{1}}……等事件呢?

我们看看结果  写成   主析取范式:

 

\LARGE {\color{Red} W=a_{0}b_{0}c_{0}+a_{0}b_{0}c_{1}+a_{0}b_{0}c_{2}\cdots+a_{3}b_{3}c_{3}}

共有64项相加的结果。

那么我们通过怎样的构造这个事件来达到,对于砝码种类里选择是相加关系,对于砝码种类之间是相乘关系呢?

——>用数学的符号表示出来,有没有一种运算,以乘法的形式运算,得到的结果类似加法的关系呢?

 

 

 

 

 

 

 

 

“幂运算”

\LARGE {\color{Red} t^{a}*t^{b}=t^{a+b}}

构造成:幂运算主要是由于

1、在事件内加法原理时,事件保持相互独立。

2、在做乘法运算时明显满足乘法原理的。

 

返回去看结果表达的意思:

某一个事件 :     \LARGE a^{1}b^{2}c^{3}

表示1g砝码拿了1个,2g砝码拿了2个,3g砝码拿了3个的一个事件。

 

 

 

 


 

 

 

 

表示构成 能够称重为14g的一个事件。

 

 

 

 

所以我们需要构造出来

幂形式表示事件:\LARGE \square x^{\square }

 

指数表示:根据实际情况进行构造,其中在例子中表示:能够称重多少g

系数表示:事件的方案数,在例子中表示称重   对应指数的重量的事件

\LARGE {\color{Red} a^{1}b^{2}c^{3}}:含义为:表示1g砝码拿了1个,2g砝码拿了2个,3g砝码拿了3个,能够称重为14g的一个事件。

表示成:\LARGE {\color{Red} 1\cdot x^{1}x^{2*2}x^{3*3}}

 

在例子中构造成普通型母函数:

\large {\color{Red} 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+2x^{2}+3x^{3}+3x^{4}+4x^{5}+5x^{6}+5x^{7}+5x^{8}+6x^{9}+5x^{10}+5x^{11}+5x^{12}+4x^{13}+3x^{14}+3x^{15}+2x^{16}+x^{17}+x^{18} 

 

G(x)=……………………

其中G是generate,生成的意思

母函数=生成函数(Generating function)

 

请问这个G(x)中x有没有意义,请说明原因?

贴上代码 ( 模拟多项式乘法 ) :

#include
using namespace std;
const int N=1e2;
int n,a[N],b[N],c1[N],c2[N],Max_index;
int main()
{
    scanf("%d",&n);
    for(int i=0;i

指数型母函数:

准备知识:泰勒公式、不全相异的全排列。

不全相异的全排列:

例题1:

3个红球,1个白球,问有多少种排列(球无差异)?

枚举:

1、白红红红

2、红白红红

3、红红白红

4、红红红白

例题2:

3个红球,2个白球,问有多少种排列(球无差异)?

分两种情况,白球是分开的,白球是一起的。

\large ans=C_{4}^{2}+C_{4}^{1}=10

例题3:

n个红球,m个白球,问有多少种排列(求无差异)?

\bg_white \large ans=\frac{(n+m)!}{n!\cdot m!}


指数型母函数:

指数型母函数有如下定理来描述:

从多重集合{\color{Red} M=\{ \infty *a_{1},\infty *a_{2},\infty *a_{3},\cdots,\infty *a_{n} \}}中选取k个元素的排列中,若限定元素{\color{Red} a_{i}}出现的次数集合为{\color{Red} M_{i}(1\leq i \leq n)},则该组合数序列的母函数为:

                                                              \LARGE {\color{Red} \prod_{i=1}^{n}(\sum_{m\euro M_{i}}\frac{x^{m}}{m!})}

比较普通型母函数和指数型母函数,可以看出普通性母函数的标志函数为1,x,x^2……,而指数型母函数的标志函数为1,x/1!,x^2/2!,x^3/3!,…….指数性母函数的标志函数的物理意义可以这样理解。对于xj/j!表示在一个方案中某个元素出现了j次,而在不同的位置中j次出现是相同的,所以在计算排列总数时,只应算作一次。由排列组合的知识知道,最后的结构应该除以j!。

另外在指数性母函数的使用过程中,一盘都会用到高等数学里介绍的e^x的Taylor展开式:


例题:设有六个数字,其中三个数字是1,两个数字6,一个数字8,问能有组成多少个四位数?

问题分析:

这实际上求的是S={3x1,2x2,1x3}中取四个的多重集排列数问题,其指数型母函数为:

\LARGE {\color{Red} G_{e}=(1+x+\frac{x^{2}}{2!}+\frac{x^{3}}{3!})*(1+x+\frac{x^{2}}{2!})*(1+x)}

\LARGE {\color{Red} =1+3x+8\frac{x^{2}}{2!}+19\frac{x^{3}}{3!}+38\frac{x^{4}}{4!}+60\frac{x^{5}}{5!}+60\frac{x^{6}}{6!}}

所以,可以组成38个四位数。

设a,b,c为1,6,8.其中下标为取了多少个,能组合成不同位,不同的数字的事件为G。

把事件G用编译语言表达:

\LARGE G=(a_{0}\|a_{1}\|a_{2}\|a_{3})\&\&(b_{0}\|b_{1}\|b_{2})\&\&(c_{0}\|c_{1})

用命题联结词表示:

\LARGE G=(a_{0}\vee a_{1}\vee a_{2}\vee a_{3})\wedge (b_{0}\vee b_{1}\vee b_{2})\wedge (c_{0}\vee c_{1})

转化为数字逻辑语言:

\LARGE G=(a_{0}+ a_{1}+ a_{2}+ a_{3})* (b_{0}+ b_{1}+ b_{2})* (c_{0}+ c_{1})

我们知道需要用到幂级数把事件表示出来,但是这个问题增加了一个排列组合的,

如何构造才能使得两个事件乘积,会得到下一个事件的方案数。

 

后来指数型母函数给出了答案。

它的构造结构为:\LARGE \square \frac{x^{\square}}{\square}

 

指数:根据实际情况有不同的含义,例子中为:多少位数字

系数:对应于指数的情况下的   方案数

分母:  与指数相对应的阶乘


 

 

你可能感兴趣的:(母函数)