首页 > 其他分享 >[论文阅读报告] Fast 2-Approximate All-Pairs Shortest Paths, SODA '24

[论文阅读报告] Fast 2-Approximate All-Pairs Shortest Paths, SODA '24

时间:2024-10-08 14:21:59浏览次数:8  
标签:24 Paths Pairs frac log epsilon leq tilde omega

本篇文章介绍 \(\tilde O(n^{2.032})\) 的无向无权图全源最短路 stretch 2 近似算法和 \(\tilde O(n^{\frac 94})\) 的组合算法,以及 \(\tilde O(n^{2.214} (1 / \epsilon)^{O(1)} \log W)\) 的非负整数边权 stretch \((2 + \epsilon)\) 近似算法。其中 \((1 / \epsilon)^{O(1)}\) 表示的是 \(O\left((1 / \epsilon)^{\kappa}\right)\),\(\kappa\) 是一个常数,但是精确值不方便表示(取决于 \(\omega\) 和 \(2\) 的距离)。

\(\tilde O(n^{2.032})\) 算法的过程与 \(\tilde O(n^{2.2867})\) 无权图上的 surplus 2 近似 几乎相同,仅仅有两个改动。

剩下的算法过程完全沿用。

为什么 surplus 2 的算法可以用于 stretch 2 呢?因为对于长度 \(\geq 2\) 的最短路,surplus 2 比 stretch 2 更强,而长度 \(< 2\) 的最短路是不用算的。

原算法描述如下

