本篇重用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},但現在 t 是連續的實數(單位:小時),不是回合數。
「每小時 3 通」是一個 rate(速率):單位時間內事件發生的平均次數。它跟機率的關係是:在一段很短的時間 Δt 裡,恰好來一通電話的機率約是 3Δt(Δt=1 分鐘 =601 小時時約 5%),來兩通以上的機率是 Δt2 量級、可以忽略。rate 不是機率,「rate × 短時間」才是機率。
所以「硬要用 transition matrix」的答案是:任何一個很短的 Δt 都可以,得到的矩陣是 P(Δt)≈(1−λΔtμΔtλΔt1−μΔt),λ=3 是來電 rate、μ 是結束 rate(一通平均 10 分鐘,每小時「結束」6 次,μ=6)。但 Δt 選多短是任意的,而且 Δt 太大這個式子就錯了(λΔt 會超過 1)。真正不依賴 Δt 的物件,是把 Δt 除掉之後剩下的東西——這是下一節要引入的 rate matrix。
先抓住這個畫面
想像一顆棋子在「閒」「忙」兩格之間,但這次沒有人喊「下一回合」。棋子站在「閒」格時,頭上有一個以每小時 3 次的頻率隨機響的鬧鐘;響了就跳到「忙」格。站在「忙」格時換另一個鬧鐘,每小時 6 次;響了就跳回「閒」。兩個鬧鐘都沒有記憶:不管已經等了多久,接下來一分鐘響的機率都一樣。
「隨時」的意思就是:時間不再是一格一格的,但在每個瞬間,「跳走」這件事有一個固定的傾向。把這個傾向叫做 rate,整個描述就完整了。
把畫面寫成矩陣
從短時段的 transition matrix 到 rate matrix
上一節的 P(Δt) 可以寫成
P(Δt)≈I+RΔt,R=(−λμλ−μ)=(−363−6).
R 叫 rate matrix(也叫 generator)。讀法:非對角線 R(x,y)≥0 是「從 x 跳到 y 的 rate」;對角線 R(x,x)=−∑y=xR(x,y) 是負的「離開 x 的總 rate」,讓每列的和是 0——這是 P(Δt) 每列和為 1 在 Δt→0 後留下的痕跡。R 不依賴 Δt:它是把所有短時段的 transition matrix 共同的「斜率」抽出來的結果,R=limΔt→0ΔtP(Δt)−I。
走一段時間:矩陣指數
走 t 小時等於走 n=t/Δt 個短步。用前面 chain 的乘法規則 P(t)=P(Δt)n(Markov property 在連續時間的版本:P(t+s)=P(t)P(s)),
P(t)=n→∞lim(I+ntR)n=etR≡k≥0∑k!(tR)k.
這跟 ex=lim(1+x/n)n 是同一條極限,只是把數字換成矩陣。另一個得到它的方法是微分:
dtdP(t)=Δt→0limΔtP(t)P(Δt)−P(t)=P(t)R,P(0)=I,
一個矩陣版的線性 ODE,解正是 etR。
分佈怎麼變:forward equation
把上式左乘初始分佈的列向量 p0,pt=p0P(t) 滿足
p˙t=ptR⟺p˙t(y)=x=y∑[pt(x)R(x,y)−pt(y)R(y,x)].
右邊的寫法是把 R 的對角線攤開後得到的:y 的機率增加率=流進來(各 x 的機率乘上 x→y 的 rate)減流出去(y 的機率乘上離開的總 rate)。這叫 forward equation(或 master equation)。
它就是 M3.2 的離散狀態版:那裡質量在連續的位置之間流動,drift 與 diffusion 決定「流到鄰近位置」的速率,方程式是 ∂tp=L∗p;這裡位置是有限個格子,「流到哪裡、多快」全由 R 決定,L∗ 換成了「右乘 R」。兩者都是守恆律:總機率 ∑ypt(y) 的導數是 ∑y(ptR)(y)=pt(R1)=0,因為 R 每列和為 0。
2 狀態手算
對我們的專線,pt(1)(忙的機率)滿足 p˙t(1)=λpt(0)−μpt(1)=λ−(λ+μ)pt(1)。這是一條一階線性 ODE,解是
pt(1)=λ+μλ+(p0(1)−λ+μλ)e−(λ+μ)t.
Stationary distribution 是 πR=0 的解——流進等於流出,π(0)λ=π(1)μ——
π(1)=λ+μλ=3+63=31.
而不是 21。今天早上的狀態被忘掉的時間尺度是 1/(λ+μ)=1/9 小時,約 7 分鐘:這是上一篇 ∣λ2∣n 的連續時間版本,e−(λ+μ)t 裡的 −(λ+μ) 正是 R 的非零 eigenvalue。
展開細節完整的 e^{tR}、停留時間為什麼是 exponential、以及 Δt 太大會怎樣
etR 的 closed form。 R 的 eigenvalue 是 0(左 eigenvector π)與 −(λ+μ)。令 Π 是每一列都等於 π 的矩陣(Π=1π),則 RΠ=ΠR=0、R2=−(λ+μ)R,代入級數得 etR=Π+e−(λ+μ)t(I−Π)。驗算:t=0 得 I;t→∞ 每列都變成 π;對 t 微分在 0 得 −(λ+μ)(I−Π)=R。
停留時間。 在狀態 x 待超過 t 的機率是 lim(1−∣R(x,x)∣Δt)t/Δt=e−∣R(x,x)∣t:停留時間是 rate ∣R(x,x)∣ 的 exponential distribution,平均 1/∣R(x,x)∣。它是 geometric distribution 的連續極限,同樣 memoryless——這就是「鬧鐘沒有記憶」。一通電話平均 10 分鐘對應 μ=6,就是這樣來的。
Δt 太大。 I+RΔt 要是合法的 transition matrix,需要對角線 1−∣R(x,x)∣Δt≥0,即 Δt≤1/maxx∣R(x,x)∣=1/6 小時。取 Δt=0.5 小時,λΔt=1.5,「機率」超過 1。etR 沒有這個問題——它對任何 t 都是合法的 transition matrix,這正是要引入它的原因。
回頭看「一半」
理論的判斷。 在「來電是 rate λ 的無記憶鬧鐘、通話長度是 rate μ 的無記憶鬧鐘、忙線時的來電被丟掉」這三個假設下,長期忙碌比例是 λ/(λ+μ)=31,不是 21。「3 通 × 10 分鐘」的直覺錯在一個隱含假設:它把每小時進來的 3 通都算成有講到。但其中一部分打進來時線路是忙的、直接被掛掉;真正接到的電話每小時只有 λπ(0)=3×32=2 通,2×10 分鐘 =20 分鐘,正好是 31。流量平衡 π(0)λ=π(1)μ 自動把這件事算進去了。(若電話可以排隊而不是掛掉,21 才是負載——但那是另一條 chain,狀態要包含隊伍長度。)
哪裡可能失準。 三個假設裡最脆弱的是「通話長度無記憶」:真實通話不太可能「已經講了 20 分鐘,剩餘時間的分佈跟剛接起來時一樣」。有趣的是,長期忙碌比例不受這條影響:把一次「閒→忙→閒」看成一個循環,閒置段平均 1/λ、忙碌段平均 E[S],忙碌比例是 E[S]/(1/λ+E[S])=λE[S]/(1+λE[S]),只用到平均通話長度。會失準的是中途的預測:例如 pt(1) 的曲線形狀、以及「現在在忙,還要等多久」——那些依賴 exponential 的無記憶性。「來電無記憶」則在真實世界常被違反(廣告後湧入、午休空檔),這時 λ 隨時間變,π 也就不存在。
動手跑一次
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 走離散步 → 出現負機率,模擬直接壞掉
先消化一下
參考文獻
- Norris, J. R. Markov Chains. Cambridge University Press, 1997.(第 2–3 章:連續時間 chain、generator、forward / backward equations。)
- Grimmett, G., Stirzaker, D. Probability and Random Processes, 3rd ed. Oxford University Press, 2001.(6.9 節。)
- Anderson, W. J. Continuous-Time Markov Chains: An Applications-Oriented Approach. Springer, 1991.