《挑战》例题4.1 Random Walk

该博客讨论了一个n*m网格中的随机行走问题,从(0,0)出发,目标达到(n-1,m-1),避开石头格子,求首次到达的期望步数。采用数学期望和全期望公式建立方程,通过高斯消元法解决,给出解题思路和代码实现。样例输入输出展示了问题的具体情况。" 82594521,7415714,理解高维高斯分布与最大似然估计,"['概率模型', '统计学', '机器学习', '数据科学', '数学']
摘要由CSDN通过智能技术生成

1.题目描述:有一个n*m的网格,从(0,0)出发,每一步可以朝着上下左右4个方向等概率地移动,另外一些格子中有石头,因此无法移动到这些格子,求第一次到达(n-1,m-1)格子的期望步数。可以保证至少存在一条从(0,0)到(n-1,m-1)的路径。

范围:2<=n,m<=10

样例:

Input

3 10

.#...#...#
.#.#.#.#.#
...#...#..


Output

361.00000000


2.解题思路:不妨设E(x,y)表示从(x,y)出发,到终点的期望步数,那么根据期望的线性性质和全期望公式,可以得到如下方程。

E(x,y)=0.25*E(x-1,y)+0.25*E(x+1,y)+0.25*E(x,y-1)+0.25*E(x,y+1)+1;

上述方程通过移项可以变成下式:

4*E(x,y)-E(x-1,y)-E(x+1,y)-E(x,y-1)-E(x,y+1)=4;

E(n-1,m-1)=0;

为了使得方程具有唯一解,我们令所有含有石头的格子和无法到达终点的格子都有E(x,y)=0。把这些方程联立,就可以求出最终的期望步数了。注意:建立矩阵的时候,要把二维先化成一维:(x,y)->x*m+y ,这样,便得到了一个n*m阶的系数矩阵。

3.代码:

#include<iostream>
#inc
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值