为什么这个解决吸收马尔可夫链的想法行不通?
Why does this idea to solve a absorption markov chain not work?
编辑:看来我的方法有效。
我遇到一道编程题,要求我计算到达终端状态的概率。
费了好几个小时用传统方法解决,google了一下,发现叫吸收马尔可夫链。并且有一个公式。
但是,我试图弄清楚我的解决方案中缺少什么,因为它看起来是正确的。
请原谅粗略的绘图。这张图中基本上有 4 个节点,黑线表示原始转换和概率,而彩色线表示终止路径。
步骤是这样的:
遍历所有可能到达终点的路径,求出每条路径到达终点的概率。即到达节点的概率。
忽略循环路径。这意味着 "1/3" 从 4 到 1 的过渡基本上被忽略了。
(2)的原因:因为我们可以假设返回将增加每条可能路径的概率,使得它们仍然保持彼此相同的相对概率!例如,如果我从 4 回到 1,那么去 2 的机会], 3 和 4 将分别增加 1/27 (1/3 * 1/3 * 1/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 的概率。
从这里开始,我们可以再次按照 * 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)
然而,3和2[=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]
编辑:看来我的方法有效。
我遇到一道编程题,要求我计算到达终端状态的概率。
费了好几个小时用传统方法解决,google了一下,发现叫吸收马尔可夫链。并且有一个公式。
但是,我试图弄清楚我的解决方案中缺少什么,因为它看起来是正确的。
请原谅粗略的绘图。这张图中基本上有 4 个节点,黑线表示原始转换和概率,而彩色线表示终止路径。
步骤是这样的:
遍历所有可能到达终点的路径,求出每条路径到达终点的概率。即到达节点的概率。
忽略循环路径。这意味着 "1/3" 从 4 到 1 的过渡基本上被忽略了。
(2)的原因:因为我们可以假设返回将增加每条可能路径的概率,使得它们仍然保持彼此相同的相对概率!例如,如果我从 4 回到 1,那么去 2 的机会], 3 和 4 将分别增加 1/27 (1/3 * 1/3 * 1/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 的概率。
从这里开始,我们可以再次按照 * 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)
然而,3和2[=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]