【问题标题】:How do I use a minimum spanning tree to approximate the traveling salesman program?如何使用最小生成树来近似旅行商程序?
【发布时间】:2022-12-16 01:37:44
【问题描述】:

我正在为一个班级项目解决旅行商问题。我已经到了能够计算最小生成树的地步,但我不确定从这里该怎么做。我想知道如何使用我生成的所有城市的 mst 来创建该近似值。

我能够根据需要访问的所有城市的数据集创建一个图表,并且能够从该图表中导出最小生成树。现在,我需要获取那个 mst 并从中得到一个近似值和一个哈密尔顿循环。我想我可能不得不以某种方式使用深度优先搜索,但这是我所能得到的。

【问题讨论】:

  • 看一下 Christofides 的算法。它还带有最广为人知的常数因子,用于限制启发式方法偏离最佳解决方案的程度。理解为什么绑定有效可能需要一些关于图形匹配的知识。

标签: java graph depth-first-search traveling-salesman minimum-spanning-tree


【解决方案1】:

这是找到旅行商问题的快速近似答案的好方法。它不会总能找到答案,即使存在。然而,对于实际用途,而不是学术练习,它方便且易于编码。

算法:

  • 在图中找到一棵生成树。 (如果找不到生成树,这将失败)

  • 在节点上循环 N

    • 从 N 开始对生成树进行深度优先搜索

    • IF 搜索到达每个节点

      • OUTPUT route in order dseasrch found the nodes

如果您不介意偶尔重新访问某些节点,您可以添加更多步骤,这将为您提供合理有效的游览,以重复访问每个节点。有关实现此方法的这些和其他详细信息,请查看Rearrange words to match first and last letters

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-30
    • 2010-10-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多