Let G = (V, E) be a weighted undirected graph, with n vertices. A distance oracle is a data structure that can quickly answer distance queries, with some stretch factor. A seminal work of Thorup and Zwick, 2005, given an integer k β₯ 1, provides such an oracle with stretch 2k-1, query time O (k), and size O (kβ n^1+1/k). Furthermore, this oracle can also report a path in G corresponding to the returned distance. In this paper we focus on vertex-labeled graphs, in which each vertex is given a label from a set L of size π. A vertex-label distance oracle answers queries of the form (v, Ξ»), where v β V and Ξ» β L, by reporting (an approximation to) the distance from v to the closest vertex of label Ξ». Following Danny Hermelin et al. , 2011, it was shown in Chechik, 2012 that for any integer k > 1, there exists a vertex-label distance oracle with stretch 4k-5, query time O (k), and size O (kβ nβ π^1/k). This state-of-the-art result suffers from two main drawbacks: The stretch is roughly a factor of 2 larger than in Thorup and Zwick, 2005, and it is not path-reporting. We address these concerns in this work, and provide the following results. - First, we devise a path-reporting vertex-label distance oracle, at the cost of a slight increase in stretch and size. For any constant 0 < Ξ΅ < 1, our oracle has stretch (4k-5) β (1+Ξ΅), query time O (k), and size O (n^1+o (1) β π^1/k). - Second, we show how to improve the stretch to the optimal 2k-1, at the cost of mildly increasing the query time. Specifically, we devise a vertex-label distance oracle with stretch 2k-1, query time O (π^1/kβ log n), and size O (kβ nβ π^1/k).
Neiman et al. (Thu,) studied this question.