🎓 レベル:標準 | 重要度:A(必須) 📎 前提:マルコフ連鎖とは・遷移行列
要点(BLUF)
- 既約=どの状態からどの状態へも(何ステップかで)到達できる。連鎖が1つの塊になっている状態です。
- 再帰=出発状態に確率1で戻る(よって無限回訪れる)/過渡=戻らない確率が正(有限回しか訪れない)。
- 周期 =戻れる時刻の最大公約数。 なら非周期。既約・非周期・再帰が揃うと定常分布と収束の収束定理が使えます。
概念
遷移行列を眺めるだけでは長期挙動は分かりません。まず状態を仕分けます。「行ったきり戻れない状態(過渡)」「必ず戻ってくる状態(再帰)」「決まった周期でしか戻れない状態(周期的)」。この分類が、定常分布が存在するか・一意か・収束するかを決めます。
数式による定式化
状態 から へ到達可能 とは、ある で 。互いに到達可能( かつ )なら同じ連結クラス。全状態が1クラスなら既約です。
初回到達時刻 、戻る確率 とすると、
過渡状態の訪問回数は幾何分布で、期待値 。周期は
直観
- 再帰 vs 過渡:要するに「必ず帰る家か、出たら二度と戻らない街か」。再帰状態は無限回訪れるので長期割合が正、過渡状態はやがて捨てられ長期割合0。
- 周期:要するに「戻れるのが偶数歩目だけ」のような時間の縞模様。 となる が なら周期2で、分布が振動して落ち着きません。
具体例(過渡と周期)
過渡状態の訪問回数が有限(幾何分布、期待値2)であること、周期2の連鎖で が振動して収束しないことを確認します。
import numpy as np
# 周期2の連鎖(0<->1 を必ず往復)
Pp = np.array([[0.0, 1.0], [1.0, 0.0]])
print("周期2 P^10 第0行:", np.linalg.matrix_power(Pp, 10)[0]) # [1. 0.]
print("周期2 P^11 第0行:", np.linalg.matrix_power(Pp, 11)[0]) # [0. 1.]
# 過渡状態:0は自己ループ0.5で1へ0.5、1は吸収(0へ戻れない)
rng = np.random.default_rng(3)
def visits_to0_once():
s, v = 0, 0
while s == 0:
v += 1
s = 0 if rng.random() < 0.5 else 1
return v
mean_visits = np.mean([visits_to0_once() for _ in range(200000)])
print(f"過渡状態0の平均訪問回数 = {mean_visits:.3f} (理論 1/(1-0.5)=2 =有限)")
# 周期2 P^10 第0行: [1. 0.]
# 周期2 P^11 第0行: [0. 1.]
# 過渡状態0の平均訪問回数 = 1.998 (理論 1/(1-0.5)=2 =有限)
周期2では偶数歩で元に戻り奇数歩で反対側 — 永遠に振動します。過渡状態は平均2回しか訪れず(有限)、やがて吸収状態1へ消えます。
他過程との関係
- 有限既約な連鎖は必ず全状態が再帰(有限の状態空間からは出られないため)。過渡が現れるのは無限状態か、可約(吸収のある)連鎖です。
- 無限状態での再帰/過渡の境界はランダムウォークと再帰性のポリアの定理が典型例(次元で再帰性が切り替わる)。
数式の直観的意味
は「状態 への期待総訪問回数」。これが発散(再帰)か収束(過渡)かで状態の運命が決まります。この量は定常分布と収束の定常確率 と直結し、正再帰なら (平均回帰時間の逆数)になります。
⚠️ よくある誤解
- 「既約なら必ず収束」ではない。周期があると振動して収束しません。収束には既約+非周期が要ります(定常分布と収束)。
- 再帰には正再帰と零再帰がある。確率1で戻っても平均回帰時間が無限(零再帰)なら定常分布は存在しません。2次元単純ランダムウォークが零再帰の例です。
- 周期は状態ごとに見えて実はクラス不変。既約連鎖では全状態が同じ周期を持ちます。
対応シミュレーション
本文の過渡カウントの自己ループ確率を変えると、平均訪問回数 が変化し、 で再帰へ近づく境界が見えます。
関連
- 前提:マルコフ連鎖とは・遷移行列
- 次に読む:定常分布と収束
- 具体例:ランダムウォークと再帰性