[论文阅读报告] All pairs shortest paths using bridging sets and rectangular matrix multiplication, FOCS '98

本篇文章介绍整数边权下 (min,+) 矩阵乘、APSP 等问题的一些做法。若每个元素的权值在 [M,M]Z 中,n×nrnr×n(min,+) 矩阵乘可做到 O~(Mnω(r));有向图 APSP 可做到 O~(n2+μ(t)),其中 M=nt,μ(t)ω(r)=1+2rt 的解,当 M=O(1) 时为 O~(n2.575)(1+ϵ) 近似非负实数 (min,+) 矩阵乘可以做到 O~(nω(r)logW/ϵ),其中 W 为最大权值和最小权值的比。

如果我们想要精确计算实数矩阵上的 (min,+) 矩阵乘法,那么目前不存在 O(n3δ) 的算法,这被称为 APSP hypothesis。但是如果每个元素都是 [M,M] 中的整数,则我们有很简单的 O(n3δ) 的做法,可以做到 O~(min(n2+r,Mnω(r))),其中 ω(r)n×nrnr×n 矩阵相乘的快速矩阵乘法指数。

m=nr。我们让 ai,j=(m+1)Mai,j,bi,j=(m+1)Mbi,j,计算 C=A×B,令 ci,j=2Mmsb(ci,j),其中 msb 表示 ci,j 最高位的位置,也即 logm+1ci,j。不难验证这个做法是正确的,并且实际上计算出了每一种 a+b 的个数。这样每一次代数运算是 O~(M) 的,需要的代数运算次数是 O(nω(r)) 的,因此复杂度为 O~(Mnω(r))。如果 M 太大,也可以直接暴力计算,复杂度为 O~(n2+r)

我们能在 O~(Mnω(r)) 计算每个位置 (i,j) 中每一种 a+b 的个数,似乎是不寻常的,因为矩阵乘法加速的原理在于压缩信息,但我们似乎保留了全部的信息。这是由于 O~(Mnω(r)) 实际上并不是一个多项式复杂度,输入规模是 O(n2logM) 的。这就类似于桶排序,原本长度为 nr 的信息变为了长度为 M 的,因此保留信息只需要多付出 O~(M) 倍的时间,而 O(nω(r)) 是不变的。

如果我们同时考虑复杂度中的 Mn,那么 (min,+) 矩阵乘和 APSP 问题不是等价的。如果使用原先的归约,即使 APSP 问题中每条边边权在 [M,M]Z 中,在 log2n(min,+) 矩阵乘中,权值上限将不断增加,最终达到 nM,这样做 APSP 还不如实数边权 Dijkstra 快。

不过 APSP 有其图论性质。一条性质是,当最短路用到的边数很多时,它可选择的松弛点也会变多。我们进行 log3/2n(min,+) 矩阵乘,第 i 次只考虑松弛那些走过的边的条数不超过 (3/2)i 的最短路。可以观察到,可用的松弛点的个数是不小于 1/3 其长度的。当最短路长度很长时,我们可以随机从 V 中选取一部分点作为可能的松弛点。

假设我们在做第 i(min,+) 矩阵乘,当前的矩阵是 F,令 s=(3/2)i,将 V 中每个点以 min(1,(9lnn)/s) 的概率选进集合 B 中,计算 F=F[,B]×F[B,],将 F 中超过 sM 的元素设为 +。考虑那些长度处于 (2s/3,s] 的最短路 (u,v),使用归纳法,如果所有长度 2s/3 的最短路已经在 F 中,此时令 Puvu 向后 2s/3 个点的位置为 yv 向前 2s/3 个点的位置为 x,则 (x,y) 间隔了 22s/3s=s/3 个点,而对所有 zPxy(u,z),(z,v) 的距离不超过 2s/3,因此已经在 F 中,只要有至少一个 zB(u,v) 的最短路就在 F 中。这样的概率是

(19lnns)s/3exp(3lnn)=n3

使用 union bound,所有长度在 (2s/3,s] 中的 (u,v) 的最短路 P(2s/3,s] 都在 F 中的概率不小于 1|P(2s/3,s]|n3。将每一轮的概率一起使用 union bound,成功概率不小于 1P[0,nM]n3=1n1

s=n1r,M=nt,则这一轮的复杂度为 O~(min(sMnω(r),n2+r))=O~(min(nt+ω(r)+(1r),n2+r)) 其关于 s 的最大值在 ω(r)=1+2rt 取到。当 M=O(1) 时,查表可得,复杂度为 O~(n2.575)(2002,论文发布时)O~(n2.528)(2023,最新结果)。

对于 r=1 的情况,我们观察这个式子,发现当 M=O(n3ωδ) 时,这个算法是 O~(n3δ) 的。由于 ω2,当 M=O(n) 时,我们没法从中得到 O(n3δ) 的做法,因此他不违反 APSP 经典假设。

论文继续介绍了构造最短路与去随机化的方法,这些部分较为独立,这里不再赘述。

对于非负实数近似 (min,+) 矩阵乘,我们可以利用加法的特性给出一个十分经典的近似算法,取 RM,将权值上取整,即 ai,j=Rai,jM,进行同样的计算后再转换回来。

对于不同大小的 ai,k+bk,j,我们不能把他们都用 M 作为分母取整,因为在计算近似比时我们使用的是结果的值作为分母而非 M,这样会导致太小的 a+b 近似比太差,我们需要枚举 r[log2R,log2M]Z,用 2r 做分母。当 2r1<max(ai,j,bj,k)2r 时,有

ai,j2rai,jR<ai,j+2rR, bj,k2rbj,kR<bj,k+2rR

ci,jci,j2rai,jR+2rbj,kR<ai,k+bk,j+2r+1R=ci,j+2r+1R(1+4R)ci,j

R=4ϵ 即可做到 1+ϵ 近似。复杂度为 O~(nωlogM/ϵ)。对于 APSP,由于我们要做 logn 轮,每一轮的误差会相乘,即 (1+4R)logn,令 R=O(lognln(1+ϵ))=O~(1/ϵ) 即可。

我们看到,将 M 变为 4logM/ϵ 利用的是不同大小的 a+b 的采样密度不同,我们总是把 (2r1,2r] 分成 R 份,因此采样密度是指数级增长的。在无权图上这一点会更加容易观察到:我们只用计算 01 矩阵乘法 A(1+ϵ)i,A(1+ϵ)i+1(u,v) 的值是否从 0 变为 1 便可以知道是否有 δ(u,v)((1+ϵ)i,(1+ϵ)i+1]。复杂度为 O(nωlog1+ϵn)=O~(nω/ϵ)

如果原先权值是非负实数,我们可以将所有的权值放缩,使得最小的权值为 1(实际上由于边界问题,2 更好)。这样便囊括在了 2r 的枚举中。

posted @   shiys22  阅读(162)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?
历史上的今天:
2023-10-05 [机器学习] 1. 梯度下降 Gradient Descent 与随机梯度下降 Stochastic Gradient Descent
点击右上角即可分享
微信分享提示