图表的最低成本路径

时间:2012-04-06 16:01:39

标签: graph graph-traversal floyd-warshall

我正在解决一个问题:

  

有一个连接的无向图。我需要访问所有节点   没有多次访问节点。我可以开始和结束任何   任意节点。

我该如何解决这个问题?我应该像Floyd-Warshall这样的算法应用于所有可能的起始节点,还是有更好的方法呢?

感谢。

1 个答案:

答案 0 :(得分:4)

每次访问每个节点一次且仅一次的路径称为哈密尔顿路径。找到哈密顿路径的问题称为Hamiltonian Path Problem

首先,这个问题是NP-Complete。运行时间与最多输入大小的多项式成比例的算法称为多项式算法。例如,大多数排序算法需要O(N logN)时间,该时间小于N ^ 2,这使得它是多项式的。

对于NP完全问题,没有已知的多项式时间算法。虽然没有人能够证明这一点,但很可能没有用于NP完全问题的多项式时间算法。这意味着:

  1. 您将提出的任何算法的运行时间将与输入大小的指数函数成比例。 (即如果它在一小时内解决了40个节点的问题,41个节点需要2个小时,42个节点需要4个小时,...)这是非常坏的消息。

  2. 您提出的算法基本上不会比尝试和错误的算法快得多。

  3. 如果您的输入尺寸很小,请从简单的回溯算法开始。如果您需要做得更好,使用“哈密尔顿路径”,“最长路径”等术语进行谷歌搜索可能会提供答案。如果您的输入很大,最终您将不得不降低您的期望(例如,使用近似而不是最佳解决方案)。