题意
Bobo有一个 $n+m$ 个节点的有向图,编号分别为 $1 sim n$,他还有一个 $n$ 行 $n+m$ 列的矩阵 $P$。
如果在 $t$ 时刻他位于节点 $u(1 leq u leq n)$,那么在 $(t+1)$ 时刻他在节点 $v$ 的概率为 $P_{u,v}/10000$;
如果在 $t$ 时刻它位于节点 $u(u > n)$,那么在 $(t+1)$ 时刻他在节点$u$ 的概率是1.
0时刻Bobo位于节点1,求无穷久之后,它位于节点 $(n+1), (n+2), ..., (n+m)$ 的概率。
分析
求无穷久的情况,要么进入循环,要么像等比数列求和一样收敛于某个数,总不可能一步一步模拟吧。
套路一波,用向量 $D_i = (d_1, d_2, ...,d_{n+m})$ 表示移动 $i$ 次之后在各个点的概率。
易知,$d_1 = d_1*P_{1,1} + d_2*P_{2,1} + ..+ d_{n+m}*P_{n+m, 1}$,同理可得 $d_2, d_3,..,d_{n+m}$,这样的转移可以写成矩阵的形式
将输出的 $n$ 行 $n+m$ 列,根据题意,可在左下补上全0,右下补上单位矩阵,得到矩阵 $X$,
则 $D_n = D_{n-1}*X, D_1=(1, 0, 0,..., 0)$.
即 $D_n = D_0 * X^n$.
由分块矩阵的知识,将 $X$ 写成4个子矩阵:左上角(n * n)部分为A,右上角(n * m)部分为B,左下角(m * n)部分是零矩阵,右下角(m * m)部分为单位矩阵E:
$$x = egin{bmatrix}
A & B\
0 & E
end{bmatrix}$$
算一下容易发现:
$$x^n = egin{bmatrix}
A^n & (B+AB+...+A^{n-1}B)\
0 & E
end{bmatrix}$$
当 $n$趋于无穷大时,结合实际意义,$A^n=0$.
根据等比数列的求和公式,得到:
$$B+AB+...+A^{n-1}B = frac{E-A^n}{E-A}*B$$
因为 $n$ 趋于无穷,所以
$$frac{E-A^n}{E-A}*B = frac{E}{E-A} *B = (E-A)^{-1}*B$$
利用高斯消元,O(n^3)复杂度得到该逆矩阵。
这样就求出了 $n$ 取余无穷大时 $X^n$ 的值,与 $D_0$ 相乘,就得到了答案。
参考链接:https://blog.csdn.net/qq_43202683/article/details/100170570