• 2019湖南省赛H题——概率转移&&逆矩阵


    题意

    题目链接

    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

  • 相关阅读:
    AndroidStudio gradle配置
    Git中pull对比fetch和merge
    Knockout.js随手记(7)
    Knockout.js随手记(6)
    MVC自动绑定整数数组
    Knockout.js随手记(5)
    ASP.NET4.5Web API及非同步程序开发系列(3)
    Knockout.js随手记(4)
    ASP.NET4.5Web API及非同步程序开发系列(2)
    ASP.NET4.5Web API及非同步程序开发系列(1)
  • 原文地址:https://www.cnblogs.com/lfri/p/11628553.html
Copyright © 2020-2023  润新知