三、递推关系与母函数,《组合数学(第4版)》卢开澄 卢华明
文章目录
- 一、似函数、非函数
- 1.1 母函数
- 1.2 母函数的简单应用
- 1.3 整数拆分
- 1.4 Ferrers 图像
- 1.5 母函数能做什么
- 1.6 递推关系
- 1.6.1 Hanoi 问题
- 1.6.2 偶数个5怎么算
- 1.7 Fibonacci 序列
- 1.7.1 Fibonacci 的奇妙性质
- 1.7.2 Fibonacci 恒等式
- 1.7.3 Fibonacci 的直接表达式
- 1.7.4 Fibonacci 优选法
- 1.8 线性常系数齐次递推关系
- 二、神奇的序列
- 2.1 Catalan 数
- 2.1.1 认识 Catalan 数
- 2.1.2 Catalan 数的直接表达式
- 2.1.3 Catalan数的其他实例
- 2.2 指数型母函数
- 2.2.1 指数型母函数的应用
- 2.3 错排
- 2.4 Stirling 数
- 2.4.1 第一类Stirling 数
- 2.4.2 第二类Stirling数
一、似函数、非函数
1.1 母函数
母函数是:
-
计数工具
-
不考虑收敛性
-
不考虑实际上的数值
-
形式幂级数(Formal power series)
对于序列C_0, C_1, C_2, … 构造一函数
G ( x ) = C 0 + C 1 x + C 2 x 2 + . . . G(x) = C_0 + C_1x + C_2x^2 + ... G(x)=C0+C1x+C2x2+...
例如 ( 1 + x ) n (1 + x)^n (1+x)n 称为序列 C(n, 0), C(n, 1), …, C(n, n) 的母函数,序列的长度可能是有限的,也可能是无限的。
母函数和计数法则:
例:两个色子掷出n点,有多少种可能?
一个色子的可能点数为:1、2、3、4、5、6
我们用指数来代表点数: ( x + x 2 + x 3 + x 4 + x 5 + x 6 ) (x + x^2 + x^3 + x^4 + x^5 + x^6) (x+x2+x3+x4+x5+x6)
那么两个色子投掷的表示为:
( x + x 2 + x 3 + x 4 + x 5 + x 6 ) × ( x + x 2 + x 3 + x 4 + x 5 + x 6 ) (x + x^2 + x^3 + x^4 + x^5 + x^6)\times (x + x^2 + x^3 + x^4 + x^5 + x^6) (x+x2+x3+x4+x5+x6)×(x+x2+x3+x4+x5+x6)
指数为6 即代表总点数为6,系数就是方案数,我们展开后可得 x 6 x^6 x6 的系数为5,故有 5 种方案
母函数:
- 关注每一个计数的序列
- 每一个计数序列对应的是 x k x^k xk
为什么母函数可以计算前面的色子问题?
乘法法则:
n个计数对象可以划分为i个对象和n-i个对象
加法法则:
n个计数对象所有的划分策略累加
多项式乘法运算使母函数具备了计数的能力
1.2 母函数的简单应用
计数方案
例1
有4枚砝码,分别为1、2、3、4g,问一共能称出多少种重量?
对于某一个重量,它有多少种不同的方案?
对于1g 的砝码,选或不选:1 + x
2g:1 + x^2
以此类推,所有组合的表示为母函数: G ( x ) = ( 1 + x ) ( 1 + x 2 ) ( 1 + x 3 ) ( 1 + x 4 ) = 1 + x + x 2 + 2 x 3 + 2 x 4 + 2 x 5 + 2 x 6 + 2 x 7 + x 8 + x 9 + x 10 G(x) = (1 + x)(1 + x^2)(1 + x^3)(1 + x^4)= 1+x+x^2+2x^3+2x^4+2x^5+2x^6+2x^7+x^8+x^9+x^{10} G(x)=(1+x)(1+x2)(1+x3)(1+x4)=1+x+x2+2x3+2x4+2x5+2x6+2x7+x8+x9+x10
每个幂次代表了方案,幂次的系数代表方案数
例2
若有1、2、4、8、16、32克的砝码各一枚,问能称出哪几种重量?有几种可能方案?
用母函数表示:
每一种重量都只有一种方案。
实际上,1、2、4、8、16、32 分别为 2,21,22,23,24,2^5 可以唯一组合表示出[0, 63] 内的所有整数,因为这组数字线性无关,覆盖了二进制低五位
例3:整数n拆分成1,2,……,m的和,并允许重复,求其母函数。
把式子展开即可得到具体方案
如若其中m至少出现一次,其母函数如何?
上式的组合意义:即整数n拆分成1到m的和的拆分数减去拆分成1到m-1的和的拆分数,即为至少出现一个m的拆分数。
1.3 整数拆分
将一个正整数拆分成若干个正整数之和。
如果考虑各部分之间的顺序,那么称为有序拆分(Composition)
比如 3 = 1 + 2 和 3 = 2 + 1 两个是不等价的有序拆分。
各部分之间不考虑顺序,那么称为无序拆分(Partition)
数字n拆分成r个自然数之和,有多少种不同的拆分方案?

根据隔板法可得:C(n - 1, r - 1)
那么无序拆分呢?
无序拆分方案数 和 线性方程解的个数等价吗?
x1 + x2 + … + xn = b 非负整数解的个数为 C(n + b - 1, b)
显然不等价,3 + 0 + 0 和 0 + 3 + 0 是两组解,却是同一组无序拆分。
有序拆分相当于把 n 个无区别的球放到 r 个有标志的盒子,盒子不允许空着。
无序拆分把一个整数分解成若干整数的和,相当于把 n 个无区别的球放到 r 个无标志的盒子,盒子允许空着,有多少种方法,就意味着整数拆分数有多少。
无序拆分数:将一个正整数 n 拆分成若干正整数的和,数字之间顺序无关并允许重复,其不同的拆分数即 p(n)。
比如,p(3) = 3
非常有趣的是,欧拉并不知道母函数的概念,但当诺地向欧拉写信询问整数拆分数问题时,欧拉直接给出整数拆分数实际上等于:
G ( x ) = ( 1 + x + x 2 + . . . ) ( 1 + x 2 + x 4 + . . . ) . . . ( 1 + x m + x 2 m + . . . ) . . . G(x) = (1+x+x^2+...)(1+x^2+x^4+...)...(1+x^m+x^{2m}+...)... G(x)=(1+x+x2+...)(1+x2+x4+...)...(1+xm+x2m+...)... 中 x n x^n xn 的系数。
这并不难理解,不再解释。
但是多项式乘法复杂度还是比较高的(在古法计算的年代,没有计算机和各种优化算法),而注意力惊人的拉马努金提出神秘猜想,把整数拆分数计算到了p(200)。
1.4 Ferrers 图像

