Markov Chains
油管視頻:
https://www.youtube.com/watch?v=uvYTGEZQTEs&index=1&list=PLANMHOrJaFxPMQCMYcYqwOCYlreFswAKP
概括一下:
首先,穩定態(absorb)就是去找特征值為1的特征向量,這個大家都能想到。
但是,你會發現 轉移矩陣(transition matrix)的寫法和 線性代數中的那種是不同的。
按照這里的寫法,只能從左邊用行向量去乘 轉移矩陣。
而線性代數中的規范是從右邊用列向量去乘 矩陣。
然后視頻中解特征向量時就只好展開算。而線性代數中直接在矩陣上行變換就可以消元了。
然后是,矩陣特征值1 有多個特征向量的情況。
如果給定一個初始狀態,那么最終狀態一定是這幾個特征向量的線性組合。
用有向圖來看這個問題:
這個圖可以分成3個強連通的部分a,b,c, 但是沒有箭頭流入a, 所以 在每個周期中,a的四個狀態所占的概率會越來越小。
終止狀態是 b* 和 c *
這個圖對應的矩陣的特征值1 對應的特征向量應該有兩個,分別是 b 的分量 和純 c 的分量。單獨看,純 b 的特征向量 和 b 這個子圖 單獨存在時的特征向量是一樣的。純 c 的特征向量同理。
所以其實可以先把 b 和 c 分別壓縮成兩個點。(a 是不能壓縮的。)
實際 的最終狀態(純b的特征向量 和 純c的特征向量的權重)和 初始狀態有關,
按照線性代數的定義,把矩陣的列向量,用特征向量作為weight 進行線性組合會得到特征向量本身。
還有個地方,就是1 個特征向量和 0 的特征向量,
如果是向量變換后還是器自身就是 1的特征向量。 Ax= x
如果變化后是0 就是 0 的特征向量。(A-I)x=0
所以也是相當于把 矩陣減去單位陣后,求特征值為0 的特征向量。
一個練習:
G家這道算法題應該只是相當于高斯消元(高斯消元,從上到下,再從下到上,一共兩趟,這里只需要一趟)
https://github.com/ivanseed/google-foobar-help/blob/master/challenges/doomsday_fuel/doomsday_fuel.md
要注意個地方,輸入的格式 并不是 標準的transition 矩陣,需要把那幾個終止態的對角線改成 1
另外說一下,這個可以搜到的題解是錯的(https://repl.it/@percussionoid/Doomsday-Fuel-3 ),
首先他是用模擬的方式做的(乘了1000次轉移矩陣),這個時間復雜度很可能就超了,
然后,后面求分母那個地方也是錯的,一個例子,7/12 1/8 1/8 1/6
相應的輸入為
正確的輸出應該是:
[14,3,3,4,24]
但是那個程序的輸出:
[7, 1, 1, 2, 12]
其他:
一個以前沒見過的,但是覺得會有用,的定理
https://en.wikipedia.org/wiki/Perron%E2%80%93Frobenius_theorem
總結
以上是生活随笔為你收集整理的Markov Chains的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 圈排序——python
- 下一篇: 您好呀 Git ,我是小二!