图算法:与TSP类似

时间:2015-07-16 08:59:12

标签: graph-algorithm

我想解决类似于TSP(旅行商问题)的问题。 我有N(N> 0,N< 20)个节点,我必须访问所有节点。 节点之间的成本是相等的。 我可以无限次访问一个节点。 我想找到不止一条路径而且费用没有限制。 告诉我一些关于这个问题的有效算法?

1 个答案:

答案 0 :(得分:0)

这是一个使用加权图表的解决方案。

首先,天真的解决方案,枚举。

它适用于O(n!),因为有(n-1)!哈密顿路径,你需要O(n)来检查每个路径。

有更好的算法,O(n*2^n)

中的动态编程

将状态定义如下:对于x一个节点,S一组包含x的节点:

w[S][x] =从节点x开始的最短路径的权重,并通过集S中的所有节点,然后在0结束。

请注意,0不一定属于S

S = {x}是基本案例:w[S][x] = weight(w,0)

然后是递归公式:

如果S大于{x},则会对可能的下一步y进行迭代

w[S][x] = min(weight(x,y) + w[S\x][y] for all y in S\x)

该算法只输出一条最佳路径。