Ferrers 用 n 个格子的摆放方案来表示整数的无序分拆数。
Ferrers 图像要求非递增性:上一层的格子不能比下一层的格子少。
第 i 行的格子数目代表第 i 个数是多少。
Ferrers 图像具有如下性质:
- 每一层至少有一个格子。
- 第一行与第一列互换,第二行于第二列互换,…,绕虚线轴旋转所得的图仍然是 Ferrers 图像。两个 Ferrers 图像称为一对共轭的Ferrers 图像。
结论:整数 n 拆分成最大数为 k 的拆分数,和数 n 拆分成 k 个数的和的拆分数相等。
- 很好理解,任何一个Ferrers 图像经过翻转后仍然是一个Ferrers 图像,我们不难建立起两个集合的1-1映射。
- 最大数是k和变成k个数之和,它们的 Ferrers 图像是一一对应的。
结论:整数 n 拆分成最多不超过 m 个数的和的拆分数,和 n 拆分成最大不超过 m 的拆分数相等。
- 同样可以利用Ferrers 图像证明
结论:整数拆分成互不相同的若干奇数的和的拆分数,和拆分成自共轭的 Ferrers 图像的拆分数相等。
- 自共轭Ferrers图像:翻转后和翻转前相同
如何建立起自共轭 Ferrers 图像和 奇数拆分 之间的1-1 映射关系呢?
对于一个若干奇数的拆分: ( 2 n 1 + 1 ) + ( 2 n 2 + 1 ) + . . . + ( 2 n k + 1 ) (2n_1 + 1) + (2n_2 + 1) + ... + (2n_k + 1) (2n1+1)+(2n2+1)+...+(2nk+1)
而对于一个自共轭图像,第一行和第一列加起来一共有: 2 n 1 + 1 2n_1 + 1 2n1+1 个格子
第二行和第二列加起来一共有: 2 n 2 + 1 2n_2 + 1 2n2+1 个格子
……
所以对于一个自共轭Ferrers 图像总能和一个 奇数拆分对应,一个奇数拆分总能和一个自共轭Ferrers 图像对应。
例如:

1.5 母函数能做什么

