组合数学—递推关系与母函数


注:原创不易,转载请务必注明原作者和出处,感谢支持!

一 写在开头

1.1 本文内容

本文内容为《组合数学》课程的第二部分,递推关系与母函数。这部分的内容分解图如下。

二 递推关系的定义与求解

2.1 递推关系的定义

递推关系的隐式定义为对于数列\(\{a_i \vert i \ge 0\}\)和任意自然数\(n\),一个关系到\(a_n\)和某些\(a_i(i < n)\)的方程,称为递推关系,记作:

\[F(a_0, a_1, a_2, ..., a_n) = 0 \]

初始条件

\[a_0 = d_0, a_1 = d_1, ..., a_k = d_k \]

其中初始条件的个数被称为递推关系的阶。

递推关系的显式定义为对于数列\(\{a_i \vert i \ge 0\}\),把\(a_n\)和其前若干项联系起来的等式对所有\(n \ge k\)均成立,称该等式为\(\{a_i\}\)的递推关系。记作

\[a_n = F(a_{n-1}, a_{n-2}, ..., a_{n-k}) \]

2.2 递推关系的建立

递推关系的建立步骤:

  • 第一步:找出第\(n\)项与其前面最近几项的关系
  • 第二步:获得最前面几项的具体值,即初值

递推关系的建立实例

实例1:有一个小孩要爬上有\(n\)个台阶的楼梯,他一步可以爬一个台阶或者两个台阶。这个小孩爬上这\(n\)个台阶楼梯的不同方法的数目记作\(a_n\),则\(a_n\)的递推关系为:

\[a_n = a_{n-1} + a_{n-2} \]

\[a_1 = 1, a_2 = 2 \]

实例2:在信道上传输由\(a, b, c\)三个字母组成的长为\(n\)的字符串,若字符串中有两个\(a\)连续出现,则信道就不能传输,令\(a_n\)表示信道可以传输的长为\(n\)的字符串的个数,求\(a_n\)满足条件的递推关系,则

\[a_n = 2a_{n-1} + 2a_{n-2} \]

\[a_1 = 3, a_2 = 8 \]

实例3:把\(n\)个相同的球放入\(k\)个不同的盒子中,每个盒子中的球不少于2个又不多于4个。其不同的放法的数目记作\(a_{n,k}\),求\(a_{n,k}\)的递推关系。则

\[a_{n, k} = a_{n-2, k-1} + a_{n-3, k-1} + a_{n-4, k-1} \]

\[a_{2,1} = a_{3, 1} = a_{4, 1} = 1 \]

对于\(n = 0\)\(n = 1\)\(n > 4\),有\(a_{n,1} = 0\)

2.3 递推关系的求解

对于\(r\)阶递推关系的一般形式

\[a_n + c_1(n)a_{n-1} + c_2(n)a_{n-2} + ... + c_r(n)a_{n-r} = e(n) \]

其中,\(n \ge r, c_r \ne 0\)

\(e(n) = 0\),则称其为齐次递推关系式
\(e(n) \ne 0\),则称其为非齐次递推关系式
\(c_i(n) = c_i, (i = 1, 2, ..., r)\),则称其为常系数递推关系式

对于常系数齐次递推关系式

\[a_n + c_1a_{n-1} + c_2a_{n-2} + ... + c_ra_{n-r} = 0 \]

其中,\(c_r\)不等于0

其特征方程为:

\[m^r + c_1m^{r-1} + c_2m^{r-2} + ... + c_r = 0 \]

若解得其全部互不相等的特征根为\(m_1, m_2, ..., m_i\),并且其重数分别为\(e_1, e_2, ..., e_i(e_1 + e_2 + ... + e_i = r)\),则递推关系式对应\(m_i\)部分的通解是:

\[H_i(n) = (B_0 + B_1 \cdot n + ... + B_{e_i- 1} \cdot n^{e_i-1})m_i^n \]

从而,该常系数齐次递推关系式为:

\[a_n = H_1(n) + H_2(n) + ... + H_i(n) \]

对于非齐次常系数递推关系式

\[a_n + c_1a_{n-1} + c_2a_{n-2} + ... + c_ra_{n-r} = f(n) \]

其解为对应的其次常系数递推关系式的通解\(\bar{a_n}\)加上该非齐次常系数递推式的特解\(a_n^*\),即:

\[a_n = \bar{a_n} + a_n^* \]

而非齐次递推关系式

\[a_n + c_1a_{n-1} + c_2a_{n-2} + ... + c_ra_{n-r} = f(n) \]

