Markov Chain演算法筆記

2021-08-05 20:52:20 字數 1149 閱讀 4194

markov chain 體現的是狀態空間的轉換關係,下乙個狀態只決定與當前的狀態(可以聯想網頁爬蟲原理,根據當前頁面的超連結訪問下乙個網頁)。如下圖:

這個狀態圖的轉換關係可以用乙個轉換矩陣 t 來表示:

舉乙個例子,如果當前狀態為 u(x) = (0.5, 0.2, 0.3), 那麼下乙個矩陣的狀態就是 u(x)t = (0.18, 0.64, 0.18), 依照這個轉換矩陣一直轉換下去,最後的系統就趨近於乙個穩定狀態 (0.22, 0.41, 0.37) 。而事實證明無論你從那個點出發,經過很長的 markov chain 之後都會匯集到這一點。

滿足什麼條件下經過很長的 markov chain 後系統會趨近乙個穩定狀態呢,大概的條件如下:

1. irreducibility. 即圖是聯通的,各個狀態之間都有過去的辦法,舉個不聯通的例子,比如爬蟲爬不到內部區域網的網頁

2. aperiodicity. 即圖中遍歷不會陷入到乙個死圈裡,進去了再也出不來,有些**為了防機械人,會專門設定這種陷阱

3. detailed balance,這是保證系統有穩態的乙個重要條件,詳細說明見下面。

假設 p(x) 是最後的穩態,那麼 detailed balance 可以用公式表示為:

什麼意思呢?假設上面狀態圖 x1 有 0.22 元, x2 有 0.41 元,x3 有 0.37 元,那麼 0.22×1 表示 x1 需要給 x2 錢,以此類推,手動計算,可以發現下乙個狀態每個人手中的錢都沒有變。值得說明的是,這裡體現了乙個很重要的特性,那就是從乙個高概率狀態 xi 向乙個低概率狀態 x(i-1) 轉移的概率等於從這個低概率狀態向高概率狀態轉移的概率(reversible,至於要不要轉移又是另外一回事)。

markov chain 的基本性質「無後效性」,即事物將來的狀態及其出現的概率的大小,只取決於該事物現在所處的狀態,而與以前時間的狀態無關;

還有乙個基本性質是「遍歷性」,是指不管事物現在出於什麼狀態,在較長時間內,馬爾科夫過程逐漸趨於穩定狀況,而且穩定狀態與初始狀況無關。

《演算法筆記》Dijkstra演算法筆記

今日在華農終於接近完成閱讀演算法筆記,有點點成就感,做下dijkstra跟dfs演算法結合的筆記 簡單狀態 純dijkstra include include include define inf 1000000000 using namespace std const int maxn 1010 ...

回溯 皇后 演算法筆記 演算法筆記

分治演算法 線性時間選擇 o n 33 隨機線性選擇 偽 o n int partition type a,int p,int r return table n 1 w 1 main function else else lowcost i 0 for int i 1 i n i int temp ...

回溯 皇后 演算法筆記 演算法筆記

遞迴演算法 能夠用遞迴解決的問題需要滿足三個條件 原問題可以轉換為乙個或多個子問題來求解,而這些子問題的求解方法和原問題完全相同,只是規模不同 遞迴呼叫次數必須是有限的 必須有結束遞迴的條件 遞迴出口 來終止遞迴。設計遞迴演算法模式先求解問題的遞迴模型。在設計遞迴演算法的時候,如果糾結遞迴樹的每乙個...