我们通过二项式定理得到一系列的 x^k 前面有系数的展开式,从而得到 某个母函数。
我们可以通过部分分式分解,将一个复杂的母函数对应到一个数字序列。
比如
2 − 3 x ( 1 − x ) ( 1 − 2 x ) = 1 1 − x + 1 1 − 2 x = ∑ k = 0 ∞ x k + ∑ k = 0 ∞ 2 k x k = ∑ k = 0 ∞ ( 1 + 2 k ) x k \begin{align} \frac{2-3x}{(1-x)(1-2x)} &= \frac{1}{1-x} + \frac{1}{1-2x} \\ &= \sum_{k=0}^{\infin}x^k + \sum_{k=0}^{\infin}2^kx^k \\ &= \sum_{k=0}^{\infin}(1+2^k)x^k \\ \end{align} (1−x)(1−2x)2−3x=1−x1+1−2x1=k=0∑∞xk+k=0∑∞2kxk=k=0∑∞(1+2k)xk
2 − 3 x ( 1 − x ) ( 1 − 2 x ) 是序列 f ( k ) = 2 k + 1 的母函数 \frac{2-3x}{(1-x)(1-2x)}是序列f(k) = 2^k + 1的母函数 (1−x)(1−2x)2−3x是序列f(k)=2k+1的母函数
我们也知道,2^k + 1 也可以写成一个递推式子:h(k) = 2h(k - 1) + 1
递推关系在计算机界是一类很重要的问题,我们是否能通过母函数来求解递推关系呢?
1.6 递推关系
**递推关系(Recurrence Relation)**即差分方程。
是一种递推地定义一个序列的方程式:序列的每一项目定义为前若干项的函数.
1.6.1 Hanoi 问题
- 大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。
- 大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。
- 在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。
我们设移动 n个盘子的时间复杂度为 h(n)。
学习递归的时候都讲过汉诺塔的策略:
- 将A的上面n - 1 个 盘子借助C移动到B
- 将A的最后一个盘子移动到C
- 将B 剩的n - 1 个 盘子借助A 移动到C
根据策略可以得到递推方程:h(n) = 2h(n - 1) + 1
显然有初值 h(1) = 1
我们写出 h(n) 的母函数:G(x) = h(1)x + h(2)x^x + h(3)x^3 …
然后可以利用错位相减法来求解:
H ( x ) = h ( 1 ) x + h ( 2 ) x 2 + h ( 3 ) x 3 + . . . ① − 2 x H ( x ) = − 2 h ( 1 ) x − 2 h ( 2 ) x 3 + . . . ② ( 1 − 2 x ) H ( x ) = h ( 1 ) x + [ h ( 2 ) − h ( 1 ) ] x 2 + [ h ( 3 ) − 2 h ( 2 ) ] x 3 + . . . ① + ② ( 1 − 2 x ) H ( x ) = x + x 2 + x 3 + . . . = x 1 − x H ( x ) = x ( 1 − 2 x ) ( 1 − x ) \begin{align} & H(x) = h(1)x + h(2)x^2 + h(3)x^3 + ...① \\ & -2xH(x) = -2h(1)x - 2h(2)x^3 + ...②\\ & (1-2x)H(x) = h(1)x + [h(2) - h(1)]x^2 + [h(3) - 2h(2)]x^3 + ... ① + ②\\ & (1-2x)H(x) = x + x^2 + x^3+... = \frac{x}{1-x} \\ & H(x) = \frac{x}{(1-2x)(1-x)} \end{align} H(x)=h(1)x+h(2)x2+h(3)x3+...①−2xH(x)=−2h(1)x−2h(2)x3+...②(1−2x)H(x)=h(1)x+[h(2)−h(1)]x2+[h(3)−2h(2)]x3+...①+②(1−2x)H(x)=x+x2+x3+...=1−xxH(x)=(1−2x)(1−x)x
也可以根据递推关系求解:
H ( x ) = h ( 1 ) x + h ( 2 ) x 2 + h ( 3 ) x 3 + . . . H ( x ) − h ( 1 ) x = ( 2 h ( 1 ) + 1 ) x 2 + ( 2 h ( 2 ) + 1 ) x 3 + . . . H ( x ) − h ( 1 ) x = 2 x H ( x ) + x 2 1 − x H ( x ) = x ( 1 − x ) ( 1 − 2 x ) \begin{align} & H(x) = h(1)x + h(2)x^2 + h(3)x^3 + ...\\ & H(x) - h(1)x = (2h(1) + 1)x^2 + (2h(2) + 1)x^3 + ... \\ & H(x) - h(1)x = 2xH(x) + \frac{x^2}{1-x} \\ & H(x) = \frac{x}{(1-x)(1-2x)} \end{align} H(x)=h(1)x+h(2)x2+h(3)x3+...H(x)−h(1)x=(2h(1)+1)x2+(2h(2)+1)x3+...H(x)−h(1)x=2xH(x)+1−xx2H(x)=(1−x)(1−2x)x
现在已知 H ( x ) = ∑ k = 1 ∞ h ( k ) x 2 = x ( 1 − x ) ( 1 − 2 x ) H(x) = \sum_{k=1}^{\infin} h(k)x^2 = \frac{x}{(1-x)(1-2x)} H(x)=∑k=1∞h(k)x2=(1−x)(1−2x)x,如何从母函数得到序列?
上式一定可以化简为: H ( x ) = A 1 − x + B 1 − 2 x H(x) = \frac{A}{1-x} + \frac{B}{1-2x} H(x)=1−xA+1−2xB
我们待定系数法不难算出:
H ( x ) = 1 1 − 2 x − 1 1 − x = ( 1 + 2 x + 2 2 x 2 + . . . ) − ( 1 + x + x 2 + . . . ) = ∑ k = 1 ∞ ( 2 k − 1 ) x k \begin{align} H(x) &= \frac{1}{1-2x} - \frac{1}{1-x}\\ &= (1+2x+2^2x^2+...) - (1+x+x^2+...) \\ &= \sum_{k=1}^{\infin}(2^k-1)x^k \end{align} H(x)=1−2x1−1−x1=(1+2x+22x2+...)−(1+x+x2+...)=k=1∑∞(2k−1)xk
1.6.2 偶数个5怎么算
求 n 位十进制数中出现偶数个5的数的个数。
F1:令 a n a_n an为n位十进制数中出现偶数个5的数的个数, b n b_n bn为n位十进制数中出现奇数个5的数的个数。
不难得出递推:
a n = 9 a n − 1 + b n − 1 b n = 9 b n − 1 + a n − 1 a 1 = 8 , b 1 = 1 a_n = 9a_{n-1} + b_{n - 1} \\ b_n = 9b_{n-1} + a_{n - 1} \\ a_1 = 8, b_1 = 1 an=9an−1+bn−1bn=9bn−1+an−1a1=8,b1=1
联立:
A ( x ) = a 1 + a 2 x + a 3 x 3 + . . . − 9 x A ( x ) = − 9 a 1 x − 9 a 2 x 2 − . . . − x B ( x ) = − b 1 x − b 2 x 2 − . . . ( 1 − 9 x ) A ( x ) − x B ( x ) = a 1 = 8 同理可得 : ( 1 − 9 x ) B ( x ) − x A ( x ) = 1 \begin{align} A(x) &= a_1 + a_2x + a_3x^3 + ... \\ -9xA(x) &= -9a_1x - 9a_2x^2 - ... \\ -xB(x) &= -b_1x - b_2x^2 - ... \\ (1-9x)A(x) - xB(x) &= a_1 = 8 \\ 同理可得:(1-9x)B(x) - xA(x) &= 1 \end{align} A(x)−9xA(x)−xB(x)(1−9x)A(x)−xB(x)同理可得:(1−9x)B(x)−xA(x)=a1+a2x+a3x3+...=−9a1x−9a2x2−...=−b1x−b2x2−...=a1=8=1
A(x) 和 B(x) 的求解方式可以通过克莱姆法则来求:
得到 a k = 7 2 8 k − 1 + 9 2 1 0 k − 1 a_k = \frac{7}{2}8^{k-1} + \frac{9}{2}10^{k - 1} ak=278k−1+2910k−1
F2:
n 位的全体十进制数目有 9 ∗ 1 0 n − 1 9 * 10^{n - 1} 9∗10n−1 个(最高位不为0),设所求数为 a n a_n an, A ( x ) = a 1 x + a 2 x + . . . A(x) = a_1x + a_2x + ... A(x)=a1x+a2x+...
按最后一位是否为5分类:
尾数不为5: 9 ∗ a n − 1 9 * a_{n - 1} 9∗an−1
尾数为5,前n - 1有奇数个5: b n − 1 = 9 ∗ 1 0 n − 2 − a n − 1 b_{n - 1} = 9 *10^{n - 2} - a_{n-1} bn−1=9∗10n−2−an−1
故 a n = 9 a n − 1 + 9 ∗ 1 0 n − 2 − a n − 1 = 8 a n − 1 + 9 ∗ 1 0 n − 2 , a 1 = 8 a_n = 9a_{n-1} + 9*10^{n-2} - a_{n-1} = 8a_{n-1} + 9*10^{n-2}, a_1 = 8 an=9an−1+9∗10n−2−an−1=8an−1+9∗10n−2,a1=8
A ( x ) − a ( x ) = 8 x A ( x ) + 9 x 2 ( 1 + 10 x + 1 0 2 x 2 . . . . . . ) A(x) - a(x) = 8xA(x) + 9x^2(1 + 10x + 10^2x^2......) A(x)−a(x)=8xA(x)+9x2(1+10x+102x2......)
A ( x ) = x ( 8 − 71 x ) ( 1 − 8 x ) ( 1 − 10 x ) = 1 2 ( 7 x 1 − 8 x + 9 x 1 − 10 x ) = 1 2 ∑ k = 1 ∞ ( 7 ∗ 8 k − 1 + 9 ∗ 1 0 k − 1 ) x k A(x) = \frac{x(8-71x)}{(1-8x)(1-10x)} = \frac{1}{2}(\frac{7x}{1-8x}+\frac{9x}{1-10x}) = \frac{1}{2}\sum_{k=1}^{\infin}{(7*8^{k-1} + 9*10^{k-1})x^k} A(x)=(1−8x)(1−10x)x(8−71x)=21(1−8x7x+1−10x9x)=21∑k=1∞(7∗8k−1+9∗10k−1)xk
得到 a k = 7 2 8 k − 1 + 9 2 1 0 k − 1 a_k = \frac{7}{2}8^{k-1} + \frac{9}{2}10^{k - 1} ak=278k−1+2910k−1
1.7 Fibonacci 序列
Fibonacci 递推公式:F(n) = F(n - 1) + F(n - 2),F(1) = F(2) = 1
1.7.1 Fibonacci 的奇妙性质
Fibonacci 与 杨辉三角

杨辉三角每一条斜线的和构成了Fibonacci 数
Fibonacci 与 分支开叶

自然界中,树的枝条数目满足Fibonacci数
Fibonacci 的周期性
- 最后一位数字,每60个数一循环
- 最后两位数字,每300个数一循环;
- 最后三位数字,每1500个数一循环;
- 最后四位数字,每15000个数一循环;
- 最后五位数字,每150000个数一循环;
- ……
Fibonacci 的整除性
- 每第三个数可被2整除
- 每第四个数可被3整除
- 每第五个数可被5整除
- 每第六个数可被8整除
- ……
- 这些除数市身也构成裴波那契数列。
Fibonacci Prime
- 除了n=4之外,所有的Fibonacci primes的序号都是素数。
1.7.2 Fibonacci 恒等式
1、 F 1 2 + F 2 2 + . . . + F n 2 = F n F n + 1 F_1^2 + F_2^2 + ... + F_n^2 = F_nF_{n+1} F12+F22+...+Fn2=FnFn+1
几何证明:

