M4.2 15 分鐘閱讀 2026年9月

M4.2 電話隨時會響:Continuous-Time Markov Chain 與 Rate Matrix

本篇重用M4.0明天的天氣只看今天:Markov Chain 與 Transition Matrix·M3.2一千片葉子在亂流裡:Fokker–Planck 方程式

一條只有一個人的客服專線

一家小公司的客服專線只有一位話務員、一條線。電話平均每小時進來 3 通,每通平均講 10 分鐘。線路忙碌時打進來的電話會聽到忙線音、直接掛掉,不排隊。

請先用直覺回答,並寫下你有多確定:這位話務員長期來看有多少比例的時間在講電話

課堂上最常見的答案是「3 通 × 10 分鐘 = 30 分鐘,所以一半」,而且很篤定。第二常見的是「比一半少一點,因為有些電話會撞在一起」,但說不出少多少。這一篇的目標不只是算出正確數字,而是先解決一個更基本的問題:「隨時可能發生」要怎麼寫成數學? 前兩篇的 chain 都是一回合一回合走的,電話沒有回合。

課堂提問Q1

這裡的狀態是什麼?「每小時 3 通」不是機率(它可以大於 1),那它是什麼?如果硬要用前兩篇「每一步一個 transition matrix」的語言,這一步該多長?

先想一想,再展開看整理後的答案

狀態很清楚:線路「閒」(記 0)或「忙」(記 1),Xt{0,1}X_t\in\{0,1\},但現在 tt連續的實數(單位:小時),不是回合數。

「每小時 3 通」是一個 rate(速率):單位時間內事件發生的平均次數。它跟機率的關係是:在一段很短的時間 Δt\Delta t 裡,恰好來一通電話的機率約是 3Δt3\Delta tΔt=1\Delta t=1 分鐘 =160=\tfrac1{60} 小時時約 5%),來兩通以上的機率是 Δt2\Delta t^2 量級、可以忽略。rate 不是機率,「rate × 短時間」才是機率。

所以「硬要用 transition matrix」的答案是:任何一個很短的 Δt\Delta t 都可以,得到的矩陣是 P(Δt)(1λΔtλΔtμΔt1μΔt)P(\Delta t)\approx\begin{pmatrix}1-\lambda\Delta t&\lambda\Delta t\\ \mu\Delta t&1-\mu\Delta t\end{pmatrix}λ=3\lambda=3 是來電 rate、μ\mu 是結束 rate(一通平均 10 分鐘,每小時「結束」6 次,μ=6\mu=6)。但 Δt\Delta t 選多短是任意的,而且 Δt\Delta t 太大這個式子就錯了(λΔt\lambda\Delta t 會超過 1)。真正不依賴 Δt\Delta t 的物件,是把 Δt\Delta t 除掉之後剩下的東西——這是下一節要引入的 rate matrix。

先抓住這個畫面

想像一顆棋子在「閒」「忙」兩格之間,但這次沒有人喊「下一回合」。棋子站在「閒」格時,頭上有一個以每小時 3 次的頻率隨機響的鬧鐘;響了就跳到「忙」格。站在「忙」格時換另一個鬧鐘,每小時 6 次;響了就跳回「閒」。兩個鬧鐘都沒有記憶:不管已經等了多久,接下來一分鐘響的機率都一樣。

「隨時」的意思就是:時間不再是一格一格的,但在每個瞬間,「跳走」這件事有一個固定的傾向。把這個傾向叫做 rate,整個描述就完整了。

把畫面寫成矩陣

從短時段的 transition matrix 到 rate matrix

上一節的 P(Δt)P(\Delta t) 可以寫成

P(Δt)I+RΔt,R=(λλμμ)=(3366).P(\Delta t)\approx I+R\,\Delta t,\qquad R=\begin{pmatrix}-\lambda&\lambda\\ \mu&-\mu\end{pmatrix}=\begin{pmatrix}-3&3\\6&-6\end{pmatrix}.

RRrate matrix(也叫 generator)。讀法:非對角線 R(x,y)0R(x,y)\ge0 是「從 xx 跳到 yy 的 rate」;對角線 R(x,x)=yxR(x,y)R(x,x)=-\sum_{y\ne x}R(x,y) 是負的「離開 xx 的總 rate」,讓每列的和是 0——這是 P(Δt)P(\Delta t) 每列和為 1 在 Δt0\Delta t\to0 後留下的痕跡。RR 不依賴 Δt\Delta t:它是把所有短時段的 transition matrix 共同的「斜率」抽出來的結果,R=limΔt0P(Δt)IΔtR=\lim_{\Delta t\to0}\frac{P(\Delta t)-I}{\Delta t}

走一段時間:矩陣指數

