图算法:与TSP类似

时间:2015-07-16 09:08:41

标签: algorithm

我想解决类似于TSP(旅行商问题)的问题。

我有N(N> 0,N< 20)个节点,我必须访问所有节点。

节点之间的成本相等。

我可以无限次访问节点。

我想找到多条路径而且费用没有限制。

请告诉我一些有关此问题的有效算法?

1 个答案:

答案 0 :(得分:0)

为什么不运行简单的DFS? O(V + E)

通过从不同的根开始算法可以获得多个路径。

bool[] visited;
List<int> path;
void Visit(int u)
{
    if (visited[u]) return; // only visit each node once
    visited[u] = true;
    path.Add(u); // add initially to path
    int pathSize = path.Count;
    foreach(int v in nbs[u]) {
        Visit(v);
        if(path.Count > pathSize)
        {
            // if another node was visited, add this node again
            // so we can move to the next unvisited subtree
            path.Add(u);
            pathSize = path.Count;
        }
    }
}
  • 从1开始: 1&gt; 2&gt; 1> 3> 4> 3> 1
  • 从2开始: 2&gt; 1> 3> 4> 3> 1> 2

Labeled graph

您还可以更新在访问最后一个节点时结束的算法。