Fibonacci 的平方和可以看作若干个长为Fibonacci数的正方形的拼接,最后会得到一个长为F(n + 1),宽为F(n)的长方形。
数学证明:
F 1 2 = F 2 F 1 F 2 2 = F 2 ( F 3 − F 1 ) = F 2 F 3 − F 2 F 1 F 3 2 = F 3 ( F 4 − F 2 ) = F 3 F 4 − F 2 F 3 . . . . . . F n 2 = F n ( F n + 1 − F n − 1 ) = F n F n + 1 − F n − 1 F n 累加得: F 1 2 + F 2 2 + . . . + F n 2 = F n F n + 1 \begin{align} & F_1^2 = F_2F_1 \\ & F_2^2 = F2(F_3 - F_1) = F_2F_3 - F_2F_1 \\ & F_3^2 = F_3(F_4 - F_2) = F_3F_4 - F_2F_3 \\ & ...... \\ & F_n^2 = F_n(F_{n+1} - F_{n-1}) = F_nF_{n + 1} - F_{n - 1}F_n \\ & 累加得:F_1^2 + F_2^2 + ... + F_n^2 = F_nF_{n+1} \end{align} F12=F2F1F22=F2(F3−F1)=F2F3−F2F1F32=F3(F4−F2)=F3F4−F2F3......Fn2=Fn(Fn+1−Fn−1)=FnFn+1−Fn−1Fn累加得:F12+F22+...+Fn2=FnFn+1
2、 F 1 + F 2 + . . . + F n = F n + 2 − 1 F_1 + F_2 + ... + F_n = F_{n + 2} - 1 F1+F2+...+Fn=Fn+2−1
证明:
F 1 = F 3 − F 2 F 2 = F 4 − F 3 . . . F n − 1 = F n + 1 − F n F n = F n + 2 − F n + 1 累加得: F 1 + F 2 + . . . + F n = F n + 2 − 1 \begin{align} & F_1 = F_3 - F_2 \\ & F_2 = F_4 - F_3 \\ & ... \\ & F_{n-1} = F_{n + 1} - F_n \\ & F_n = F_{n + 2} - F_{n + 1} \\ & 累加得:F_1 + F_2 + ... + F_n = F_{n + 2} - 1 \end{align} F1=F3−F2F2=F4−F3...Fn−1=Fn+1−FnFn=Fn+2−Fn+1累加得:F1+F2+...+Fn=Fn+2−1
3、 F 1 + F 3 + F 5 + . . . + F 2 n − 1 = F 2 n F_1 + F_3 + F_5 + ... + F_{2n - 1} = F_{2n} F1+F3+F5+...+F2n−1=F2n
证明:
F 1 = F 2 F 3 = F 4 − F 2 F 5 = F 6 − F 4 . . . F 2 n − 1 = F 2 n − F 2 n − 2 累加得: F 1 + F 3 + F 5 + . . . + F 2 n − 1 = F 2 n \begin{align} & F_1 = F_2 \\ & F_3 = F_4 - F_2 \\ & F_5 = F_6 - F_4 \\ & ... \\ & F_{2n - 1} = F_{2n} - F_{2n - 2} \\ & 累加得:F_1 + F_3 + F_5 + ... + F_{2n - 1} = F_{2n} \end{align} F1=F2F3=F4−F2F5=F6−F4...F2n−1=F2n−F2n−2累加得:F1+F3+F5+...+F2n−1=F2n
1.7.3 Fibonacci 的直接表达式
G ( x ) = F 1 x + F 2 x 2 + . . . G ( x ) − x − x 2 = x ( G ( x ) − x ) + x 2 G ( x ) G ( x ) = x 1 − x − x 2 = x ( 1 − 1 − 5 2 x ) ( 1 + 1 + 5 2 x ) = A 1 − 1 + 5 2 x + B 1 − 1 − 5 2 x 求得 A = 1 5 , B = − 1 5 G ( x ) = 1 5 [ 1 1 − 1 + 5 2 x − 1 1 − 1 − 5 2 x ] = 1 5 [ ( α − β ) x + ( α 2 − β 2 ) x 2 + . . . ] \begin{align} & G(x) = F_1x + F_2x^2 + ... \\ & G(x) - x - x^2 = x(G(x) - x) + x^2G(x) \\ & G(x) = \frac{x}{1-x-x^2} \\ &= \frac{x}{(1-\frac{1-\sqrt{5}}{2}x)(1+\frac{1+\sqrt{5}}{2}x)} \\ &=\frac{A}{1-\frac{1+\sqrt{5}}{2}x} + \frac{B}{1 - \frac{1-\sqrt{5}}{2}x} \\ & 求得 A = \frac{1}{\sqrt 5}, B = -\frac{1}{\sqrt5} \\ & G(x) = \frac{1}{\sqrt 5}[\frac{1}{1 - \frac{1+\sqrt 5}{2}x} - \frac{1}{1 - \frac{1-\sqrt 5}{2}x}] \\ &= \frac{1}{\sqrt 5}[(\alpha - \beta)x + (\alpha ^2 - \beta ^2)x^2 + ...] \end{align} G(x)=F1x+F2x2+...G(x)−x−x2=x(G(x)−x)+x2G(x)G(x)=1−x−x2x=(1−21−5x)(1+21+5x)x=1−21+5xA+1−21−5xB求得A=51,B=−51G(x)=51[1−21+5x1−1−21−5x1]=51[(α−β)x+(α2−β2)x2+...]
注:α和β只是省略写法。
最终求得: F n = 1 5 ( ( 1 + 5 2 ) 2 − ( 1 − 5 2 ) 2 ) F_n = \frac{1}{\sqrt 5}((\frac{1+\sqrt 5}{2})^2 - (\frac{1-\sqrt 5}{2})^2) Fn=51((21+5)2−(21−5)2)
我们发现 F n + 1 F n ≈ 1 + 5 2 ≈ 1.618 \frac{F_{n + 1}}{F_n} \approx \frac{1+\sqrt 5}{2} \approx 1.618 FnFn+1≈21+5≈1.618,正好是黄金分割。
1.7.4 Fibonacci 优选法
其实就是Fibonacci 查找。
对于一个单峰函数f(x),设 f(x) 在 x = ε 点取得极大值。要求用若干次试验找到ε点准确到一定的程度。最简单的方法,把 (a, b) 三等分。

在做算法题的时候一般会采用三分查找(二分也可以,不过要处理好细节)。
三分查找每次选取区间的 1 / 3 和 2 / 3 点作为测试点
有人想到可以利用黄金比例来选取测试点,即 每次选取 0.382 和 0.618 测试点。
而Fibonacci 优选法采用Fibonacci 数列来选取测试点。
因为 F(n + 1) / F(n) -> 0.618
假设 当前区间为[0, F(n)](如果实际不够的话,我们可以将区间扩展为某个Fibonacci数)