tt 小時等於走 n=t/Δtn=t/\Delta t 個短步。用前面 chain 的乘法規則 P(t)=P(Δt)nP(t)=P(\Delta t)^n(Markov property 在連續時間的版本:P(t+s)=P(t)P(s)P(t+s)=P(t)P(s)),

P(t)=limn(I+tRn)n=etRk0(tR)kk!.P(t)=\lim_{n\to\infty}\Big(I+\frac{tR}{n}\Big)^{n}=e^{tR}\equiv\sum_{k\ge0}\frac{(tR)^k}{k!}.

這跟 ex=lim(1+x/n)ne^{x}=\lim(1+x/n)^n 是同一條極限,只是把數字換成矩陣。另一個得到它的方法是微分:

ddtP(t)=limΔt0P(t)P(Δt)P(t)Δt=P(t)R,P(0)=I,\frac{d}{dt}P(t)=\lim_{\Delta t\to0}\frac{P(t)P(\Delta t)-P(t)}{\Delta t}=P(t)\,R,\qquad P(0)=I,

一個矩陣版的線性 ODE,解正是 etRe^{tR}

分佈怎麼變:forward equation

把上式左乘初始分佈的列向量 p0p_0pt=p0P(t)p_t=p_0P(t) 滿足

p˙t=ptRp˙t(y)=xy[pt(x)R(x,y)pt(y)R(y,x)].\dot p_t=p_tR\quad\Longleftrightarrow\quad \dot p_t(y)=\sum_{x\ne y}\Big[p_t(x)R(x,y)-p_t(y)R(y,x)\Big].

右邊的寫法是把 RR 的對角線攤開後得到的:yy 的機率增加率=流進來(各 xx 的機率乘上 xyx\to y 的 rate)減流出去yy 的機率乘上離開的總 rate)。這叫 forward equation(或 master equation)。

它就是 M3.2 的離散狀態版:那裡質量在連續的位置之間流動,drift 與 diffusion 決定「流到鄰近位置」的速率,方程式是 tp=Lp\partial_t p=\mathcal L^{*}p;這裡位置是有限個格子,「流到哪裡、多快」全由 RR 決定,L\mathcal L^{*} 換成了「右乘 RR」。兩者都是守恆律:總機率 ypt(y)\sum_y p_t(y) 的導數是 y(ptR)(y)=pt(R1)=0\sum_y(p_tR)(y)=p_t(R\mathbb 1)=0,因為 RR 每列和為 0。

2 狀態手算

對我們的專線,pt(1)p_t(1)(忙的機率)滿足 p˙t(1)=λpt(0)μpt(1)=λ(λ+μ)pt(1)\dot p_t(1)=\lambda\,p_t(0)-\mu\,p_t(1)=\lambda-(\lambda+\mu)\,p_t(1)。這是一條一階線性 ODE,解是

pt(1)=λλ+μ+(p0(1)λλ+μ)e(λ+μ)t.p_t(1)=\frac{\lambda}{\lambda+\mu}+\Big(p_0(1)-\frac{\lambda}{\lambda+\mu}\Big)e^{-(\lambda+\mu)t}.

Stationary distribution 是 πR=0\pi R=0 的解——流進等於流出,π(0)λ=π(1)μ\pi(0)\lambda=\pi(1)\mu——

π(1)=λλ+μ=33+6=13.\pi(1)=\frac{\lambda}{\lambda+\mu}=\frac{3}{3+6}=\frac13 .

而不是 12\tfrac12。今天早上的狀態被忘掉的時間尺度是 1/(λ+μ)=1/91/(\lambda+\mu)=1/9 小時,約 7 分鐘:這是上一篇 λ2n|\lambda_2|^n 的連續時間版本,e(λ+μ)te^{-(\lambda+\mu)t} 裡的 (λ+μ)-(\lambda+\mu) 正是 RR 的非零 eigenvalue。

展開細節完整的 e^{tR}、停留時間為什麼是 exponential、以及 Δt 太大會怎樣

etRe^{tR} 的 closed form。 RR 的 eigenvalue 是 00(左 eigenvector π\pi)與 (λ+μ)-(\lambda+\mu)。令 Π\Pi 是每一列都等於 π\pi 的矩陣(Π=1π\Pi=\mathbb 1\pi),則 RΠ=ΠR=0R\Pi=\Pi R=0R2=(λ+μ)RR^2=-(\lambda+\mu)R,代入級數得 etR=Π+e(λ+μ)t(IΠ)e^{tR}=\Pi+e^{-(\lambda+\mu)t}(I-\Pi)。驗算:t=0t=0IItt\to\infty 每列都變成 π\pi;對 tt 微分在 00(λ+μ)(IΠ)=R-(\lambda+\mu)(I-\Pi)=R

