为什么这个解决吸收马尔可夫链的想法行不通?

Why does this idea to solve a absorption markov chain not work?

编辑:看来我的方法有效。

我遇到一道编程题,要求我计算到达终端状态的概率。

费了好几个小时用传统方法解决,google了一下,发现叫吸收马尔可夫链。并且有一个公式。

但是,我试图弄清楚我的解决方案中缺少什么,因为它看起来是正确的。

请原谅粗略的绘图。这张图中基本上有 4 个节点,黑线表示原始转换和概率,而彩色线表示终止路径。

步骤是这样的:

  1. 遍历所有可能到达终点的路径,求出每条路径到达终点的概率。即到达节点的概率。

  2. 忽略循环路径。这意味着 "1/3"41 的过渡基本上被忽略了。

(2)的原因:因为我们可以假设返回将增加每条可能路径的概率,使得它们仍然保持彼此相同的相对概率!例如,如果我从 4 回到 1,那么去 2 的机会], 34 将分别增加 1/27 (1/3 * 1/3 * 1/3),使得相对概率仍然相等!

我希望以上内容有意义。

  1. 计算每个节点的概率为“每个节点的概率”/“终止的概率”,因为通过消除循环图,到达每个节点的概率不再是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)步不确定,我们可以再试一次!

假设我们从14然后又回到1,这个有 1/9 的概率。

从这里开始,我们可以再次按照 * 1/9 的概率走每条彩色路径。

结合之前计算的概率,我们得出:

10/27 的概率达到 3
达到 2 的概率为 50/81。
总终止概率为 80/81。

3 处终止的新概率现在是 (10/27) / (80/81) = 3/8 (SAME)
2 处终止的新概率现在是 (50/81) / (80/81) = 5/8 (SAME)

然而,32[=98=的实际概率是(2/5)和(3/5) ] 分别使用我在网上找到的算法(虽然有很小的机会是错误的)。 原来我使用了错误的在线解决方案

我发现我的答案其实很接近,我不确定为什么不对?

我们可以用矩阵 M 表示马尔可夫链的转移。在 Python 表示法中,这看起来像:

M = [[  0, 1/3, 1/3, 1/3],
     [  0,   1,   0,   0],
     [  0,   0,   1,   0],
     [1/3, 2/3,   0,   0]])

以及向量 S 的概率,最初在状态 1 中为 100%。

S = [1, 0, 0, 0]

S 乘以 M 得到新的概率:

S*M = [0, 1/3, 1/3, 1/3]
S*M**2 = [1/9, 5/9, 1/3, 0]
S*M**3 = [0, 16/27, 10/27, 1/27]
S*M**4 = [1/81, 50/81, 10/27, 0]
S*M**n = [3**(-n)*((-1)**n + 1)/2,
          3**(-n)*((-1)**n + 5*3**n - 6)/8,
          3**(-n)*(-(-1)**n + 3*3**n - 2)/8,
          3**(-n)*(1 - (-1)**n)/2]

n 趋于无穷大的极限内,即使 n,这也会得到

[0, 5/8, 3/8, 0]

也以等概率从1、2、3、4开始:

S = [1/4, 1/4, 1/4, 1/4]
S*M = [1/12, 1/2, 1/3, 1/12]
S*M**2 = [1/36, 7/12, 13/36, 1/36]
S*M**n = [3**(-n)/4, 5/8 - 3*3**(-n)/8, 3/8 - 3**(-n)/8, 3**(-n)/4]

导致相同的限制[0, 5/8, 3/8, 0]

以等概率从 1 和 4 开始:

S = [1/2, 0, 0, 1/2]
S*M = [1/6, 1/2, 1/6, 1/6]
S*M**2 = [1/18, 2/3, 2/9, 1/18]
S*M**n = [3**(-n)/2, 3/4 - 3*3**(-n)/4, 1/4 - 3**(-n)/4, 3**(-n)/2]

给出了 n 走向无穷大的另一个限制:

[0, 3/4, 1/4, 0]