旅行推销员变种

时间:2013-08-04 14:50:18

标签: graph-algorithm traveling-salesman

他们是旅行商问题或其他算法的变体有关以下问题:

说G是不完整的无向加权图。 V是G的顶点的子集。

如何沿V(以及可能是G的其他一些顶点)找到一个简单的闭合电路,它在V的每两个顶点之间具有最小的权重。

谢谢

----------------------编辑------------------------

此问题是否有名称或已发布的文档或相关研究论文?

1 个答案:

答案 0 :(得分:0)

首先,因为V(你所说的是G的顶点子集)本身就是一个加权图 - 首先计算V的边缘,这样就可以忽略G.

例如G的输入:

G1 (Va) -- 5 meter --> G2 (no V) -- 10 meter --> G3 (Vb)

可以简化为V的输入:

Va -- 15 meter --> Vb

当输入在V顶点之间有多条路径(其间没有其他V顶点)时,乐趣就开始了:

G1 (Va) -- 5 meter --> G2 (no V) -- 10 meter --> G3 (Vb)
G1 (Va) -- 7 meter --> G4 (no V) -- 7 meter --> G3 (Vb)

然后简化形式是(它需要第二条路线):

Va -- 14 meter --> Vb

在简化过程中使用Dijkstra算法。

其次,在V上应用一个好的TSP算法。它是NP-complete,因此没有完美的算法。根据您的编程语言(javaC/C++,...),有许多可用的框架。