引言
确定性微分方程描述「初值决定未来」的世界,而排队等待、网络流量、股价波动、放射性衰变这类现象本质上是随机的,需要随机过程来建模。马尔可夫链与泊松过程是两类最基本、也最有用的随机过程:前者以「无后效性」刻画状态随机转移,后者以「独立平稳增量」刻画随机事件到达。它们不仅是排队论、可靠性工程与金融数学的基础模型,也是 MCMC 采样与 PageRank 这类计算算法的理论内核。本文梳理两类过程的定义、核心性质与极限行为,并用数值实验验证平稳分布与到达间隔分布的理论预言。
理论基础
马尔可夫链与转移矩阵
离散时间随机过程 ${X_n}$ 若满足马尔可夫性——给定现在的状态,未来与过去条件独立:
$$P(X_{n+1} = j \mid X_n = i, X_{n-1}, \dots, X_0) = P(X_{n+1} = j \mid X_n = i) = p_{ij}$$
则称为(时齐)马尔可夫链,转移概率构成随机矩阵 $P = (p_{ij})$,每行和为 1。$n$ 步转移概率由矩阵幂给出,这源于 Chapman-Kolmogorov 方程:
$$P^{(m+n)} = P^{(m)} P^{(n)}, \qquad p_{ij}^{(n)} = (P^n)_{ij}$$
状态分类与平稳分布
状态 $i$ 若以概率 1 能返回称为常返态,否则为暂留态;返回时间的最大公约数大于 1 时称为周期性。不可约、非周期、正常返的链(遍历链)存在唯一平稳分布 $\pi$ 满足
$$\pi P = \pi, \qquad \sum_i \pi_i = 1$$
且不论初始分布如何,$X_n$ 的分布都收敛于 $\pi$;强大数定律保证时间平均等于按 $\pi$ 的空间平均——这正是 MCMC 用一条链的样本估计后验期望的依据。有限状态链中 $\pi$ 就是 $P^T$ 对应特征值 1 的归一化正特征向量(Perron-Frobenius 定理),可用幂迭代求出。
泊松过程
计数过程 ${N(t)}$ 若满足 $N(0)=0$、独立增量、平稳增量且
$$P(N(t) = k) = \frac{(\lambda t)^k}{k!}, e^{-\lambda t}, \qquad k = 0, 1, 2, \dots$$
则称为强度 $\lambda$ 的泊松过程。它有三个等价刻画:上述增量分布;到达间隔 $T_n$ 独立同分布于指数分布 $\mathrm{Exp}(\lambda)$(均值 $1/\lambda$);以及在充分小区间内恰好发生一次事件的概率为 $\lambda h + o(h)$、发生两次以上为 $o(h)$。指数分布的无记忆性 $P(T > s + t \mid T > s) = P(T > t)$ 是马尔可夫性在连续时间中的体现,也是泊松过程成为排队模型基石的原因。推广方向包括非齐次泊松过程(强度 $\lambda(t)$ 随时间变化)与复合泊松过程(每次到达附带随机幅度,如保险理赔总额)。
方法实现
下面用 NumPy 做两组数值实验:一是用幂迭代求三状态马尔可夫链的平稳分布并与长时间模拟的频率对比;二是用指数间隔时间模拟泊松过程,验证到达计数与间隔分布的理论值。
import numpy as np
P = np.array([[0.7, 0.2, 0.1],
[0.3, 0.5, 0.2],
[0.2, 0.3, 0.5]])
# 平稳分布: 幂迭代 pi <- pi @ P
pi = np.ones(3) / 3.0
for _ in range(200):
pi = pi @ P
# 对照: P^T 的 Perron 特征向量
w, v = np.linalg.eig(P.T)
pi_ref = np.real(v[:, np.argmin(np.abs(w - 1.0))])
pi_ref /= pi_ref.sum()
# 模拟一条长链统计经验频率
rng = np.random.default_rng(0)
state, counts = 0, np.zeros(3)
for _ in range(300_000):
state = rng.choice(3, p=P[state])
counts[state] += 1
print("幂迭代:", np.round(pi, 5))
print("特征向量:", np.round(pi_ref, 5))
print("模拟频率:", np.round(counts / counts.sum(), 5))
# 泊松过程模拟: 间隔 ~ Exp(lam)
lam, T = 3.0, 1000.0
t, arrivals = 0.0, []
while True:
t += rng.exponential(1.0 / lam)
if t > T:
break
arrivals.append(t)
gaps = np.diff(arrivals)
print(f"到达数 {len(arrivals)} (期望 {lam*T:.0f}), "
f"平均间隔 {gaps.mean():.4f} (期望 {1/lam:.4f})")
三种途径得到的平稳分布在三位小数内一致,到达计数与平均间隔也贴合泊松过程的理论期望——遍历性把「系综平均」「时间平均」与「线性代数计算」统一了起来。
应用案例分析
M/M/1 排队系统是泊松过程与连续时间马尔可夫链最直接的应用:顾客按强度 $\lambda$ 的泊松过程到达,服务时间服从参数 $\mu$ 的指数分布,队长构成生死过程。利用局部平衡方程可得平稳分布为几何分布 $\pi_n = (1-\rho)\rho^n$($\rho = \lambda/\mu < 1$),平均队长 $\mathbb{E}[N] = \rho/(1-\rho)$——该公式解释了为何利用率 90% 的系统平均队长已达 9,是容量规划中「留有余量」的定量依据。另一个著名应用是 PageRank:把网页看作状态、链接看作转移,加入概率 $\alpha \approx 0.85$ 的随机跳转保证链不可约非周期,排名向量正是该马尔可夫链的平稳分布,幂迭代(每步一次稀疏矩阵-向量乘)即为实际算法。
| 对象 | 分布/刻画 | 参数含义 | 相互关系 |
|---|---|---|---|
| 泊松过程 $N(t)$ | $P(N(t)=k) = \frac{(\lambda t)^k}{k!}e^{-\lambda t}$ | $\lambda$:单位时间平均到达率 | 计数视角 |
| 泊松分布 | 固定区间内到达次数 | 均值 = 方差 = $\lambda t$ | $N(t)$ 的边际分布 |
| 指数分布 | $f(t) = \lambda e^{-\lambda t}$ | 均值 $1/\lambda$,无记忆性 | 相邻到达的间隔 |
| 几何分布 | $P(K=k) = (1-p)p^{k-1}$ | 首次成功的等待次数 | 指数分布的离散对应 |
结论与展望
马尔可夫链用转移矩阵把随机演化线性化,其平稳分布与收敛速度(由次大特征值模长决定)是分析与算法设计的核心;泊松过程以独立平稳增量刻画随机到达,是连续时间建模的起点。进一步的方向包括:连续时间马尔可夫链与生成矩阵 $Q$($P(t) = e^{Qt}$)、马尔可夫链蒙特卡洛(Metropolis-Hastings 与 Gibbs 采样)的收敛性理论,以及排队网络(Jackson 网络)在云计算资源调度中的应用。
发表回复