這道題目是:
有一個螞蟻,從節點1出發,走到節點5結束。在節點2,3,4都有0.5概率向前,0.5概率後退。螞蟻在節點1必然前進。求螞蟻走到第5個節點所用步數的期望或者期望近似值:
開始的時候沒有思路,但是把螞蟻前進看作+1,後退看作-1 以爲跟卡特蘭數有關。也是拼命的變換。毫無進展。
不過轉換一下思路,考慮枚舉狀態轉移,令P[k,t] 表示走t步到達k節點的概率。
那麼 P[k,t] 與P[k±1,t′] 有關。那麼寫出所有的轉移:
P[1,t]=12P[2,t−1]P[2,t]=P[1,t−1]+12P[3,t−1]P[3,t]=12(P[2,t−1]+P[4,t−1])P[4,t]=12P(3,t−1)P[5,t]=12p(4,t−1)
顯然可以矩陣地推。 配合快速冪,計算近似值並不難:
⎡⎣⎢⎢⎢⎢⎢⎢010000.500.50000.500.50000.500.500000⎤⎦⎥⎥⎥⎥⎥⎥⎡⎣⎢⎢⎢⎢⎢⎢P[1,t−1]P[2,t−1]P[3,t−1]P[4,t−1]P[5,t−1]⎤⎦⎥⎥⎥⎥⎥⎥=⎡⎣⎢⎢⎢⎢⎢⎢P[1,t]P[2,t]P[3,t]P[4,t]P[5,t]⎤⎦⎥⎥⎥⎥⎥⎥
令
A=⎡⎣⎢⎢⎢⎢⎢⎢010000.500.50000.500.50000.500.500000⎤⎦⎥⎥⎥⎥⎥⎥
更進一步,如果不計算精確值,而是準確值,那麼答案就是計算:
(∑k>=0Akk)⎡⎣⎢⎢⎢⎢⎢⎢P[1,0]P[2,0]P[3,0]P[4,0]P[5,0]⎤⎦⎥⎥⎥⎥⎥⎥=(∑k>=0Akk)⎡⎣⎢⎢⎢⎢⎢⎢10000⎤⎦⎥⎥⎥⎥⎥⎥
令
λ1,λ2,λ3,λ4,λ5 爲矩陣A的特徵值。
雖然現在還不知道具體特徵,但可以肯定:
λi∈(−1,1)
這是因爲期望必然是收斂的(直覺,不過這個也很顯然好吧)。
那麼令:
A=P−BP
B=⎡⎣⎢⎢⎢⎢⎢⎢λ100000λ200000λ300000λ400000λ5⎤⎦⎥⎥⎥⎥⎥⎥
則:
(∑k>=0Akk)=(∑k>=0P−BkPk)=P−(∑k>=0Bkk)P
進一步:
∑k>=0Bkk=⎡⎣⎢⎢⎢⎢⎢⎢⎢∑λk1k00000∑λk2k00000∑λk3k00000∑λk4k00000∑λk5k⎤⎦⎥⎥⎥⎥⎥⎥⎥
對於這個和式:
∑k>=0λkk=limn−>∞∑k=0nλkk
(1−λ)∑k=0nλkk=∑k=0nλkk−∑k=0nλk+1k=∑k=0nλkk−∑k=1n+1λk(k−1)=∑k=1nλk−λn+1n=λ−λn+11−λ−λn+1n
則:
∑k=0nλkk=λ−λn+1(1−λ)2−λn+1n1−λ
由於
|λ|<1 則:
∑k>=0λkk=limn−>∞∑k=0nλkk=limn−>∞λ−λn+1(1−λ)2−λn+1n1−λ=λ(1−λ)2
如果你不相信,我們可以檢驗一下 ,從另一個方向計算:
λ(1−λ)2=1−(1−λ)(1−λ)2=1(1−λ)2−11−λ
1(1−λ)2=∑k>=0λk(−2λ)=∑k>=0λk(k+1)11−λ=∑k>=0λk(−1k)=∑k>=0λk
最終可以反推回原式子
這也就是說:
∑k>=0Bkk=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢(λ11−λ1)200000(λ21−λ2)200000(λ31−λ3)200000(λ41−λ4)200000(λ51−λ5)2⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥=C
最終得到答案:
(∑k>=0Akk)⎡⎣⎢⎢⎢⎢⎢⎢10000⎤⎦⎥⎥⎥⎥⎥⎥=P−CP⎡⎣⎢⎢⎢⎢⎢⎢10000⎤⎦⎥⎥⎥⎥⎥⎥
不想手算,當然也有計算特徵值和特徵向量的算法。但我還不會,不過面式是可以百度的,於是我們在線計算這個矩陣的特徵值:
特徵值1: 0.9239
特徵值2: 0.3827
特徵值3: 0.0000
特徵值4: −0.3827
特徵值5: −0.9239
對於的特徵向量:
⎡⎣⎢⎢⎢⎢⎢⎢0.37340.69000.52810.28580.1547−0.2792−0.21370.39480.51590.67400.00000.0000−0.0000−0.00001.00000.2792−0.2137−0.39480.5159−0.67400.3734−0.69000.5281−0.28580.1547⎤⎦⎥⎥⎥⎥⎥⎥=P
簡單的矩陣求逆,便可以計算答案。