图上随机游走问题学习笔记

听说这东西有必要学习一下?

本文内容全部参考《浅谈图模型上的随机游走问题》by 王修涵。

定义

给定一张有向简单图 \(G = (V,E)(V = \{v_1,v_2,\cdots,v_{|V|}\} )\)和起点 \(v_s\in V\) ,终点 \(v_t \in V\),每条边\(e = (v_x,v_y)\)有正权值\(w_e\),满足 ∀\(v_x \in V-\{v_t\},\sum_{(v_x,v_y)\in E} w(v_x,v_y) = 1\),且对于任意点 \(v_x\) 都存在一条从 \(v_x\) 出发到达 \(v_t\) 的路径。有一枚棋子从起点出发,每秒从当前所在点 \(v_x\)\(w(v_x,v_y)\) 的概率选择出边 \((v_x,v_y)\) 并走向 \(v_y\) ,到达终点则停止,求期望花费时间。

思想

一般做法都是DP,根据图和题目的性质设计不同的状态来解决问题

网格图

例题(CF963E Circles of Waiting):有一枚棋子起始被放在平面直角坐标系的\((0,0)\)点。每秒棋子会随机移动。假设它当前在\((x,y)\),它下一秒有\(p_1\)的概率移动到\((x−1,y)\)\(p_2\)的概率移动到\((x,y−1)\)\(p_3\)的 概率移动到\((x+1,y)\)\(p_4\) 的概率移动到\((x,y+ 1)\)。保证 \(p_1 + p_2 + p_3 + p_4 = 1\) 。求期望 经过多少时间它会移动到一个离原点的欧几里得距离大于\(R\) 的位置。\(0≤R≤50, p_1, p_2, p_3, p_4 >0\) ,答案对\(10^9 + 7\)取模。

朴素做法

\(f(i,j)\)表示\((i,j)\)移动到外面需要的期望时间,那么有
\[ f(i,j)=\begin{cases} p_1f(i-1,j)+p_2f(i,j-1)+p_3f(i+1,j)+p_4(i,j+1)&,i^2+j^2\le R^2\\ 0&,i^2+j^2>R^2 \end{cases} \]
直接高斯消元,复杂度\(O(R^6)\)

直接消元法

把点从左到右、从上到下标号,把方程也排个序。

考虑高斯消元的过程,发现消到\((i,j)\)时只有\((i,k),k>j\)\((i+1,k),k\le j\)的方程有\(f(i,j)\)这个变量,所以只需要消\(O(R)\)个方程。

所以最终复杂度是\(O(R^4)\)

主元法

把每一行第一个格子的\(f\)作为主元,从左往右推过去,得到最右边关于主元的表达式。

当欧几里得距离大于\(R\)时即可得到方程:\(f(i,j)=0\),共\(O(R)\)个方程,直接高斯消元即可。

复杂度\(O(R^3)\)

总结

设总点数为\(n\)

从复杂度上看,直接消元法复杂度\(O(n^2)\),主元法\(O(n\sqrt{n})\)

精度上,据说直接消元法更优?

适用性来看:

  • 网格图中存在障碍/边权为0时主元法会出现无法向右推的情况,需要再设一个主元,复杂度增加,但直接消元法复杂度不变。
  • 转移方程为\(f(i,j)=p_1f(i,j+1)+p_2f(i+1,j)+p_3(pre(i,j))+1\),其中\(pre(i,j)=(x,y),x<i,y<j\)给定时直接消元法复杂度分析就是假的了,而主元法仍然可以使用。
  • 求邻接矩阵行列式(别问我这东西有啥用)时只能直接消元法。

稀疏图

例题就是定义里的题,\(n,m\le 2000\),答案模随机质数。

考虑答案就是\(\sum_{t>0}P(T>t)\),可以求出走\(i\)步还没有走到终点的概率,然后求和。

\(f_{i,u}\)表示走了\(i\)步,到了\(u\),还没有走到过终点的概率,那么有转移方程:
\[ f_{i,u}=\sum_v p(v,u)f_{i-1,v} \]
显然,转移方程和\(i\)无关,所以可以写成矩阵的形式:\(f_i=M\times f_{i-1}=f_0M^{i}\)

考虑\(M\)的特征多项式\(p(\lambda)\)的次数不超过\(n\),且\(p(M)=0\),所以\(p\)就是\(M^i\)的线性递推式。

\(M^i\)左乘一个\(f_0\),线性递推式不变,所以\(f\)的线性递推式长度也不超过\(n\)

所以\(P(T>t)=\sum_u f_{t,u}\)的递推式长度也是\(O(n)\)的,可以预处理出前\(2n\)项,然后BM算法求出递推式。设递推式的生成函数为\(C(x)\)\(a_t=P(T>t)\)的生成函数为\(A(x)\)

那么可以得到:\(A=C\times A+A_0\),其中\(A_0\)由前\(n\)项决定。

于是可以得到\(A=\frac{A_0}{1-C}\),且易得答案就是\(x=1\)\(A(x)\)的值,可以求出。由于模的是随机质数,可以假设分母不为0。

一般图

不会,咕咕咕……

转载于:https://www.cnblogs.com/p-b-p-b/p/10849869.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值