选取 F(n - 2) 和 F(n - 1) 作为测试点
- 如果 F(n - 2) 处更好,我们舍去[F(n - 1), F(n)]
- 否则,舍去[0, F(n - 2)]
- 如此,不断逼近,可以得出结果。
1.8 线性常系数齐次递推关系
这一部分类似于微分方程。
定义
a n + c 1 a n − 1 + c 2 a n − 2 + . . . + a k a n − k = 0 a 0 = d 0 , a 1 = d 1 , . . . , c k − 1 = d k − 1 \begin{align} & a_n + c_1a_{n-1} + c_2a_{n-2} + ... + a_ka_{n-k} = 0 \\ & a_0 = d_0, a_1 = d_1, ..., c_{k-1} = d_{k-1} \end{align} an+c1an−1+c2an−2+...+akan−k=0a0=d0,a1=d1,...,ck−1=dk−1
若 c 1 , c 2 , . . . , c k , d 0 , d 1 , . . . , d k − 1 c_1, c_2, ..., c_k, d_0, d_1, ..., d_{k-1} c1,c2,...,ck,d0,d1,...,dk−1 都是常数,那么上式被称为 k 阶线性常系数齐次递推关系。
例如,FIbonacci 数{ F n F_n Fn} 满足:
F n − F n − 1 − F n − 2 = 0 , F 1 = F 2 = 1 F_n - F_{n-1} - F_{n-2} = 0, F_1 = F_2 = 1 Fn−Fn−1−Fn−2=0,F1=F2=1
- 线性累加和
- 右端项为0
- 系数是常数
对于线性常系数齐次递推关系,我们可以通过母函数方法,高效求解。
以线性常系数齐次递推关系定义式为例:
设 G(x) 为 { a n a_n an} 的母函数 G ( x ) = a 0 + a 1 x + . . . + a n x n + . . . G(x) = a_0 + a_1x + ... + a_nx^n + ... G(x)=a0+a1x+...+anxn+...
根据定义式得:
x k : a k + c 1 a k − 1 + c 2 a k − 2 + . . . + c k − 1 a 1 + c k a 0 = 0 x k + 1 : a k + 1 + c 1 a k + c 2 a k − 1 + . . . + c k − 1 a 2 + c k a 1 = 0 x k + 2 : a k + 2 + c 1 a k + 1 + c 2 a k + . . . + c k − 1 a 3 + c k a 2 = 0 . . . \begin{align} & x^k: a_k + c_1a_{k-1} + c_2a_{k-2} + ... + c_{k-1}a_1 + c_ka_0 = 0 \\ & x^{k+1}: a_{k+1} + c_1a_{k} + c_2a_{k-1} + ... + c_{k-1}a_2 + c_ka_1 = 0 \\ & x^{k+2}: a_{k+2} + c_1a_{k+1} + c_2a_{k} + ... + c_{k-1}a_3 + c_ka_2 = 0 \\ & ... \end{align} xk:ak+c1ak−1+c2ak−2+...+ck−1a1+cka0=0xk+1:ak+1+c1ak+c2ak−1+...+ck−1a2+cka1=0xk+2:ak+2+c1ak+1+c2ak+...+ck−1a3+cka2=0...
两边分别相加得到:
G ( x ) − ∑ i = 0 k − 1 a i x i + c 1 x ( G ( x ) − ∑ i = 0 k − 2 a i x i ) + . . . + c k x k G ( x ) = 0 G(x) - \sum_{i=0}^{k-1}a_ix^i + c_1x(G(x) - \sum_{i=0}^{k-2}a_ix^i) + ... + c_kx^kG(x) = 0 G(x)−i=0∑k−1aixi+c1x(G(x)−i=0∑k−2aixi)+...+ckxkG(x)=0
化简:
( 1 + c 1 x + c 2 x 2 + . . . + c k x k ) G ( x ) = ∑ j = 0 k − 1 c j x j ∑ i = 0 k − 1 − j a i x i (1 + c_1x + c_2x^2 + ... + c_kx^k)G(x) = \sum_{j=0}^{k-1}c_jx^j\sum_{i=0}^{k-1-j}a_ix^i (1+c1x+c2x2+...+ckxk)G(x)=j=0∑k−1cjxji=0∑k−1−jaixi
其中 定义 c 0 = 1 ,令 P ( x ) = ∑ j = 0 k − 1 c j x j ∑ i = 0 k − 1 − j a i x i , P ( x ) 的次方不超过 k − 1 , 则 c_0 = 1,令 P(x) = \sum_{j=0}^{k-1}c_jx^j\sum_{i=0}^{k-1-j}a_ix^i,P(x) 的次方不超过k - 1, 则 c0=1,令P(x)=∑j=0k−1cjxj∑i=0k−1−jaixi,P(x)的次方不超过k−1,则
G ( x ) = P ( x ) 1 + c 1 x + c 2 x 2 + . . . + c k x k = P ( x ) R ( x ) G(x) = \frac{P(x)}{1+c_1x+c_2x^2+...+c_kx^k} = \frac{P(x)}{R(x)} G(x)=1+c1x+c2x2+...+ckxkP(x)=R(x)P(x)
我们定义特征多项式: C ( x ) = x k + c 1 x k − 1 + . . . + c k − 1 x + c k C(x) = x^k + c_1x^{k-1} + ... + c_{k-1}x + c_k C(x)=xk+c1xk−1+...+ck−1x+ck,C(x) = 0 有 k 个 根
C ( x ) = ( x − α 1 ) k 1 ( x − α 2 ) k 2 . . . ( x − α t ) k t , k 1 + k 2 + . . . + k t = k C(x) = (x - \alpha_1)^{k_1}(x-\alpha_2)^{k_2}...(x-\alpha_t)^{k_t}, k_1+k_2+...+k_t = k C(x)=(x−α1)k1(x−α2)k2...(x−αt)kt,k1+k2+...+kt=k
则 G ( x ) = P ( x ) x k C ( 1 x ) = P ( x ) ( 1 − α 1 x ) k 1 ( 1 − α 2 x ) k 2 . . . ( 1 − α t x ) k t G(x) = \frac{P(x)}{x^kC(\frac{1}{x})} = \frac{P(x)}{(1-\alpha_1x)^{k_1}(1-\alpha_2x)^{k_2}...(1-\alpha_tx)^{k_t}} G(x)=xkC(x1)P(x)=(1−α1x)k1(1−α2x)k2...(1−αtx)ktP(x)
也就是说,线性常系数齐次递推关系都可以化成如上形式,那么我们只需求特征多项式,解特征方程即可。
例1
Fibonacci 数列递推关系
F n = F n − 1 + F n − 2 , F 1 = F 2 = 0 F_n = F_{n - 1} + F_{n - 2}, F_1 = F_2 = 0 Fn=Fn−1+Fn−2,F1=F2=0
特征方程:x^2 - x - 1 = 0
两个根: α = 1 + 5 2 , β = 1 − 5 2 \alpha = \frac{1+\sqrt 5}{2},\beta = \frac{1-\sqrt 5}{2} α=21+5,β=21−5
待定系数 G ( x ) = A 1 − α x + B 1 − β x G(x) = \frac{A}{1 - \alpha x} + \frac{B}{1 - \beta x} G(x)=1−αxA+1−βxB
由 F 0 = A + B = 0 , F 1 = A α + B β = 1 F_0 = A + B = 0, F_1 = A\alpha + B\beta = 1 F0=A+B=0,F1=Aα+Bβ=1得
A = 1 5 , B = − 1 5 A = \frac{1}{\sqrt{5}}, B = -\frac{1}{\sqrt 5} A=51,B=−51
F n = ( α n − β n ) / 5 F_n = (\alpha ^n - \beta ^n) / \sqrt 5 Fn=(αn−βn)/5
例2(多重根的情况)
a n − 4 a n − 1 + 4 a n − 2 = 0 , a 0 = 1 , a 1 = 4 a_n - 4a_{n-1} + 4a_{n-2} = 0, a_0 =1, a_1 = 4 an−4an−1+4an−2=0,a0=1,a1=4
特征方程: x 2 − 4 x + 4 = 0 x^2 - 4x + 4 = 0 x2−4x+4=0
α = β = 2 \alpha = \beta = 2 α=β=2
G(x) = a x + b ( 1 − 2 x ) 2 \frac{ax+b}{(1-2x)^2} (1−2x)2ax+b
a 0 = 1 , a 1 = 4 = > a = 1 , b = 1 a_0 = 1, a_1 = 4 => a = 1,b = 1 a0=1,a1=4=>a=1,b=1
所以 G ( x ) = A ( 1 − 2 x ) 2 = ∑ k = 0 ∞ C ( k + 1 , k ) 2 k x k = ∑ k = 0 ∞ ( k + 1 ) 2 k x k G(x) = \frac{A}{(1-2x)^2} = \sum_{k=0}^{\infin}C(k + 1, k)2^kx^k = \sum_{k=0}^{\infin}(k + 1)2^kx^k G(x)=(1−2x)2A=∑k=0∞C(k+1,k)2kxk=∑k=0∞(k+1)2kxk
a n = ( n + 1 ) 2 n a_n = (n + 1)2^n an=(n+1)2n
例3(复根情况)
a n − a n − 1 + a n − 2 = 0 , a 1 = 1 , a 2 = 0 , a 0 = 1 a_n - a_{n - 1} + a_{n - 2} = 0, a_1 = 1, a_2 = 0, a_0 = 1 an−an−1+an−2=0,a1=1,a2=0,a0=1
特征方程: x 2 − x + 1 = 0 x^2 - x + 1 = 0 x2−x+1=0,根 α = 1 2 ± − 3 2 \alpha = \frac{1}{2} \pm \frac{\sqrt{-3}}{2} α=21±2−3
G ( x ) = A 1 − 1 + − 3 2 x + B 1 − 1 − − 3 2 x G(x) = \frac{A}{1 - \frac{1 + \sqrt{-3}}{2}x} + \frac{B}{1 - \frac{1-\sqrt{-3}}{2}x} G(x)=1−21+−3xA+1−21−−3xB
由 a 0 = A + B = 1 , a 1 = A ( 1 + 3 i 2 ) + B ( 1 − 3 i 2 ) = 1 a_0 = A + B = 1,a_1 = A(\frac{1+\sqrt3i}{2}) + B(\frac{1-\sqrt3i}{2}) = 1 a0=A+B=1,a1=A(21+3i)+B(21−3i)=1
得 A = 1 2 [ 1 − 1 3 i ] A = \frac{1}{2}[1 - \frac{1}{\sqrt3}i] A=21[1−31i]
B = 1 2 [ 1 + 1 3 i ] B = \frac{1}{2}[1 + \frac{1}{\sqrt3}i] B=21[1+31i]
写成欧拉公式形式:
a n = c o s n π 3 + 1 3 s i n n π 3 a_n = cos\frac{n\pi}{3} + \frac{1}{\sqrt 3}sin \frac{n\pi}{3} an=cos3nπ+31sin3nπ
例4
例:平面上有一点P,它是n个域D1,D…,D"的共同交界点,取k种颜色对这n个域进行着色,要求相邻两个域进行着色,要求相邻两个域着的颜色不同。试求着色的方案数。
不难建立递推关系:
设 dp(n) 为 n 个 域 用k种颜色 着色方案数
那么 D1 和 Dn 可以分为两种情况:
D1 和 Dn 颜色相同:dp(n - 2) * k
D1 和 Dn 颜色不同:dp(n - 1) * (k - 2)
那么 dp(n) = dp(n - 2) * k + dp(n - 1) * (k - 2)
初始值:dp(2) = k * (k - 1), dp(3) = k * (k - 1) * (k - 2), dp(1) = 0, dp(0) = k (dp0 和 dp1 是通过 递推方程得到的)
特征方程: x 2 − ( k − 2 ) x − ( k − 1 ) = 0 x^2 - (k - 2)x - (k - 1) = 0 x2−(k−2)x−(k−1)=0
特征根: x 1 = k − 1 , x 2 = − 1 x_1 = k - 1, x_2 = -1 x1=k−1,x2=−1
d p n = A ( k − 1 ) n + B ( − 1 ) n dp_n = A(k - 1)^n + B(-1)^n dpn=A(k−1)n+B(−1)n
解得 A = 1, B = k - 1
那么 d p n = ( k − 1 ) n + ( k − 1 ) ( − 1 ) n , n ≥ 2 dp_n = (k - 1)^n + (k - 1)(-1)^n, n \ge 2 dpn=(k−1)n+(k−1)(−1)n,n≥2
二、神奇的序列
2.1 Catalan 数
2.1.1 认识 Catalan 数
一个栈(无穷大)的进栈序列为1,2,3,…,n有多少个不同的出栈序列?
尝试用递推求解:
定义 f(n) 为 前 n 个元素出栈序列的数目
我们枚举第一次为空的时候已经出栈的元素数目k
那么 f(n) = Σ f(k) * f(n - k),k ∈ [1, n]
n个节点构成的二叉树,共有多少种情形?
同样采用分步递推
定义 f(n) 为 有 n 个节点构成二叉树的数目
枚举左子树节点数目 k
那么 f(n) = Σ f(k) * f(n - k),k ∈ [0, n - 1]
正n边形化分为不重叠的三角形有多少种方法?
其实就是正n 边形的三角剖分数。
我们仍然分步递推

