一次面試的題目

這道題目是:

有一個螞蟻,從節點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,t1]P[2,t]=P[1,t1]+12P[3,t1]P[3,t]=12(P[2,t1]+P[4,t1])P[4,t]=12P(3,t1)P[5,t]=12p(4,t1)

顯然可以矩陣地推。 配合快速冪,計算近似值並不難:
[00.5000100.50000.500.50000.5000000.50][P[1,t1]P[2,t1]P[3,t1]P[4,t1]P[5,t1]]=[P[1,t]P[2,t]P[3,t]P[4,t]P[5,t]]

A=[00.5000100.50000.500.50000.5000000.50]

更進一步,如果不計算精確值,而是準確值,那麼答案就是計算:
(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=PBP

B=[λ100000λ200000λ300000λ400000λ5]

則:
(k>=0Akk)=(k>=0PBkPk)=P(k>=0Bkk)P

進一步:

k>=0Bkk=[λ1kk00000λ2kk00000λ3kk00000λ4kk00000λ5kk]

對於這個和式:
k>=0λkk=limn>k=0nλkk

(1λ)k=0nλkk=k=0nλkkk=0nλk+1k=k=0nλkkk=1n+1λk(k1)=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λ)211λ

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]=PCP[10000]

不想手算,當然也有計算特徵值和特徵向量的算法。但我還不會,不過面式是可以百度的,於是我們在線計算這個矩陣的特徵值:
特徵值1: 0.9239
特徵值2: 0.3827
特徵值3: 0.0000
特徵值4: 0.3827
特徵值5: 0.9239
對於的特徵向量:

[0.37340.27920.00000.27920.37340.69000.21370.00000.21370.69000.52810.39480.00000.39480.52810.28580.51590.00000.51590.28580.15470.67401.00000.67400.1547]=P

簡單的矩陣求逆,便可以計算答案。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章