最短路径访问无向图中的顶点集

时间:2013-11-09 14:41:06

标签: algorithm graph graph-theory graph-algorithm

我在室内地图中有一个无向的位置图。 给定一组顶点时,我想找到覆盖所有顶点的最短路径。 图包含52个顶点和150 - 250个边。

我可以用什么来找到最短路径的最佳算法。 请不要混淆这是一个旅行商问题。它不必覆盖所有节点。只有给定的节点集。

1 个答案:

答案 0 :(得分:1)

正如我评论的那样,这是一个难题,所以不要指望多项式时间算法。

但是,如果您正在寻找一种算法,您可以在可接受的时间内为您提到的问题实例进行计算,这可能会有效:

Let G(V,E) be the original graph, let N be the set of nodes that must be visited.

1. Compute the shortest-path matrix M for the entire graph (|V|x|V| matrix that contains
   the length of the shortest path between each two nodes).
2. Generate a new graph G`, containing N alone, with the distances between each 
   two nodes taken from the shortest-path matrix M.
3. Solve the Minimum Weight Hamiltonian Path Problem on G`.

请注意,这里“最难”的部分是第三部分,它需要指数时间。但如果小组N不是太大,你就能解决它:

  • Bruteforce算法可以解决N在几秒钟内包含大约11个节点的问题(O(|N|!)复杂度)
  • 动态编程可让您解决N在几秒钟内包含约20个节点的问题(O(2^|N|*|N|^2)复杂度。

基本上可以将解决最小权重哈密尔顿路径问题的任何算法应用于第三部分,这些算法通常等同于TSP算法(这些问题之间的唯一区别是在TSP中您在访问后返回源节点所有其他节点)。