停留時間。 在狀態 xx 待超過 tt 的機率是 lim(1R(x,x)Δt)t/Δt=eR(x,x)t\lim(1-|R(x,x)|\Delta t)^{t/\Delta t}=e^{-|R(x,x)|t}:停留時間是 rate R(x,x)|R(x,x)| 的 exponential distribution,平均 1/R(x,x)1/|R(x,x)|。它是 geometric distribution 的連續極限,同樣 memoryless——這就是「鬧鐘沒有記憶」。一通電話平均 10 分鐘對應 μ=6\mu=6,就是這樣來的。

Δt\Delta t 太大。 I+RΔtI+R\Delta t 要是合法的 transition matrix,需要對角線 1R(x,x)Δt01-|R(x,x)|\Delta t\ge0,即 Δt1/maxxR(x,x)=1/6\Delta t\le1/\max_x|R(x,x)|=1/6 小時。取 Δt=0.5\Delta t=0.5 小時,λΔt=1.5\lambda\Delta t=1.5,「機率」超過 1。etRe^{tR} 沒有這個問題——它對任何 tt 都是合法的 transition matrix,這正是要引入它的原因。

回頭看「一半」

理論的判斷。 在「來電是 rate λ\lambda 的無記憶鬧鐘、通話長度是 rate μ\mu 的無記憶鬧鐘、忙線時的來電被丟掉」這三個假設下,長期忙碌比例是 λ/(λ+μ)=13\lambda/(\lambda+\mu)=\tfrac13,不是 12\tfrac12。「3 通 × 10 分鐘」的直覺錯在一個隱含假設:它把每小時進來的 3 通都算成有講到。但其中一部分打進來時線路是忙的、直接被掛掉;真正接到的電話每小時只有 λπ(0)=3×23=2\lambda\,\pi(0)=3\times\tfrac23=2 通,2×102\times10 分鐘 =20=20 分鐘,正好是 13\tfrac13。流量平衡 π(0)λ=π(1)μ\pi(0)\lambda=\pi(1)\mu 自動把這件事算進去了。(若電話可以排隊而不是掛掉,12\tfrac12 才是負載——但那是另一條 chain,狀態要包含隊伍長度。)

哪裡可能失準。 三個假設裡最脆弱的是「通話長度無記憶」:真實通話不太可能「已經講了 20 分鐘,剩餘時間的分佈跟剛接起來時一樣」。有趣的是,長期忙碌比例不受這條影響:把一次「閒→忙→閒」看成一個循環,閒置段平均 1/λ1/\lambda、忙碌段平均 E[S]\mathbb E[S],忙碌比例是 E[S]/(1/λ+E[S])=λE[S]/(1+λE[S])\mathbb E[S]/(1/\lambda+\mathbb E[S])=\lambda\mathbb E[S]/(1+\lambda\mathbb E[S]),只用到平均通話長度。會失準的是中途的預測:例如 pt(1)p_t(1) 的曲線形狀、以及「現在在忙,還要等多久」——那些依賴 exponential 的無記憶性。「來電無記憶」則在真實世界常被違反(廣告後湧入、午休空檔),這時 λ\lambda 隨時間變,π\pi 也就不存在。

動手跑一次

import numpy as np
rng = np.random.default_rng(0)
lam, mu, T = 3.0, 6.0, 20_000.0                # 每小時;模擬 20000 小時
t, x, busy = 0.0, 0, 0.0
while t < T:                                     # 用 exponential 停留時間直接模擬
    stay = rng.exponential(1/lam) if x == 0 else rng.exponential(1/mu)
    busy += stay * x; t += stay; x = 1 - x
print("忙碌比例", busy / T)                       # ≈ 1/3
# 違反「通話無記憶」:通話固定 10 分鐘 → 比例仍 ≈ 1/3
# 違反 Δt 小:用 P ≈ I + R·0.5 走離散步 → 出現負機率,模擬直接壞掉

先消化一下

想一想

一台機器在正常運轉時平均每 10 小時故障一次,每次維修平均 2 小時,維修期間不會再故障。工廠問「長期可用率」。該用什麼工具?

想一想

Rate matrix RR 每列的和為 0。這條性質對應 forward equation 的哪個事實?

想一想

把專線的通話長度從「平均 10 分鐘的 exponential」改成「每通固定 10 分鐘」。哪個結論會改變?

參考文獻

  1. Norris, J. R. Markov Chains. Cambridge University Press, 1997.(第 2–3 章:連續時間 chain、generator、forward / backward equations。)
  2. Grimmett, G., Stirzaker, D. Probability and Random Processes, 3rd ed. Oxford University Press, 2001.(6.9 節。)
  3. Anderson, W. J. Continuous-Time Markov Chains: An Applications-Oriented Approach. Springer, 1991.