[论文阅读报告] Linear-Size Hopsets with Small Hopbound, and Distributed Routing with Low Memory
本篇文章介绍 \(O(n^{1 + 1 / \kappa})\) 的 \((\beta, \epsilon)\)-hopset 做法,相比于 Hopsets with Constant Hopbound, and Applications to Approximate Shortest Paths, FOCS '16,本篇论文去掉了边数中的 \(\log \Lambda\)(或 \(\log n\))。作者将卖点归结为,如果 \(\kappa = \log n\),那么即使 \(\beta\) 与 \(n\) 有关,但边集大小为线性。所以也可以说:本篇文章介绍 \(O(n)\) 的 \((\beta, \epsilon)\)-hopset 做法,其中 \(\beta = O\left(\frac{\log \log n}{\epsilon}\right)^{\log \log n + O(1)}\),相较于之前的线性 hopset 做法,\(\beta\) 有指数级的提升。
这篇论文的做法完全基于原来的做法,只是多了一些观察。不过论文借此采取了完全不同的叙述方式,不用较为复杂的 superclustering-interconnection,而是将其归结为 distance oracles(也就是我所谓的分层度数分治),但正如上一篇论文所说的,两者的思想并无太差的差别。
原来的做法对每个 \(\hat R = 2^{k + 1}\),对距离在 \((\hat R / 2, \hat R]\) 中的路径单独构建了一个 hopset,最后将所有得到的集合取并。这样会导致边集大小乘 \(\log \Lambda\),其中 \(\Lambda\) 表示图的直径,论文最后也给出了将其优化为 \(\log n\) 的方法,但无论如何,这样的做法导致边集大小没法线性。但在上一篇文章中,我们也讨论过每一个 hopset 之间的区别只有 \(\delta_0\) 的取值,而 \(\delta\) 并不会影响边集大小。
观察:如果我们把每一层的 hopset 放在一起看,我们发现他们的重合度非常高。
原算法过程如下
|
算法 0 (无向带权图 \(O(n^{1 + 1 / \kappa} \log \Lambda)\) 的 \((\beta, \epsilon)\)-hopset) 令 \(d_G^{(t)}(u, v)\) 表示使用至多 \(t\) 条边时 \(u, v\) 在 \(G\) 中的最短路。 我们对距离在 \((2^k, 2^{k + 1}]\) 中的路径构建一个 hopset \(H_k\)。\(1 \leq k \leq \log \Lambda\)。令 \(\hat R = 2^{k + 1}\)。对 \(\hat R \leq \beta\),\(H_k = \emptyset\) 即可,因此我们考虑 \(k > \log \beta - 1\)。
将 \(H = \bigcup_{k} H_k\) 作为最终的边集。 |
其中,每一次关键点采样的方式是相同的,我们可以将其统一,在一开始先固定每一层的关键点,令 \(V = A_0 \supseteq A_1 \supseteq \ldots \supseteq A_k = \emptyset\),\(A_{i + 1}\) 由 \(A_i\) 的元素以 \(p_i = n^{-2^i \nu}\) 的概率加入得到,其中 \(\nu = 1 / (2^k - 1)\)。
那么每一个 \(H_i\) 的每一层 superclustering 都是限制深度的 dijkstra,我们可以对每一层只进行一次不限制深度的 dijkstra,这样所有的边都被包含了。
对于一个点 \(u \in A_j \setminus A_{j + 1}\),令 \(p(u)\) 表示 \(A_{j + 1}\) 中离 \(u\) 最近的点,那么每一个 \(H_i\) interconnection 的效果是,如果 \(d_G(u, p(u)) \leq \delta_{i, j}\),那么不连边,否则将 \(u\) 距离不超过 \(\delta_{i, j}\) 的所有 \(A_j\) 中的点连边,而对于同一个 \(j\),\(\delta_{i, j}\) 是 \(\delta_{i, 0}\) 的线性函数,也即 \(\hat R\) 的线性函数,也就是说,对于相同的 \(u, j\),每个 \(i\) 的连边是向后包含的关系,直至突然某个 \(i^*\) 连边为空。如果 \(\hat R\) 是连续取值的而非每次翻一倍,那么所有连边的并恰好就是 \(\{v \in A_i \mid d(u, v) < d_G(u, p(u))\}\)。
令 \(B(u) = \{v \in A_i \mid d(u, v) < d_G(u, A_{i + 1})\} \cup \{p(u)\}\),则 \(H' = \{(u, v) \mid u \in V, v \in B(u)\}\) 是 \(H\) 的超集,因此是一个 \((\beta, \epsilon)\)-hopset。
而 \(\mathbb E|H'|\) 的分析与之前的做法是类似的,连边条数是一个关于邻域度数的几何分布,因此大小仍为 \(O(n^{1 + 1 / \kappa}\log \kappa)\),通过调整 \(p_i\) 可以做到 \(O(n^{1 + 1 / \kappa})\)。
这里 \(V = A_0 \supseteq A_1 \supseteq \ldots \supseteq A_k = \emptyset\) 以及 \(B(u)\) 就是 distance-oracles 的基本元素。
如果我们就按照 \(\hat R\) 连续取值的思路来重新证明近似比,那么我们可以不用提及 superclustering-interconnection,得到一个更简洁的证明。对 \(x, y\),令 \(\hat R = d_G(x, y)\),考虑将原先定理中的所有 \(\hat R\) 替换。
由于现在每个点都被下一层的关键点访问到了,我们没法用显式的 spanned partition 来描述 \(x, y\) 最短路上的每一个点在哪一层,因此我们采用 OR 的说法,要么 \(d_{H'}(x, y)\) 已经正确,要么最短路上的点还没有匹配到正确的层数。
引理 1 对任意 \(0 < \delta < 1 / (8k)\),任意 \(x, y \in V\),\(0 \leq i \leq k - 1\),两条至少有一条成立:
-
\(d_{G \cup H}^{(3 / \delta)^i}(x, y) \leq (1 + 8 \delta i) \cdot d(x, y)\);
-
存在 \(z \in A_{i + 1}\) 使得 \(d_{G \cup H}^{(3 / \delta)^i}(x, z) \leq 2 d_G(x, y)\)。
证明 使用归纳法。当 \(i = 0\) 时,如果 \(x \in A_1\),那么令 \(z = x\) 即可;否则如果 \(y \in B(x)\),那么 \((x, y) \in H\);否则 \(x \in A_0 \setminus A_1, y \notin B(x)\),则有 \(d_G(x, y) \geq d_G(x, p(x))\),令 \(z = p(x)\) 即可。
若对 \(i\) 成立,考虑 \(i + 1\)。将 \(x, y\) 的最短路分为 \(1 / \delta\) 段,每段长度不超过 \(\delta \cdot d_G(x, y)\)(由于 \(\hat R = d_G(x, y)\),按长度划分和按段数划分均可),如果每一段都满足 1. 则将这些路拼在一起即可,否则令 \((u_l, v_l), (u_r, v_r)\) 为最左和最右的不满足 1. 的小段,\(z_l, z_r\) 为对应的 \(A_{i + 1}\) 中的点。
令 \(z = p(z_l) \in A_{i + 2}\),若 \(z_r \in B(z_l)\),则 \((z_l, z_r) \in H'\),
否则 \(d_G(z_l, z) \leq d_G(z_l, z_r)\),
(对应 \(z_l, z_r\) 是两个 \(A_{i + 1}\) 的 cluster 中心,他们可能已经是 spanned partition 中的,也可能他们被 \(A_{i + 2}\) 的关键点 superclustering 了)
最后由于 \(A_k = \emptyset\),所有的 \(x, y\) 只能是满足 1.,因此令 \(\delta = \epsilon / (8k)\) 即可得到结论。
定理 1 对任意的无向带权图 \(G\) 和 \(k\),存在大小为 \(O(n^{1 + 1 / (2^k - 1)})\) 的对任意的 \(0 < \epsilon < 1\) 都生效的 \((\beta, \epsilon)\)-hopset \(H\),其中 \(\beta = O(k / \epsilon)^k\)。
浙公网安备 33010602011771号