TSP的变体,只需要访问一组城市,但如有必要,可以访问集合以外的城市

Variation of TSP which needs to visit only a set of cities but can visit cities outside the set if necessary

提问人:julio meza 提问时间:11/8/2023 最后编辑:ravenspointjulio meza 更新时间:11/9/2023 访问量:36

问:

我需要解决 TSP 的变体,其中节点代表邻域。社区可以是中心社区,也可以是非中心社区。从非中心社区开始,我需要找到最短的路径,该路径恰好访问所有非中心社区一次,然后返回起点。请注意,如果最短路径有助于找到更短的路径,则最短路径可能包括一个或多个中心邻域。

输入:

  • 加权无向图 G,其中节点表示邻域,边表示邻域之间的距离(行驶成本)。
  • 一个列表指示社区是中心社区还是非中心社区。
  • 一个起始的社区。

输出:

  • 该路径仅访问每个非中心社区一次,同时最小化总行驶距离。
  • 这种路径的成本

考虑到提供的输入和输出规范,我正在寻找有效解决上述问题的指导或算法。任何帮助或见解将不胜感激。

算法 图论 旅行推销员

评论

1赞 n. m. could be an AI 11/9/2023
对于所有非中心邻域对,找到它们之间只有中心邻域作为中间折点的最短路径。将每条此类路径替换为相同长度的边,并移除所有中心邻域。现在你有了一个沼泽标准的TSP。 (没有要求每个中心社区的访问不超过一次,对吧?

答:

0赞 ravenspoint 11/9/2023 #1
  • 对每对非中心顶点进行 LOOP 操作
    • 求对之间的最短路径
      • LOOP 遍历路径中的中心顶点
        • MARK 顶点
  • 中心顶点上的 LOOP
    • IF 顶点未标记 删除顶点
  • 将标准 TSP 算法应用于简化图

请注意,该算法将使用必要的中心顶点找到最短路径,它也可以使用可以避免的中心顶点(因为它们被标记在另一对非中心顶点之间的最短路径中)

评论

0赞 beaker 11/9/2023
@n.m.在评论中建议的算法使用标准的全对最短路径算法,唯一的修改是对图形本身的修改,并且不会冒引入不必要的中心顶点的风险。