吸收马尔可夫链自定义求解算法的有效性验证疑问
吸收马尔可夫链终止概率计算逻辑求证
我遇到了一道需要计算到达终止状态概率的编程题。花了数小时尝试用传统方法求解未果后,我通过搜索得知该问题对应吸收马尔可夫链,且有对应的求解公式。但我最初以为自己的推导方案存在疏漏,因为计算结果和我误以为正确的网上解法结果不一致,特来求证。

请忽略粗糙的绘图。该图共有4个节点,黑色线条代表原始转移路径及对应概率,彩色线条代表到达终止状态的路径。
我的算法步骤
- 步骤1:枚举所有到达终止点的有效路径,累加所有通向终止节点的路径概率,作为到达该节点的初始概率。
- 步骤2:忽略循环路径,即直接忽略节点4到节点1的1/3转移概率。
步骤2的依据:循环回溯会等比例提升所有终止路径的概率,各路径的相对概率保持不变。例如从节点4返回节点1的概率为1/3,该情况下后续去往节点2、3、4的概率各会增加1/27(1/3 * 1/3 * 1/3),三者相对概率仍保持一致。
- 步骤3:由于移除循环路径后总终止概率不为1,需将各终止节点的初始概率除以总终止概率,得到最终的到达概率。
计算结果
各单次无循环路径概率:
- 红色路径概率:1/3
- 绿色路径概率:1/3
- 蓝色路径概率:1/3 * 2/3 = 2/9
初始概率统计:
- 到达节点3的初始概率:1/3
- 到达节点2的初始概率:2/9 + 1/3 = 5/9
- 总终止概率:1/3 + 5/9 = 8/9
归一化后的最终概率:
- 到达节点3的最终概率为:
(1/3) / (8/9) = 3/8 - 到达节点2的最终概率为:
(5/9) / (8/9) = 5/8
逻辑验证
如果对步骤2有疑问,我们可以再次验证:
假设存在路径1→4→1,该段概率为1/9,后续可再乘以所有彩色路径的概率,与之前的计算结果累加后:
- 到达节点3的概率为10/27
- 到达节点2的概率为50/81
- 总终止概率为80/81
归一化后的结果:
- 新的节点3终止概率为
(10/27) / (80/81) = 3/8(和之前结果一致) - 新的节点2终止概率为
(50/81) / (80/81) = 5/8(和之前结果一致)
此前我误以为通过网上算法得到的节点3、2的真实概率分别为2/5和3/5,还曾怀疑网上算法有误。 后续发现是我自己使用网上解法时操作错误
我之前疑惑自己的结果和误算的“正确结果”接近,不知道哪里出错,现在想求证我的算法逻辑是否确实成立?
内容的提问来源于stack exchange,提问作者hkcode
相关产品推荐
相关产品推荐

