矩阵平均路径长度_[markov系列1]从马尔可夫链看矩阵的乘法

本文通过一个迷宫逃脱问题引入,解释如何使用矩阵乘法和马尔可夫链来计算老鼠在迷宫坍塌前逃脱的概率。通过逐步简化问题,阐述了马尔可夫链的概念,并提供了计算过程。最后提出几个拓展思考问题,鼓励读者深入理解矩阵乘法的应用。
摘要由CSDN通过智能技术生成

8971dd6e61a3624a6f3cdc38180291ec.png
在高中阶段,矩阵和矩阵乘法的教学往往不被重视. 在绝大多数高中生眼里,把一些数字排列成
列然后用圆括号括起来就是矩阵,把矩阵静态的理解为一种存储数字的方式,而把矩阵的运算看作是一种数字运算的批处理,对矩阵乘法仅仅停留在规则记忆的层面上,其应用情境也大多局限在表示线性方程组或诸如小明、小红、小王买铅笔、钢笔、圆珠笔的问题上. 那么今天橘子老君将从一道老鼠版Maze Runer的趣味问题入手,带你看一看矩阵的真正实力.

问题

如下图所示的迷宫共有9个格子,相邻格子有门相通,9号格子就是迷宫出口. 整个迷宫将会在5分钟后坍塌. 1号格子有一只老鼠,这只老鼠以每分钟一格的速度在迷宫里乱窜(它通过各扇门的机会均等)。求此老鼠在迷宫坍塌之前逃生的概率。如果这只老鼠速度提高一倍,则老鼠在迷宫坍塌之前逃生的概率能增加多少?

b8625600-bd4a-eb11-8da9-e4434bdf6706.png

以上是2018年上海应用数学知识竞赛的一道初赛试题,橘子老君将会讲解如何用矩阵乘法来解决这个问题.

简化版问题

首先,我们不妨先把问题简化为一个4个格子的迷宫,老鼠仍以每分钟一格的速度在迷宫里乱窜,4号格子是迷宫的出口.

392f452158fa50776a7995cc43355e7d.png

由通过各扇门的机会均等,可得格子之间转移的概率如图(由于4号格子是出口,所以老鼠到达四号格子后不会向其他格子转移),

f4204479ca5984bff15481137fc3a31e.png

那么,老鼠经过一次移动,1分钟后在1-4号的格子的概率分别为

.

我们不妨用向量

表示
分钟后老鼠在1-4号的格子的概率,故
.

dd26036ef1eae6fb05230dd63e4c6d2e.png

如上图,通过列举每一条路径,当老鼠经过两次移动,我们发现老鼠可能落在1号或4号格子.

考虑落在1号格子的情况,其对应有两条路径,

.

那么根据老鼠每次的移动相互独立和加法原理,我们得到老鼠落在1号格子的概率为

.

同理可得落在4号格子的概率也为

,故
.

1e4a27ed96a2c385eb0a3bca1fd72c1f.png

如上图,进一步列举3分钟后的每一条路径,考虑落在3号的格子的情况,对应的路径有两条

. 通过分析格子间的转移概率不难得到,要使老鼠3分钟后落在3号格子,则2分钟后老鼠必须在1号格子. 故我们接下来将尝试写出相邻两分钟在不同格子概率的递推关系.

一般地,不妨用

表示
分钟老鼠落在
号格子的概率,则有

69ad2a4fd754bbe148a26fe879a55062.png

由以上递推关系,我们可以通过编程由计算机来完成计算:

#!/usr/bin/env python3

n = 5  # 计算到n分钟后的情况
v = (1, 0, 0, 0)  # 0分钟后的情况
i = 0  # 当前计算到i分钟后
while i < n:
    v = (
        0.5 * v[1] + 0.5 * v[2],
        0.5 * v[0],
        0.5 * v[0],
        0.5 * v[1] + 0.5 * v[2] + v[3]
    )
    i = i + 1
    print('v' + str(i) + ': ' + str(v))

Output:

