图的循环游

Circular tour of a graph

给定一个有向图,有N个节点和M个边,你需要找到图的最低成本循环游览,,从特定城市 X 开始并在同一城市结束。

对于以下两种情况,最有效的方法是什么:

  1. 边缘没有权重
  2. 加权边(第i条边为Wi)
  3. 以上两种情况,但条件是每个城市最多只能访问一次。 (除了第一个城市)。如果这不可能,则输出将为 -1。

提前致谢!

1。边上没有权重。

如果边上没有成本,实际上所有电路都变得相等,所有成本都为 0。 按道理,如果隐含的说cost实际上是最小跳数,那么满足上述条件的任何电路也是等价的。然后,问题是找到一个电路,即Hamiltonian Circuit or Hamiltonian Cycle。找出图中的 哈密顿电路 是 NP 完全的。

n! 条可能的路线。蛮力方法的 运行时复杂度为 O(n!),其中 n 表示边数。

现有的最佳算法之一是 here 中的模拟和代码。

2。加权边(Wi for ith edge)

当图有加权边时,问题就变成众所周知的TSP (Travelling Salesman Problem),这是一个NP-hard问题。社区中存在围绕 TSP 复杂性的困惑。您必须区分 TSP-OptimizeTSP-Decide

TSP-Optimize 是 NP-hard。

TSP 决策是 NP 完全的。

有关详细说明,请查看这些资源 1 2. You can find a discussion in here

系统要求您实施 TSP-Optimize。

-动态规划

Bellman–Held–Karp 算法。您可以在 here 中找到伪代码。 运行时复杂度:O(2n n2),其中 n表示边数。

尽管存在其他解决方案技术,使用分而治之或贪心法,但它们并不是最优的。