将 \(\delta(V \times D_1)\) 视作矩阵,则我们需要求出 \(\delta(V \times D_1) \star \delta(D_1 \times V)\),其中 \(\star\) 表示 \((\min, +)\) 矩阵乘法。对一般的 \((\min, +)\) 矩阵乘,没有 \(O(n^{3 - \Omega(1)})\) 的做法,但是如果我们将节点序列按照图的任意一棵生成树的欧拉序排列(此时一个点会出现多次),则 \(\delta(D_1 \times V)\) 的上下相邻两个元素的差不超过 \(1\),对于拥有这样特殊性质的 \((\min, +)\) 矩阵乘(其中一个矩阵为 Row/Column Bounded-difference),有 \(\tilde O(n^{(2 + r + \omega(r))/2})\) 的做法,其中 \(\omega(r)\) 表示 \(n \times n^r\) 矩阵和 \(n^r \times n\) 矩阵做正常矩阵乘法的指数 [Chi-Duan-Xie-Zhang '22]。

算法 0 (无权图上的 surplus \(2\) 近似 III [Deng-Kirkpatrick-Rong-V. Williams-Zhong '22])

对图 \((V, E)\),令

  • \(d_0 \leq d_1 \leq \ldots \leq d_k = n\),\(k\) 待定。

  • \(V_i\) 是度数 \(\geq d_i\) 的所有点。

  • \(D_i\) 是一个大小为 \(\tilde O\left(\frac n{d_i}\right)\) 的关键点集,使得每一个 \(V_i\) 中的点都与至少一个 \(D_i\) 中的点相邻。

  • \(E_i\) 是 \(u \notin V_i \vee v \notin V_i\) 的所有边 \((u, v)\)。\(|E_i|\leq n{d_i}\)。

  • \(E^*\) 是每个 \(V_i\) 中的点和任一 \(D_i\) 中的点连接的边集。\(|E^*| = \tilde O(n)\)。

用 BFS 在 \((V, E_i \cup E^*)\) 上计算 \(\delta_i(D_{i-1} \times V)\),\(1 \leq i \leq k\),时间复杂度为 \(\tilde O\left(\frac{n^2d_i}{d_{i-1}}\right)\)。

对 \((V, E_0)\) 应用算法 1 得到 \(d'(u, v)\)。时间复杂度 \(O\left(n^2d_0^{\frac 12}\right)\)。

求出 \(\min\limits_{\substack{w' \in D_i \\ 1 \leq i \leq k}}\{\delta_i(u, w') + \delta_i(w', v)\}\),假设 \(d\) 的选取足够分散,使得 \(k = o(n^\varepsilon)\),则复杂度为

\[\tilde O\left(n^{(2+(1 - \log_n d_0)+\omega(1 - \log_n d_0))/2}\right) \]

考虑将 \(d(u, v) = \min\left(d'(u, v), \min\limits_{\substack{w' \in D_i \\ 1 \leq i \leq k}}\{\delta_i(u, w') + \delta_i(w', v)\}\right)\) 作为答案。

使用类似上文的推导可知这是一个 surplus \(2\) 近似。

时间复杂度为

\[\tilde O\left(n^2d_0^{\frac 12} + n^2\left(\frac{d_1}{d_0} + \frac{d_2}{d_1} + \ldots + \frac{d_{k-1}}{d_{k-2}} + \frac n{d_{k-1}}\right) + n^{(3-\log_n d_0+\omega(1 - \log_n d_0))/2}\right) \]

可知 \(\frac{d_i}{d_{i-1}}\) 都相等,令他们均为 \(2\),则 \(k = O(\log n)\),符合要求。剩下的便是解方程,令 \(d_0 = n^{1 - r}\),则方程为 \(\frac 52 - \frac 12 r = (2 + r + \omega(r))/2\),即 \(2r + \omega(r) = 3\),\(\omega(r)\) 是一个很复杂的函数,查表可以估计出 \(r \approx 0.427\),最终复杂度 \(\tilde O(n^{2.2867})\)。

有两部分产生了复杂度,一部分是 base case 的 \(\tilde O(n^{\frac 52 - \frac 12 r})\),另一部分是 \((\min, +)\) 矩阵乘 \(\tilde O(n^{(2 + r + \omega(r)) / 2})\)。

现在,在 stretch 2 中,我们可以将第一部分改为 \(\tilde O(n^{\frac 52 - r})\),第二部分改为 \(\tilde O(n^{\omega(r)})\),这样便得到了 \(\tilde O(n^{2.032})\)。

当我们得到了一个 \(\tilde O(n^{\omega} / \epsilon)\) 的 \((1 + \epsilon)\) 近似的 \((\min, +)\) 矩阵乘算法时,我们可以令 \(\epsilon = 1 / \log n\),这样复杂度为 \(\tilde O(n^{\omega})\),近似比为 \(2 + 1 / \log n\)。当 \(\delta(u, v) < \log n\) 时,因为要向下取整,这是一个 \(2\) 近似,当 \(\delta(u, v) \geq \log n\) 时,我们可以用 \(\tilde O(n^2)\) surplus \(\log n\) 的做法。

这个做法相当简单,我们原先的 \(\tilde O(n^{7/3})\) surplus \(2\) 的算法中会用 BFS 计算每一层的 \(\delta(D_i \times V)\),时间复杂度为 \(O(m |D_i|)\),但现在我们不再每次重新计算,而是直接复用上一轮的结果,这样每一轮的误差会累积。对 surplus \(2(k-1)\) 近似我们可以分 \(k\) 层。

算法 1 (无权图上的 \(\tilde O(n^{2 - 1 / k}m^{1/k})\) surplus \(2(k - 1)\) 近似)

对图 \((V, E)\),令

  • \(d_i = (m / n)^{1 - i / k}(\log n)^{i / k}, 1 \leq i \leq k\)。

  • \(V_i\) 是度数 \(\geq d_i\) 的所有点。

  • \(D_i\) 是一个大小为 \(\tilde O\left(\frac n{d_i}\right)\) 的关键点集,使得每一个 \(V_i\) 中的点都与至少一个 \(D_i\) 中的点相邻。特别地,令 \(D_k = V\)。

  • \(E_i\) 是 \(u \notin V_i \vee v \notin V_i\) 的所有边 \((u, v)\)。\(|E_i|\leq n{d_i}\)。

  • \(E^*\) 是每个 \(V_i\) 中的点和任一 \(D_i\) 中的点连接的边集。\(|E^*| = \tilde O(n)\)。

从 \(1\) 到 \(k\) 枚举 \(i\),对每个 \(w' \in D_i\),在 \((V, E_{i - 1} \cup E^* \cup d_{i - 1}(\{w'\} \times V))\) 上跑 Dijkstra。

考虑将 \(d_k(u, v)\) 作为答案。

使用归纳法。使用类似 \(\tilde O(n^{7/3})\) surplus \(2\) 算法的推导可知,最短路上存在 \(w\),使得 \((w, w') \in E^*, w' \in D_{i - 1}\),因此 \(u \to w'\) 可以通过 \(d_{i - 1}\) 到达,\(w' \to w \to v\) 可以通过 \(E^* \cup E_{i - 1}\) 到达。当 \(d_{i - 1}\) 的误差为 \(e\) 时,\(d_i\) 的误差为 \(e + 2\)。

由于 \(D_k = V\),所有 \(d_k(u, v)\) 的误差都不会超过 \(2(k - 1)\)。因此这是一个 surplus \(2(k - 1)\) 近似。

复杂度为 \(\tilde O\left(\frac n{d_1} \cdot m + \sum_{i=2}^k \frac n{d_i} (nd_{i - 1} + n)\right) = \tilde O\left(kn^2 (m / n)^{1 / k}\right) = \tilde O(n^{2 - 1/k}m^{1/k})\)。

我们在原算法的 \(\log n\) 层每一层都运行一遍 \(1 + \frac 1{\log n}\) 近似 \((\min, +)\) 矩阵乘,最后运行一遍 \(\tilde O(n^2)\) surplus \(\log n\) 近似,将两个结果取较小值。

算法 2 (无向无权图上的 stretch \(2\) 近似)

对图 \((V, E)\),令

  • \(d_0 \leq d_1 \leq \ldots \leq d_k = n\),\(k\) 待定。

  • \(V_i\) 是度数 \(\geq d_i\) 的所有点。

  • \(D_i\) 是一个大小为 \(\tilde O\left(\frac n{d_i}\right)\) 的关键点集,使得每一个 \(V_i\) 中的点都与至少一个 \(D_i\) 中的点相邻。

  • \(E_i\) 是 \(u \notin V_i \vee v \notin V_i\) 的所有边 \((u, v)\)。\(|E_i|\leq n{d_i}\)。

  • \(E^*\) 是每个 \(V_i\) 中的点和任一 \(D_i\) 中的点连接的边集。\(|E^*| = \tilde O(n)\)。

用 BFS 在 \((V, E_i \cup E^*)\) 上计算 \(\delta_i(D_{i-1} \times V)\),\(1 \leq i \leq k\),时间复杂度为 \(\tilde O\left(\frac{n^2d_i}{d_{i-1}}\right)\)。

对 \((V, E_0)\) 应用 stretch \(2\) 算法得到 \(d'(u, v)\)。时间复杂度 \(\tilde O\left(n^{3/2}d_0\right)\)。

对 \((V, E)\) 应用 surplus \(\log n\) 算法得到 \(d''(u, v)\),时间复杂度 \(\tilde O(n^2)\)。

求出 \(\min\limits_{\substack{w' \in D_i \\ 1 \leq i \leq k}}\{\delta_i(u, w') + \delta_i(w', v)\}\) 的近似值,假设 \(d\) 的选取足够分散,使得 \(k = o(n^\varepsilon)\),则复杂度为

\[\tilde O\left(n^{(2+(1 - \log_n d_0)+\omega(1 - \log_n d_0))/2}\right) \]

考虑将 \(d(u, v) = \min\left(d'(u, v), d''(u, v), \min\limits_{\substack{w' \in D_i \\ 1 \leq i \leq k}}\{\delta_i(u, w') + \delta_i(w', v)\}\right)\) 作为答案。

使用类似上文的推导可知这是一个 stretch \(2\) 近似。

时间复杂度为

\[\tilde O\left(n^{3/2}d_0 + n^2\left(\frac{d_1}{d_0} + \frac{d_2}{d_1} + \ldots + \frac{d_{k-1}}{d_{k-2}} + \frac n{d_{k-1}}\right) + n^{\omega(1 - \log_n d_0)}\right) \]

可知 \(\frac{d_i}{d_{i-1}}\) 都相等,令他们均为 \(2\),则 \(k = O(\log n)\),符合要求。剩下的便是解方程,令 \(d_0 = n^{1 - r}\),则方程为 \(\frac 52 - r = \omega(r)\),查表可以估计出 \(r \approx 0.4682\),最终复杂度 \(\tilde O(n^{2.032})\)。

如果我们想要一个组合算法,即不使用快速矩阵乘法的做法,那就是把 \(\tilde O(n^{\omega(r)})\) 改为 \(\tilde O(n^{2 + r})\),也即使用暴力矩阵乘。这样得到的式子为 \(\frac 52 - r = 2 + r\),最终复杂度为 \(\tilde O(n^{9/4})\)。这相当于只应用了来自 \(\tilde O(m \sqrt n)\) 算法的加速。

对于 \((2 + \epsilon)\) 近似,我们沿用 \(\tilde O(m \sqrt n)\) 的 \(2\) 近似算法。不过把 \(s \in S_i\) 上的 Dijkstra 改为对 \(\delta(S_i \times V)\) 的 \((1 + \epsilon)\) 近似,这称为多源最短路 (Multi-Source Shortest Path) 近似.

\((1 + \epsilon)\) MSSP 近似的做法和 \((1 + \epsilon)\) 的 APSP 近似非常接近,因为 \(\omega(r, 1, 1) = \omega(1, r, 1)\)。唯一不同的一点在于,当我们计算 \(A_{S \times V} \times A_{V \times V}^i\)(\(A_{X \times Y}\) 为集合 \(X\) 到 \(Y\) 的邻接矩阵) 时,我们不能使用快速幂计算 \(A_{V \times V}^{2^i}\),而是只能每次 \((A_{S \times V} \times A_{V \times V}^{i - 1}) \times A_{V \times V}\),因此复杂度会多一个 \(n\),这是我们不想要的。

有一类问题指出我们可以在原图上加少量的边使得所有 \((u, v)\) 都可以经过一条长度不超过 \(\beta\) 的路,使得其权值不超过 \((1 + \epsilon)\) 倍的最短路。称这样的边集为 hopset。

定理 对任意带权无向图 \(G = (V, E)\),\(\kappa > 1\),存在一个时间复杂度为 \(\tilde O(m n^{1 / \kappa})\) 算法计算 \((1 + \epsilon, \beta)\)-hopset \(H\),使得 \(\beta = \left(\frac \kappa \epsilon\right)^{O(\kappa)}, |H| = O(n^{1 + 1 / \kappa})\)。

我们令每次矩阵乘法的分辨率 \(R = \beta / \ln(1 + \epsilon)\),这样最终的近似比可以达到 \((1 + \epsilon)\)。复杂度为 \(\tilde O(n^{\omega(r)} (\kappa / \epsilon)^{O(\kappa)}\log W + mn^{1 / \kappa})\)。

如果 \(\omega(r) = 2\),\(\epsilon\) 是固定的常数,我们可以对不同的 \(n\) 选择不同的 \(\kappa\),让 \(\beta = \tilde O(1)\),比如 \(\log \log n / \log \log \log n\),这样 \(\kappa^\kappa \leq \log n\),复杂度为 \(\tilde O(n^2 \log W (1 / \epsilon)^{O(\log \log n / \log \log \log n)})\)。

否则,我们可以选择足够大的常数 \(\kappa\),使得 \(O(mn^{1 / \kappa}) \leq O(n^{\omega(r)})\),此时复杂度为 \(\tilde O(n^{\omega(r)}(1 / \epsilon)^{O(1)} \log W)\)。

分两种情况讨论是因为我们也不知道是否有 \(\omega = 2\),而对于后一种情况,为了保证复杂度是 \(n^{\omega(r)}\) 级别的,\(\omega(r)\) 越小时 \(\kappa\) 越大,\(\omega = 2\) 时我们没有办法做到 \(\tilde O(n^2(1 / \epsilon)^{O(1)} \log W)\)。

就现在而言,我们假设 \(\omega \neq 2\)。这样,在 APSP \((2 + \epsilon)\) 近似中,当 \(|S| = n^r\) 时,计算 \(S, \operatorname{ball}\)、枚举 \(y\) 的复杂度为 \(\tilde O(mn^{1 - r}) = \tilde O(n^{3 - r})\),运行 \(S_k\) 的复杂度为 \(\tilde O(n^{\omega(r)} (1 / \epsilon)^{O(1)} \log W)\)。平衡后的复杂度为 \(\tilde O(n^{2.214} (1 / \epsilon)^{O(1)} \log W)\)。

标签:24,Paths,Pairs,frac,log,epsilon,leq,tilde,omega
From: https://www.cnblogs.com/shiys22/p/18451558

相关文章

  • SS241007C. 步行(walk)
    SS241007C.步行(walk)题意给你一个\(n\le3\times10^5\)个结点的树,每个结点有一个权值\(a_i\)。有\(m\le1.5\times10^6\)次询问,每次删除一条边,然后再连上一条边。如果修改后的图不是树输出无解。否则找出一条路径,满足每个点恰好经过\(a_i\)次,问路径权值最大是多少......
  • 牛客网1000 大厂Java 面试题大全(2024 最新版)
    很多Java工程师的技术不错,但是一面试就头疼,10次面试9次都是被刷,过的那次还是去了家不知名的小公司。问题就在于:面试有技巧,而你不会把自己的能力表达给面试官。应届生:你该如何准备简历,面试项目和面试说辞?Spring底层逻辑是什么?1-3年经验的程序员:面试中你该讲哪些值钱......
  • C#/.NET/.NET Core技术前沿周刊 | 第 8 期(2024年10.01-10.06)
    前言C#/.NET/.NETCore技术前沿周刊,你的每周技术指南针!记录、追踪C#/.NET/.NETCore领域、生态的每周最新、最实用、最有价值的技术文章、社区动态、优质项目和学习资源等。让你时刻站在技术前沿,助力技术成长与视野拓宽。欢迎投稿,推荐或自荐优质文章/项目/学习资源等。......
  • 书籍-《Docker深度探索(2024版)》
    书籍:DockerDeepDive:ZerotoDockerinASingleBook,2024Edition作者:NigelPoulton出版:NielsonBookServices编辑:陈萍萍的公主@一点人工一点智能书籍介绍本书涵盖了Docker生态系统中所有最新的趋势和技术,包括DockerScout、DockerInit、DockerDebug以及Wasm容器。本书深入浅......
  • NewStarCtf 2024第一周writeup
    有几道题没写出来,但还是希望能够帮到大家理解更多的CTF知识Signin操作内容:做选择题得出flag。flag值:flag{I_Agr3e_to_FoL10w_th3_ru1es_c41fa97d}MISC兑换码操作内容:题目提示flag在图片下方,010修改图片宽度,得到flag。flag值:flag{La_vaguelette}MISCLabyrinth操......
  • 24南邮科协电子部笔试题 模拟基础
    第一题仅用KVL做题步骤:1.规定正方向。不妨规定顺时针为正方向。规定方向的主要目的是确定各个元器件的电压是降压还是升压。2.假设各个未知元器件的电压值和正负方向。如图3.数清回路数量,以回路为单位列KVL方程以回路1列KVL方程,升压为负,降压为正,代数和为0。不妨按照......
  • NX2406 草图——投影曲线
    投影曲线使用投影曲线命令可将外部曲线、边或点投影到草图平面上,以将它们合并到轮廓中。将外部曲线投影到草图中将不在当前草图中的几何图元投影到当前草图以便使用,投影结果与原始图元动态关联。......
  • 2024 Oct
    Question1.[Usaco2004Dec]FenceObstacleCourse给定\(n\)个栅栏,第\(i\)个栅栏的范围是\(([L_i,R_i],i)\),初始Bessie位于\((S,n+1)\)处,不能从中间跨过栅栏,但是端点处可以,问到达\((0,0)\)的横向移动距离最小值。\(n\leq5\times10^4,-10^5\leqL_i<R_i\leq10......
  • PhpStrom2024.1永久激活及激活过程中出现的问题
    PhpStrom2024.1及激活工具下载激活工具:https://www.alipan.com/s/Aj5EEMxgLZCPhpStrom:https://www.alipan.com/s/cx69krtGXaw PhpStrom安装与激活1、下载并根据提示安装PhpStrom2、下载激活工具并将文件夹放在常用位置(文件夹名称与文件夹路径不可有中文)3、打开scripts文件......
  • 2024-10-8
    X9MQ8ML8U7-eyJsaWNlbnNlSWQiOiJYOU1ROE1MOFU3IiwibGljZW5zZWVOYW1lIjoic2lnbnVwIHNjb3R0ZXIiLCJhc3NpZ25lZU5hbWUiOiIiLCJhc3NpZ25lZUVtYWlsIjoiIiwibGljZW5zZVJlc3RyaWN0aW9uIjoiIiwiY2hlY2tDb25jdXJyZW50VXNlIjpmYWxzZSwicHJvZHVjdHMiOlt7ImNvZGUiOiJJSSIsImZhbGxiYWNrRGF0......