1

Given a set of nodes $N$ on an undirected, weighted graph $G$ and a query node $n$, what is the fastest algorithm for finding the node in $N$ that is closest to $n$?

Furthermore, say we are doing many of these queries, so have many $n$'s, is there some data structure that could speed up this computation?

Thank you for any feedback or guidance.

Addendum: One other detail I did not mention, every time a query is made, $n$ is added to $N$, so for the next query, $N$ is larger by one node. Is there some version of Dijkstra's or bellman ford that can handle this dynamic situation?

1 Answers1

0

Without the addendum, you could do $O(|V|+|E|)$-time preprocessing (a single BFS, starting from the set $N$) that would let you solve each query in $O(1)$ time.

With the addendum, this seems much harder. I would suggest exploring dynamic shortest-paths. See, e.g., Recalculating shortest path after changing the weights, State-of-the-Art techniques on dynamic shortest path computations.

D.W.
  • 167,959
  • 22
  • 232
  • 500