特解的常见形式有:

  • \(f(n) = b\)时,\(a_n^* = An^k\),其中1是k重特征根
  • \(f(n) = b^n\)时,\(a_n^* = An^kb^n\),其中b是k重特征根
  • \(f(n) = n^s\)时,\(a_n^* = n^k(A_sn^s + A_{s-1}n^{s-1} + ... + A_1n + A_0)\),其中1是k重特征根
  • \(f(n) = b^nn^s\)时,\(a_n^* = n^kb^n(A_sn^s + A_{s-1}n^{s-1} + ... + A_1n + A_0)\),其中b是k重特征根

三 母函数的定义和性质

3.1 母函数的定义

对于数列\(a_0, a_1, ..., a_n, ...\)构造形式幂级数

\[G(x) = a_0 + a_1x + ... + a_nx^n + ... = \sum_{n=0}^{\infty}a_nx^n \]

则称函数\(G(x)\)是数列\(a_0, a_1, ..., a_n, ...\)的母函数

3.2 母函数的性质

设数列\(\{a_n\}, \{b_n\}, \{c_n\}\)的母函数分别为

\[A(x) = \sum_{n=0}^{\infty}a_nx^n \]

\[B(x) = \sum_{n=0}^{\infty}b_nx^n \]

\[C(x) = \sum_{n=0}^{\infty}c_nx^n \]

则有
性质1:若

\[b_n = \begin{cases} 0 & n < l\\ a_{n-l} & n \ge l \end{cases} \]


\(B(x) = x^l A(x)\)

性质2:若\(b_n = a_{n+l}\),则

\[B(x) = x^{-l}\left[ A(x) - \sum_{k = 0}^{l-1}a_kx^k \right] \]

性质3:若\(a_n = b_n + c_n\),则

\[A(x) = B(x) + C(x) \]