定义 f(n) 为 正n 边形的三角剖分数
设第一次选取 <vn, v1>,三角形左边为 k 边形
那么 f(n) = Σ f(k) * f(n - 1 - k),k ∈ [0, n - 1]
我们发现三个问题有着相同的递推。事实上,上述三个式子都是卡特兰数的递推式。
C(n) = C(0) * C(n - 1) + C(1) * C(n - 2) + … + C(n - 2) * C(1) + C(n - 1) * C(0)
2.1.2 Catalan 数的直接表达式
非降路径问题

从格点(0,0)走到格点(n,n),只能向右或向上走,并且不能越过对角线的路径的条数,就是卡特兰数
如何计算?
不 越过 y = x 等价于 不和 y = x + 1 接触

我们找到和 y = x + 1接触的路径,第一个交叉点后面的路径关于 y = x + 1做对称,那么非法路径的数目相当于 从(0, 0) 出发到达 (n - 1, n + 1)
那么 合法路径的数目为:C(2n, n) - C(2n, n - 1) = 1 n + 1 C ( 2 n , n ) \frac{1}{n + 1}C(2n,n) n+11C(2n,n)
我们尝试母函数求解:
写出卡特兰数 C n = ∑ i = 0 n − 1 C i C n − i − 1 C_n = \sum_{i=0}^{n-1}C_iC_{n-i-1} Cn=∑i=0n−1CiCn−i−1 的母函数
c ( x ) = ∑ n = 0 ∞ C n x n c(x) = \sum_{n=0}^{\infin}C_nx^n c(x)=∑n=0∞Cnxn
c ( x ) 2 = C 0 C 0 + ( C 1 C 0 + C 0 C 1 ) x + ( C 2 C 0 + C 1 C 1 + C 0 C 2 ) x 2 + . . . c(x)^2 = C_0C_0 + (C_1C_0 + C_0C_1)x + (C_2C_0 + C_1C_1 + C_0C_2)x^2 + ... c(x)2=C0C0+(C1C0+C0C1)x+(C2C0+C1C1+C0C2)x2+...
c ( x ) = 1 + x c ( x ) 2 c(x) = 1 + xc(x)^2 c(x)=1+xc(x)2
求解该方程(运用了函数极限和广义二项式定理):

