我想解决类似于TSP(旅行商问题)的问题。
我有N(N> 0,N< 20)个节点,我必须访问所有节点。
节点之间的成本相等。
我可以无限次访问节点。
我想找到多条路径而且费用没有限制。
请告诉我一些有关此问题的有效算法?
答案 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;
}
}
}
您还可以更新在访问最后一个节点时结束的算法。