黄文睿
221180115 计算机拔尖班
本次 OT 先介绍一种可以处理非负权图的 $L$-限定距离 SSSP的并行算法,work 为 $\tilde O (m)$,span 为 $n^{1/2+o(1)}L^{1/2}$ WHP。
$L$-限定距离 SSSP: 只计算途中 $dist(s, v)\le L$ 的 $v$ 的最短距离 $v.d=dist(s, v)$,而将 $dist(s, v)>L$ 的 $v$ 求得的 $v.d=\infty$。
WHP: With high probability,有 neglible 的概率失败。
然后在此基础上再介绍基于 Goldberg's algorithm 的整数权的 SSSP 并行算法。设图中所有权的边权均 $\ge -L$,则 work 为 $\tilde O(m\sqrt n\log N)$,span 为 $n^{5/4+o(1)}$ WHP。[1]
“单(多)点连通性判断问题”:给定图 $G=\langle V, E\rangle$ 和起点集合 $S\subseteq V$,判定图中哪些点可以从 $S$ 中某个点可达。
在该文[2]中给出了 $\tilde O(m)$ work 和 $n^{1/2+o(1)}$ span WHP 的结果。
“逼近 SSSP 问题(ASSSP)”:给定图 $G=\langle V, E\rangle$ 和起点 $s$,要求求得“过估距离” $d'(v)$ 满足 $dist(s, v)\le d'(v)\le (1+\epsilon)dist(s, v)$。
对于固定的 $\epsilon$,该文[3]给出了 $\tilde O(m)$ work 和 $n^{1/2+o(1)}$ span WHP 的结果。
设 $D$ 是大于 $L$ 的最小的 $2$ 的幂次。该算法先运行一次 ASSSP with $\epsilon=1$。对于 $d'(v)\ge 2D$ 可知 $dist(v) \ge D>L$,这些点一定不用在 $L$-限定距离 SSSP 中考虑,直接设为 $v.d=\infty$。剩下的点的 $dist(v)$ 一定落在 $[0, D)$ 区间。对于 $d'(v)=0$ 的,可知 $dist(v)=0$。
该算法正是依赖于“逐渐减小范围”的方法来求出 $dist(s, \cdot)=d$ 的所有顶点:假设已经找到了 $dist(s, \cdot)<d$ 的所有顶点,并不再考虑。那么,剩下的顶点可以另构图,使得整体的 $dist'(s', \cdot)$ 都减小 $d$:对于图中所有的边 $(u, v)$ 满足 $dist(s, u)<d$,$dist(s, v)\ge d$,相应地建边 $(s', v)$ 且
$$ w'(s', v)=w(s, v)+dist(s, u)-d. $$
假设当前考虑 $v$ 的 $dist(s, v)$ 范围是 $[d, d+2^i)$,则在作这个变换后,可以知道对于这些 $v$ 有 $dist'(s', v)\in [0, 2^i)$。使用 $\epsilon<1/4$ 的 ASSSP 后,可以根据得到的 $d'$ 分为三类(注意上界为 $5/4\cdot 2^i$):
于是划分成了 $2^{i-1}$ 长度的三小段。在 $\log L$ 次后即可计算完成 $dist(s, v)=d$ 的顶点。
简要分析可知,该算法做到了 $\tilde O(m)$ work 和 $n^{1/2+o(1)}L$ span WHP。在加上一定的随机赋优先级后,有着期望 $\tilde O(m)$ work 和 $n^{1/2+o(1)}\sqrt L$ span WHP。
Goldberg 可以解决的问题:解决整数权(可以有负权)的 SSSP 问题。设图中所有边权 $\ge -N$,则 Goldberg 算法的时间复杂度为 $O(m\sqrt n\log N)$。
该文[1]对其并行化后,得到了 $\tilde O(m\sqrt n\log N)$ work,$n^{5/4+o(1)}$ span WHP 算法,并行率至少为 $m^{1/4-o(1)}$。
Goldberg 的核心思想是构造一个“价值函数” $p$ 满足
$$ \forall (u, v)\in E, p(v)\le p(u)+w(u, v). $$
构造新图 $G'=\langle V, E, w'\rangle$,在 $G'$ 中
$$ \forall (u, v)\in E, w'(u, v)=w(u, v)+p(u)-p(v). $$
可知 $w'(u, v)\ge 0$。
而对于原图中的一条路径 $p=\langle e_1, e_2, \cdots, e_m\rangle$,可知
$$ \begin{aligned} w'(p)&=\sum_{i=1}^{m-1}w'(e_i) \ &=\sum_{i=1}^{m-1}[w(e_i)+p(u_i)-p(v_i)] \ &=w(p)+p(s)-p(t). \end{aligned} $$ 其中 $s, t$ 分别是 $p$ 的起点和终点。故 $G'$ 中 $s,v$ 最短路对应于 $G$ 中的最短路。由于 $G'$ 是非负权图,故可以使用 Dijkstra 算法求解。
问题转化为了求出满足条件 $p$。Goldberg 算法对图中的最小边权做递推。最终要求的是满足 $\forall (u, v), w(u, v)> -N$ 的 $p$,记作 $p_{N}(G)$。方便起见,设 $N$ 是 $2$ 的幂次。递归方案如下:
下面只需要对该边权 $\ge -1$ 的图 $G_p$ 调整 $p$ 的值即可。
先求 $G_p$ 的强连通分量并缩点,得到一个 DAG $G'_p$。若某个 SCC 中含有负边,则图中显然存在负环。记 $G'_p$ 中有入边为 $-1$ 的点称为“负点”,其集合记为 $V_n$,可以按以下方法逐渐缩小 $V_n$ 最终致其为空集:
取 $x\in V_n$,记 $x$ 可达的所有点为 $S_x$,将 $S_x$ 的所有点 $p$ 值降低 $1$。这样以后 $x$ 就不再是负点了。
由于每次都需要重新求 SCC,时间复杂度为 $O(mn\log N)$。
注意到最长反链长等于最小链覆盖:DAG 中最长链和最长反链至少有一个超过 $O(\sqrt k)$,其中 $k$ 是 $V_n$ 的大小。如果我们提出一个一次性消除链的算法,一个一次性消除反链的算法,就可以解决了。
寻找最长链/最长反链是容易的:构造超级源点 $s$ 并运行一次 DAG 上的 SSSP(时间 $O(m)$),设距离为 $-d$ 的点集为 $V_d$,得到 $V_0, V_1, \cdots, V_\tau$。若 $\tau\ge \sqrt k$,则找到了一条长度 $\ge \sqrt k$ 的链;否则由鸽巢原理,必然存在 $|V_i|\ge \sqrt k$,这是一条反链。
于是,每次都会使得问题规模 $k'\gets (1-\frac{1}{\sqrt k})\cdot k$,可以知道在 $O(\sqrt k)$ 轮后 $V_n$ 变为空集,每轮复杂度 $O(m)$,一共要进行 $O(\log N)$ 次递推。最后还需进行一次 $O(n\log m)$ 的 Dijkstra。Goldberg 算法复杂度故为 $O(m\sqrt n\log N)$。
外面的 $O(\log N)$ 次递推,以及中间的 $\sqrt n$ 次 $V_d$ 迭代仍然保持顺序执行,如此,若内部的每次迭代可以做到 span $f$ WHP,并保持 work $\tilde O(m)$,则最后可以得到 $\tilde O(m\sqrt n\log N)$ work 和 $f\cdot n^{1/2}\log N$ span WHP 的算法。在此处,我们使用得到 $f=n^{3/4+o(1)}$ WHP 的算法。只需要注意到
综上,最终我们得到了一个 $O(m\sqrt n\log N)$ work,$n^{5/4+o(1)}\log N$ span 的基于 Goldberg 算法的并行算法。
[1] Cao, N., Fineman, J. T., & Russell, K. (2022, July). Parallel Shortest Paths with Negative Edge Weights. In Proceedings of the 34th ACM Symposium on Parallelism in Algorithms and Architectures (pp. 177-190).
[2] Jambulapati, A., Liu, Y. P., & Sidford, A. (2019, November). Parallel reachability in almost linear work and square root depth. In 2019 IEEE 60th Annual Symposium on Foundations of Computer Science (FOCS) (pp. 1664-1686). IEEE.
[3] Cao, N., Fineman, J. T., & Russell, K. (2020, June). Efficient construction of directed hopsets and parallel approximate shortest paths. In Proceedings of the 52nd Annual ACM SIGACT Symposium on Theory of Computing (pp. 336-349).
[4] Blelloch, G. E., Gu, Y., Shun, J., & Sun, Y. (2020). Parallelism in randomized incremental algorithms. Journal of the ACM (JACM), 67(5), 1-27.