2.1.3 Catalan数的其他实例
-
有2n个人排成一行进入剧场。入场费 5 元。其中只有n个人有一张 5 元钞票,另外 n 人只有 10 元钞票,剧院无其它钞票,问有多少种方法使得只要有 10 元的人买票,售票处就有 5 元的钞票找零?
- 转化为非降路径问题即可
-
Dyck word问题:用Cn表示长度2n的Dyck word 的个数,这里Dyck word是一个有n个X和n个Y组成的字串,且所有的从第一个字符开始的部分字串皆满足X的个数大于等于Y的个数。
- 转化为非降路径问题即可
-
n条线段不相交问题:有n个人围在圆桌参加晚宴,他们两两直接想通过握手相互认识。但是可能影响别人所以他们的手不能有交叉,那么一共有多少种握手的方式?

- 类似于三角剖分的证明
2.2 指数型母函数
二项式定理
( 1 + x ) n = 1 + n x + n ( n − 1 ) 2 x 2 + . . . + n ( n − 1 ) . . . ( n − k + 1 ) k ! x k + . . . (1+x)^n = 1 + nx + \frac{n(n-1)}{2}x^2 + ... + \frac{n(n-1)...(n-k+1)}{k!}x^k + ... (1+x)n=1+nx+2n(n−1)x2+...+k!n(n−1)...(n−k+1)xk+...
所以 C(n, k) 的母函数就是 ( 1 + x ) n (1 + x)^n (1+x)n
不禁思考,我们是否可以将排列数P(n, k) 也嵌入到 ( 1 + x ) n (1 + x)^n (1+x)n 中?
( 1 + x ) n = ∑ k = 0 ∞ C ( n , k ) x k = ∑ k = 0 ∞ C ( n , k ) k ! k ! x k = ∑ k = 0 ∞ P ( n , k ) x k k ! \begin{align} (1+x)^n &= \sum_{k=0}^{\infin}C(n,k)x^k \\ &= \sum_{k=0}^{\infin}\frac{C(n,k)k!}{k!}x^k \\ &= \sum_{k=0}^{\infin}P(n,k)\frac{x^k}{k!} \end{align} (1+x)n=k=0∑∞C(n,k)xk=k=0∑∞k!C(n,k)k!xk=k=0∑∞P(n,k)k!xk
所以,当我们想要用母函数计算排列而非组合数时,应该采用下列的通项,即指数性母函数:
{ 1 , x , x 2 2 ! , . . . , x k k ! } \{1,x,\frac{x^2}{2!},...,\frac{x^k}{k!} \} {1,x,2!x2,...,k!xk}
3个a1,2个a2,3个a3;组成k个数的组合有多少种?
采用 普通母函数 即可计算组合方案数
3个a1,2个a2,3个a3;取4个进行组合,组合的样子?
三个幂级数分别写成x1,x2,x3,相乘后看阶次为4的项的种类
3个a1,2个a2,3个a3;取4个进行排列有多少种?
注意:这不是多重集全排列
我们采用指数型母函数
对于序列a0, a1, a2, …构造一函数:
G ( x ) = a 0 + a 1 x 1 ! + a 2 x 2 2 ! + . . . G(x) = a_0 + a_1\frac{x}{1!} + a_2\frac{x^2}{2!} + ... G(x)=a0+a11!x+a22!x2+...
称函数G(x)是 $a_0, a_1, a_2, … $的指数型母函数。
2.2.1 指数型母函数的应用
计算多重排列
数1出现次数不超过2次,但不能不出现;2出现次数不超过1次;3出现次数可达3次,也可以不出现;4出现次数为偶数
设满足条件的r位数为 a r a_r ar,序列 a 0 , a 1 . … a 10 a_0, a_1.…a_{10} a0,a1.…a10的指数型母函数为
求1,3,5,7,9五个数字组成的n位数的个数, 要求其中3,7出现的次数为偶数,其他1,5,9出现次数不加限制。
2.3 错排
请问n对男女来跳舞,先跳了一曲,下一曲必须换舞伴,请问有多少种不同的换法?
这其实就是经典的欧拉错排问题。
n个有序的元素应有n!个不同的排列,如若一个排列使得所有的元素不在原来的位置上,则称这个排列为错排;有的叫重排
错排的递推关系
123的错排有312,231。这二者可以看作是12错排,3分别与1,2换位而得的。
我们设 n个数 1~n 的错排数目为 D(n)。
那么任取其中一数i,数i分别与其他的n-1个数之一互换,其余n-2个数进行错排,共得 ( n − 1 ) D n − 2 (n-1)D_{n-2} (n−1)Dn−2个错排。
另一部分为 数 i 以外的n-1个数进行错排,然后i与其中每个数互换得 ( n − 1 ) D n − 1 (n-1)D_{n-1} (n−1)Dn−1错排。
其他情况无法一次互换得到
因而 D n = ( n − 1 ) ( D n − 1 + D n − 2 ) m , D 1 = 0 , D 2 = 1 , D 0 = 1 D_n = (n - 1)(D_{n-1} + D_{n-2})m, D_1 = 0, D_2 = 1, D_0 = 1 Dn=(n−1)(Dn−1+Dn−2)m,D1=0,D2=1,D0=1
这是一个非常系数递推关系,下面给出一种解法:


2.4 Stirling 数
2.4.1 第一类Stirling 数
第一类Stirling数 s(n, m) 为 n个人跳集体舞,分成m个圆环的方法数目。

s(n, 0) = 0, s(1, 1) = 1
考虑 n -> n + 1
- 第n+1个人可以单独自己跳舞,其他n个人构成m-1个圈。
- 第n+1个人加入到别的队伍中,可以选择第i个的左边,所以有n个不同的位置,而其他n个人s(n.m)种不同的组圈方法
s(n + 1, m) = s(n, m - 1) + n * s(n, m)
2.4.2 第二类Stirling数
第二类Stirling数S(n, m): n个有区别的球放到m个相同的盒子中,要求无一空盒。

考虑 S(n, m)
- 第n 个球独占一盒,S(n - 1, m - 1)
- 第n 个球放到 前 n - 1 选取的m 个盒子中的其中一个,m * S(n - 1, m)
S(n, m) = S(n - 1, m - 1) + mS(n - 1, m)
如果是 n个有标志的球放进m个有区别的盒子,无空盒:m!S(n, m)
我们尝试用指数型母函数求解第二类Stirling数的直接表达式:


