完整图表上的最小成本周期

时间:2013-02-21 16:59:40

标签: path-finding graph-traversal

我有一个complete graph带有无向的加权边,需要通过图节点的子集找到最低成本cycle。与Travelling Salesman不同,任何节点都可以多次访问 并非所有节点都需要访问,并且按成本I意味着路径应该具有遍历边缘权重的最小总和。

例如,以下是adjacency matrix形式的图表:

  a b c d
a 0 3 4 5
b 3 0 2 4
c 4 2 0 1
d 5 4 1 0

其中每个边的权重用于每个元素。在a开始和结束并且包括[b,d]的周期看起来像

[a,b,d,a] -> 3+4+5 = 12
[a,b,d,b,a] -> 3+4+4+3 = 14
[a,b,c,d,c,a] -> 3+2+1+1+4 = 11

是否有最佳算法,或者是一个非常好的启发式算法?

1 个答案:

答案 0 :(得分:3)

a开始和结束并且包括[b,d]的周期仅表示周期必须访问节点a,b,d。 [a,b,d,a] = [b,d,a,b](周期右)。你的问题叫做k-TSP。见here。但这很难实现,可能不是你想要的。

所以我会给你一个更简单的方法。首先构造仅通过这些节点的最短循环。然后用两个节点之间的最小路径替换每条边。我认为这是合理的,我忽略了最优性。以下是步骤:

  • V =节点E =边缘,M =必须访问的节点。
  • 通过在M上运行TSP创建周期C(不使用其他节点),添加额外的边缘以进行循环。
  • 现在使用所有节点V.对于uv中的每个边C,请执行:
  • 使用Dijsktra's algorithmwu之间找到最短路径v(图中不应为负循环)。
  • uv替换为w