ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

OI Wiki 树上随机游走:如何求从起点到终点的期望步数

OI Wiki 树上随机游走:如何求从起点到终点的期望步数 OI Wiki 树上随机游走如何求从起点到终点的期望步数【免费下载链接】OI-wiki:star2: Wiki of OI / ICPC for everyone. 某大型游戏线上攻略内含炫酷算术魔法项目地址: https://gitcode.com/GitHub_Trending/oi/OI-wiki任务很具体给出一棵 $n$ 个点、$n-1$ 条边的树和起点 $s$、终点 $t$每一秒棋子从当前点与其相连的边中等概率选一条走到另一端求第一次到达 $t$ 的期望步数。OI Wiki 的图上随机游走页面从网格图、稀疏图、一般图三个角度处理随机游走期望时间问题而树是满足$n$ 个结点$n-1$ 条边的连通无向图这一定义的图见树的基本知识边数与点数同阶正好落入该文档对稀疏图的范围。按文档给出的稀疏图方法求解路径是建立未到达终点的概率转移 → 用 Berlekamp–Massey 求最短递推 → 用生成函数在 $x1$ 处取值得到期望。问题模型把期望写成未结束概率之和页面开头的一般定义是给定起点 $s$、终点 $t$ 的图每秒棋子以给定概率沿出边移动到达终点停止求期望花费时间每秒走一步期望时间即期望步数。答案可写成$$ \sum_{k \geq 0} k \times\left(P^k\right)_{s, t} $$其中 $(P^k)_{s, t}$ 是走了 $k$ 步第一次到达终点的概率。文档同时给出收敛性当图有限且所有点都能到达终点时转移矩阵 $P$ 的特征值都小于 1答案一定收敛。树是连通的任意点都能到达终点这一前提天然满足。为便于计算文档把期望改写成$$ E(t)\sum_{i\geq0}\Pr[ti] $$即只要逐点求出走了 $i$ 步还没到终点的概率再求和就是所求期望。这一步把无限和的问题转成了一个序列问题。建立转移算出前 3n1 项记 $f(i, j)$ 为走了 $i$ 步、当前停留在 $j$、且没有走到过终点 $n$ 的概率页面例题中终点编号为 $n$一般设置下换成终点 $t$ 即可转移为$$ f(i,j)\sum_{(k,j)\in E}\frac{f(i-1,k)}{\deg_k} \quad (j\neq n) $$其中 $\deg_k$ 表示 $k$ 的度数即无向边上按度数等概率选择。由于转移与 $i$ 无关一次转移等价于乘上一个矩阵 $M$写作 $f_{i1}f_i M$。文档引用 Cayley–Hamilton 定理任意 $n$ 阶矩阵的特征多项式是它的零化多项式因此最小零化多项式的次数不超过 $n$。由此 $f$ 的最短递推式长度不超过 $n$序列 $\Pr[ti]\sum_{j1}^{n-1}f(i,j)$ 的最短递推式长度也不超过 $n$。具体的操作是初始状态棋子放在起点页面例题从 $v_1$ 出发按上面的转移直接模拟在 $O(nm)$ 时间求出 $\Pr[t0], \Pr[t1], \cdots, \Pr[t3n]$ 这一串值。用 Berlekamp–Massey 求最短递推Berlekamp–Massey 算法在 OI Wiki 中有独立一页docs/math/berlekamp-massey.md给定长为 $n$ 的数列若其最短递推式阶数为 $m$算法能在 $O(nm)$ 时间内求出数列每个前缀的最短递推式最坏 $mO(n)$即最坏 $O(n^2)$。由于 $\Pr[ti]$ 的最短递推长度不超过 $n$用 BM 算法在 $O(n^2)$ 时间内即可解出该递推式。页面例题的规模是 $n \leq 2000$在此量级下按文档分析序列模拟 $O(nm)$ 加上 BM 的 $O(n^2)$ 可以完成求解。由递推式生成函数求出答案设 $\Pr[ti]$ 的序列为 $a$满足 $i \geq i_0$ 时 $a_i\sum_{j1}^{k}c_j a_{i-j}$记 $a$ 和系数序列 $c$ 的生成函数为 $A(x)$ 与 $C(x)$。文档给出关系$$ A(x)A(x)C(x)A_0(x) $$其中 $A_0(x)$ 由 $ii_0$ 的项决定。移项得$$ A(x)\frac{A_0(x)}{1-C(x)} $$要求的是 $\sum_{i\geq0}[x^i]A(x)$文档指出这个值等于 $A(1)$即把 $x1$ 代入上式就得到期望步数。对树而言 $mn-1$$nm$ 与 $n^2$ 同阶整套方法的总复杂度为 $O(nmn^2)$也就是 $O(n^2)$。取模处理的适用条件页面例题要求答案对 $p$ 取模且 $p$ 是区间 $[10^9,\ 1.01\times10^9]$ 内随机生成的一个质数。文档中代入 $A(1)$ 这一步能成立、分母不会为零依据正是模数是随机质数。也就是说这套生成函数方法在文档中是针对对随机质数取模这一条件给出的文档没有对固定模数例如固定的 $10^97$给出分母非零的说明套用前需要先确认题目模数是否满足文档中的这一条件。结果核对与适用边界收敛性页面证明了所有点都能到达终点时 $P$ 的特征值都小于 1所以 $E(t)\sum_{i\geq0}\Pr[ti]$ 收敛$A(1)$ 计算出的值就是期望本身正确性链条期望改写为未结束概率之和 → BM 给出精确的最短递推 → 生成函数在 $x1$ 的值恰好是该无穷和文档逐步推导不依赖蒙特卡洛模拟复杂度序列模拟 $O(nm)$BM 求解 $O(n^2)$树的情形为 $O(n^2)$。同页的另外两套方法不适用于树网格图方法朴素高斯消元 $O(R^6)$、直接消元 $O(R^4)$、主元法 $O(R^3)$针对的是坐标系网格上的转移一般图方法要求强连通有向图用于对所有 $s\neq t$ 回答期望时间规模 $O(n^3)$。如果题目给的不是一棵树而是任意简单无向连通稀疏图本文的稀疏图方法可以原样使用——页面例题正是这个设定起点 $v_1$求到达 $v_n$ 的期望时间$n\leq2000$答案对随机质数取模。相关文档图上随机游走Berlekamp–Massey 算法树的基本知识【免费下载链接】OI-wiki:star2: Wiki of OI / ICPC for everyone. 某大型游戏线上攻略内含炫酷算术魔法项目地址: https://gitcode.com/GitHub_Trending/oi/OI-wiki创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表