相关文章:
三、递推关系与母函数,《组合数学(第4版)》卢开澄 卢华明
文章目录 一、似函数、非函数1.1 母函数1.2 母函数的简单应用1.3 整数拆分1.4 Ferrers 图像1.5 母函数能做什么1.6 递推关系1.6.1 Hanoi 问题1.6.2 偶数个5怎么算 1.7 Fibonacci 序列1.7.1 Fibonacci 的奇妙性质1.7.2 Fibonacci 恒等式1.7.3 Fibonacci 的直接表达式1.7.4 Fibon…...
线程互斥同步
前言: 简单回顾一下上文所学,上文我们最重要核心的工作就是介绍了我们线程自己的LWP和tid究竟是个什么,总结一句话,就是tid是用户视角下所认为的概念,因为在Linux系统中,从来没有线程这一说法,…...
DeepSeek R1 AI 论文翻译
摘要 原文地址: DeepSeek R1 AI 论文翻译 我们介绍了我们的第一代推理模型,DeepSeek-R1-Zero 和 DeepSeek-R1。 DeepSeek-R1-Zero 是一个通过大规模强化学习(RL)训练的模型,且在此过程中未使用监督微调(…...
如何计算态势感知率?
态势感知率(Situational Awareness Rate)的计算通常需要结合具体应用场景和定义目标,通常涉及对感知、理解、预测三个层次的量化分析。不同领域(如网络安全、军事、工业控制等)可能有不同的量化方式。通用思路和常见方…...
二、CSS笔记
(一)css概述 1、定义 CSS是Cascading Style Sheets的简称,中文称为层叠样式表,用来控制网页数据的表现,可以使网页的表现与数据内容分离。 2、要点 怎么找到标签怎么操作标签对象(element) 3、css的四种引入方式 3.1 行内式 在标签的style属性中设定CSS样式。这种方…...
Alibaba开发规范_异常日志之日志规约:最佳实践与常见陷阱
文章目录 引言1. 使用SLF4J日志门面规则解释代码示例正例反例 2. 日志文件的保存时间规则解释 3. 日志文件的命名规范规则解释代码示例正例反例 4. 使用占位符进行日志拼接规则解释代码示例正例反例 5. 日志级别的开关判断规则解释代码示例正例反例 6. 避免重复打印日志规则解释…...
使用istio实现权重路由
istio概述 **概述:**Istio 是一个开源的 服务网格(Service Mesh)解决方案,主要用于管理、保护和监控微服务架构中的服务通信。它为微服务提供了基础设施层的控制功能,不需要更改应用程序的代码,从而解决服…...
M. Triangle Construction
题目链接:Problem - 1906M - Codeforces 题目大意:给一个 n 边形, 每一个边上有a[ i ] 个点, 在此多边形上求可以连的三角形有多少个, 每个点只能用一次。 输入: 第一行是一个整数 N ( 3 ≤ N ≤ 200000…...
每天学点小知识之设计模式的艺术-策略模式
行为型模式的名称、定义、学习难度和使用频率如下表所示: 1.如何理解模板方法模式 模板方法模式是结构最简单的行为型设计模式,在其结构中只存在父类与子类之间的继承关系。通过使用模板方法模式,可以将一些复杂流程的实现步骤封装在一系列基…...
机试题——到邻国目标城市的最短距离
题目描述 A国与B国是相邻的两个国家,每个国家都有很多城市。国家内部有很多连接城市的公路,国家之间也有很多跨国公路,连接两个国家的边界城市。两个国家一共有N个城市,编号从1到N,一共有M条公路,包括国内…...
Python + Tkinter + pyttsx3实现的桌面版英语学习工具
Python Tkinter pyttsx3实现的桌面版英语学习工具 在多行文本框输入英文句子,双击其中的英文单词,给出英文读音和中文含义和音标。 本程序查询本地词典数据。通过菜单栏"文件"->"打开词典编辑器"进入编辑界面。 词典数据存储…...
【Vite + Vue + Ts 项目三个 tsconfig 文件】
Vite Vue Ts 项目三个 tsconfig 文件 为什么 Vite Vue Ts 项目会有三个 tsconfig 文件?首先我们先了解什么是 tsconfig.json ? 为什么 Vite Vue Ts 项目会有三个 tsconfig 文件? 在使用 Vite 创建 vue-ts 模板的项目时,会发现除了 ts…...
AI时代IT行业职业方向规划大纲
一、引言 AI时代的颠覆性影响 ChatGPT、Midjourney等生成式AI对传统工作模式的冲击 案例:AI编程助手(GitHub Copilot)改变开发者工作流程 核心问题:IT从业者如何避免被AI替代,并找到新机遇? 二、AI时代…...
Mac M1 Comfyui 使用MMAudio遇到的问题解决?
问题1: AssertionError: Torch not compiled with CUDA enabled? 解决办法:修改代码以 CPU 运行 第一步:找到 /ComfyUI/custom_nodes/ComfyUI-MMAudio/mmaudio/ext/autoencoder/vae.py文件中的下面这两行代码 self.data_mean nn.Buffer(t…...
大语言模型深度研究功能:人类认知与创新的新范式
在人工智能迅猛发展的今天,大语言模型(LLM)的深度研究功能正在成为重塑人类认知方式的关键力量。这一突破性技术不仅带来了工具层面的革新,更深刻地触及了人类认知能力的本质。本文将从认知科学的角度出发,探讨LLM如何…...
[SAP ABAP] 性能优化
1.数据库编程OPEN SQL方面优化 1.避免使用SELECT *,只查询需要的字段即可 尽量使用SELECT f1 f2 ... (具体字段) 来代替 SELECT * 写法 2. 如果确定只查询一条数据时,使用 SELECT SINGLE... 或者是 SELECT ...UP TO 1 ROWS ... 使用语法 UP TO n ROWS 来…...
并行计算、分布式计算与云计算:概念剖析与对比研究(表格对比)
什么是并行计算?什么是分布计算?什么是云计算?我们如何更好理解这3个概念,我们采用概念之间的区别和联系的方式来理解,做到切实理解,深刻体会。 1、并行计算与分布式计算 并行计算、分布式计算都属于高性…...
ASP.NET Core Filter
目录 什么是Filter? Exception Filter 实现 注意 ActionFilter 注意 案例:自动启用事务的筛选器 事务的使用 TransactionScopeFilter的使用 什么是Filter? 切面编程机制,在ASP.NET Core特定的位置执行我们自定义的代码。…...
doris:删除操作概述
在 Apache Doris 中,删除操作(Delete)是一项关键功能,用于管理和清理数据,以满足用户在大规模数据分析场景中的灵活性需求。 Doris 提供了丰富多样的删除功能支持,包括:DELETE 语句、删除标记&…...
【思维导图】redis
学习计划:将目前已经学的知识点串成一个思维导图。在往后的学习过程中,不断往思维导图里补充,形成自己整个知识体系。对于思维导图里的每个技术知识,自己用简洁的话概括出来, 训练自己的表达能力。...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...
Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...
新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
以光量子为例,详解量子获取方式
光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...
Windows安装Miniconda
一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...
MFE(微前端) Module Federation:Webpack.config.js文件中每个属性的含义解释
以Module Federation 插件详为例,Webpack.config.js它可能的配置和含义如下: 前言 Module Federation 的Webpack.config.js核心配置包括: name filename(定义应用标识) remotes(引用远程模块࿰…...










