假設有9個狀态,其狀态轉移圖如下所示:
根據狀态轉移圖,我們可以得到其一步轉移機率矩陣為P:
問題一:從狀态1在1000次内轉移到狀态9的機率為多少?
理論值:
由一步轉移機率矩陣P的性質知,P的n次幂矩陣Pn中的第i行第j列的元素表示的是從狀态i經過n步轉移到狀态j的機率。注意到,狀态9為吸收态。是以,在1000步以内的任意一步到達狀态9後,就永遠停留在了狀态9。是以P的1000次幂矩陣P1000中的第1行第9列就是從狀态1在1000次内轉移到狀态9的機率。
仿真值:
在仿真中,我們設定仿真次數為100000次(越大越好),設定初始狀态為1,在1000步中,如果到達狀态9就記錄,然後跳出循環,開始新一輪循環。具體代碼如下:
問題二:從狀态1到狀态9平均需要幾步?
最直覺的想法就是:假設從狀态1到達狀态9需要n步的機率為pn,則平均步數可以表示為1*p1+2*p2+……+n*pn+……。注意,這裡的pn是首達機率,即從狀态1經過k步首次到達狀态9的機率,也就是前k-1次沒有到達狀态9。顯然這裡的首達機率而不是轉移機率矩陣中的機率。這裡的首達機率不好求,不過可以矩陣論(可惜沒有選這門課)的相關知識來理論求解,最終可以得到的表達式如下:
其中,x,y表示狀态,在本例中,x=1,y=9,其它符号表示如下:
有時候,理論比較複雜的問題,仿真起來就相對簡單,和問題一中的仿真類似,假定仿真次數為10000次,設定最大步數為100000000,當到達狀态9時,就記錄所需步數并跳出循環,具體的程式實作如下:
作者:nineheadedbird