v1: (0.0, 0.5, 0.5, 0.0)
v2: (0.5, 0.0, 0.0, 0.5)
v3: (0.0, 0.25, 0.25, 0.5)
v4: (0.25, 0.0, 0.0, 0.75)
v5: (0.0, 0.125, 0.125, 0.75)

由上述结果,我们看到,老鼠在五分钟后逃出的概率为

. 如果老鼠的移动速度翻倍那无非就是移动的次数从5次变为10次,得到逃出的概率为
.

更一般地,我们可以用

表示老鼠从
号格子向
号格子移动的概率,那么

a5dd4c9be80b5ef976c66c1be4a8a429.png

6ad5b818b4a9d0589cf8657d461beb16.png

故由矩阵乘法的定义,递推关系式可以写成:

b0d3368f4963827388dbbf595ead9f8d.png

马尔可夫链:一些定义

至此我们得到了解决此问题的矩阵形式,我们把此类在不同状态间随机移动的数学模型称为马尔可夫链. 老鼠在随机移动的过程中可能落在4个格子内,即存在4个状态. 而每做一次移动,其状态即发生转移. 为了讨论更一般的情况,我们不妨设有

种状态.

我们把经过

次转移后处于各个状态的概率所组成的向量
称为
状态向量.
称为
初始状态向量,即

611f6124d73cecbf9f09594556685519.png

其中

表示经过
次转移后处于状态
的概率.

我们把各个状态之间转移的概率所组成的方阵

,称为
转移矩阵. 即

b28754324f8e05401efcef3c16420bf9.png

其中

是从状态
转移到状态
的概率[^1].

[^1]: 注意这里第

行第
列的元素是从状态
转移到状态
的概率.

那么同上文中的推导,我们可以得到相邻两个状态向量的关系,

b64a451f1fdb599bce930ccba0c1a61e.png

根据矩阵乘法的性质,不难推得

.

简化版问题的矩阵解法

在上文简化版问题中,

d3ed4862641f2a322932c09d3c11f4ec.png

e6deaa90f74bb17f4a05f6b1a13aae3a.png

下面我们用计算机来完成矩阵乘法计算:

#!/usr/bin/env python3

import numpy as np
n = 5  # 计算到n次转移后的情况
i = 0  # 当前进行到i次转移
x = np.array([
    [1],
    [0],
    [0],
    [0]])  # 当前的状态向量
P = np.array([
    [0, 0.5, 0.5, 0],
    [0.5, 0, 0, 0],
    [0.5, 0, 0, 0],
    [0, 0.5, 0.5, 1]
])  # 转移矩阵
while i < n:
    x = P.dot(x)  # x=P*x
    i = i+1
    print('x'+str(i)+': n'+str(x))

Output:

x1: 
[[0. ]
 [0.5]
 [0.5]
 [0. ]]
x2: 
[[0.5]
 [0. ]
 [0. ]
 [0.5]]
x3: 
[[0.  ]
 [0.25]
 [0.25]
 [0.5 ]]
x4: 
[[0.25]
 [0.  ]
 [0.  ]
 [0.75]]
x5: 
[[0.   ]
 [0.125]
 [0.125]
 [0.75 ]]

结语

相信掌握上文中简化版问题的解法后,那么原问题的求解也不过是按部就班而已了.

那么通过这篇文章,你对矩阵乘法及其应用是不是有了更进一步的理解呢?

如果你解决了原9格迷宫问题,欢迎在文章下方留言与大家分享.

另外橘子老君还有几个思考题,留给大家:

  • 若迷宫不会坍塌,则老鼠平均需要经过几分钟才能逃出迷宫?
  • 若老鼠在进行足够多(无穷多)次移动后,是不是一定会逃出迷宫?
  • 若迷宫并不存在出口,则老鼠在进行足够多(无穷多)次移动后,落在各个格子里的概率如何?

导入自橘子老君的博客.

更多适合中学生的趣味科普文章,关注微信公众号:橘子数学

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值