性质4:若\(b_n = n \cdot a_n\),则\(B(x)= x \cdot A'(x)\)

性质5:若

\[a_n = b_0c_n + b_1c_{n-1} + ... + b_kc_{n-k} + ... + b_nc_0 = \sum_{k=0}^{n}b_kc_{n-k} \]

\[A(x) = B(x) \cdot C(x) \]

3.3 母函数的幂级数展开形式

常用的母函数的幂级数展开式有:

\[\frac{1}{1-x} = 1 + x + x^2 + ... + x^n + ... \]

\[\frac{1-x^{n+1}}{1-x} = 1 + x + x^2 + ... + x^n \]

\[\frac{1}{1-ax} = 1 + ax + a^2x^2 + ... + a^nx^n + ... \]

\[\frac{1}{1-x^r} = 1 + x^r + x^2r + ... + x^{nr} + ... \]

\[\frac{1}{(1-x)^n} = 1 + C(n, 1)x + C(n+1, 2)x^2 + ... + C(n+k-1, k)x^n + ... \]

\[\frac{1}{(1-x)^2} = 1 + 2x + 3x^2 + ... + (n+1)x^n + ... \]

\[\frac{1}{1+x} = 1 - x + x^2 + ... +(-1)^n x^n + ... \]

\[\frac{1}{(1+x)^n} = 1 - C(n, 1)x + C(n+1, 2)x^2 + ... +(-1)^k C(n+k-1, k)x^k + ... \]

\[e^x = 1 + \frac{x}{1!} + \frac{x^2}{2!} + ... + \frac{x^n}{n!} + ... \]

\[e^{-x} = 1 - \frac{x}{1!} + \frac{x^2}{2!} + ... + (-1)^n\frac{x^n}{n!} + ... \]

四 用母函数求解递推关系

用母函数来求解递推关系的步骤如下:

  • 将递推关系式变成母函数方程
  • 求解母函数
  • 将母函数变成幂级数形式

比如,有递推关系\(a_n - 2a_{n-1} = 1, a_0 = 0\),求\(a_n\)。解题过程如下:

\[\begin{equation} \begin{split} a_n - 2a_{n-1} = 1\\ \Rightarrow a_nx^n - 2xa_{n-1}x^{n-1} = x^n\\ \Rightarrow \sum_{n=1}^{\infty}a_nx^n - 2x \sum_{n=1}^{\infty}a_{n-1}x^{n-1} = \sum_{n=1}^{\infty}x^n\\ \Rightarrow (A(x) - a_0) - 2xA(x) = \frac{1}{1-x} - 1\\ \Rightarrow A(x) = \frac{x}{(1-x)(1-2x)}\\ \Rightarrow A(x) = \frac{-1}{1-x} + \frac{1}{1-2x}\\ \end{split} \end{equation} \]

所以,易知解为\(a_n = 2^n - 1\)

五 用母函数求解计数问题

5.1 母函数求解组合数

\(\{M_1 \cdot a_1, M_2 \cdot a_2, ..., M_k \cdot a_k\}\)\(r\)可重组合的母函数为

\[G(x) = (x^0 + x^1 + ... +x^{M_1})(x^0 + x^1 + ... +x^{M_2})...(x^0 + x^1 + ... +x^{M_k}) \]

\(x^r\)前的系数就是所求\(r\)可重组合数

\(M_i = 1\)时,\(\{a_1, a_2, ..., a_k\}\)\(r\)无重组合数的母函数为

\[G(x) = (x^0 + x^1)^k = (1+x)^k = \sum_{r=0}^{k}C(k, r)x^r \]

同样,\(x^r\)前的系数就是所求\(r\)无重组合数

\(M_i = \infty\)时,\(\{\infty \cdot a_1, \infty \cdot a_2, ..., \infty \cdot a_k\}\)\(r\)可重组合数的母函数为

\[G(x) = (x^0 + x^1 + ... + x^n + ...)^k = \frac{1}{(1-x)^k} = \sum_{r=0}^{\infty}C(k+r-1, r)x^r \]

同样,\(x^r\)前的系数就是所求

用母函数求解组合数应用举例。

把4个相同的球放入5个不同的盒子里,要求第一、二、三每盒最多不超过1个,第四、五每盒最多不超过2个,求方法数的母函数

\[G(x) = (1+x)^3 \cdot (1 + x + x^2)^2 \]

展开式中\(x^4\)的系数为所求

5.2 母函数求解排列数

对于序列\(a_0, a_1, ..., a_n, ...\),函数

\[G_e(x) = a_0 + a_1 \frac{x}{1!} + ... + a_n \frac{x^n}{n!} + ... \]

称为序列\(a_0, a_1, ..., a_n, ...\)的指数型母函数。

与上述的使用母函数求解组合数类似,用母函数求解排列数有如下定理:
\(S=\{M_1 \cdot a_1, M_2 \cdot a_2, ......, M_k \cdot a_k\}\)\(h_n\)\(S\)\(n-\)排列数,则序列\(h_0, h_1, ......, h_n, ......\)的指数型母函数\(G_e(x)\)

\[\big(1 + \frac{x}{1!} + ... + \frac{x^{M_1}}{M_1!}\big)\big(1 + \frac{x}{1!} + ... + \frac{x^{M_2}}{M_2!}\big)...\big(1 + \frac{x}{1!} + ... + \frac{x^{M_k}}{M_k!}\big) \]

因此,当\(n=M_1 + M_2 + ... +M_k\)时,则\(x^n\)的系数为全排列数

\[\tbinom{n}{M_1M_2...M_k}\frac{x^n}{n!} \]

六 整数拆分问题

\(n\)个物体全部分配到\(m\)个位置上的问题,根据物体和位置是否有区别可分为:

  • 整数的有序拆分(物体相同,位置不同)
  • 整数的无序拆分(物体相同,位置相同)
  • 集合的有序拆分(物体不同,位置不同)
  • 集合的无序拆分(物体不同,位置相同)

6.1 整数的有序拆分

对于整数的有序拆分,若不允许有空位出现,则拆分数\(C_m(n)\)

\[C_m(n) = \tbinom{n-1}{m-1} \]

若允许出现空位,则拆分数\(B_m(n)\)

\[B_m(n) = \tbinom{n+m-1}{n} = \tbinom{n+m-1}{m-1} \]

6.2 整数的无序拆分

对于整数的无序拆分,若允许有空位,则分配数为下列母函数展开式中\(x^n\)的系数

\[G(x) = \frac{1}{(1-x)(1-x^2)...(1-x^m)} \]

若不允许有空位,则分配数为下列母函数展开式中\(x^n\)的系数

\[G(x) = \frac{x^m}{(1-x)(1-x^2)...(1-x^m)} \]

6.3 集合的有序拆分

对于集合的有序划分,若允许有空位,则分配方案数为\(m^n\)

若不允许有空位,则分配方案数为

\[\sum_{k=0}^n(-1)^k\tbinom{n}{k}(n-k)^m \]

6.4 集合的无序拆分

对于集合的无序划分,若允许有空位存在,则分配方案数为

\[\sum_{i=1}^{min(n,m)}\frac{1}{i!}\sum_{k=0}^i(-1)^k\tbinom{i}{k}(i-k)^n \]

若不允许空位的存在,则分配方案数为

\[\frac{1}{m!}\sum_{k=0}^m(-1)^k\tbinom{m}{k}(m-k)^n \]

posted @ 2019-02-20 20:14  wallace-rice  阅读(2749)  评论(0编辑  收藏  举报