【问题标题】:Polynomial time algorithm for finding a Hamiltonian walk in a graph [closed]用于在图中找到哈密顿游走的多项式时间算法
【发布时间】:2010-09-10 11:19:03
【问题描述】:

是否有多项式时间算法可以在图中找到哈密顿游走?

我的算法是 N 阶乘,真的很慢。

【问题讨论】:

  • 我知道找到哈密顿路径是一个 NP 完全问题。找到一个哈密顿回路是一样的,还是已经解决了?

标签: algorithm np-complete


【解决方案1】:

NP 完全。但如果你确实找到了一个好方法,请告诉我,我会告诉你如何致富。

【讨论】:

    【解决方案2】:

    你刚刚问了million dollar question。找到一条汉密尔顿路径是一个 NP 完全问题。一些 NP 难题可以使用动态规划在多项式时间内解决,但(据我所知)这不是其中之一。

    【讨论】:

    • NP-hard 问题尚未在多项式时间内解决,这仍然是百万美元的问题。它们已在伪多项式时间内求解(有关更多详细信息,请参见关于背包问题的维基百科页面)。
    • 对于任何 NP 完全问题,没有已知的多项式时间算法;如果其中一个问题只有一种算法,那么所有其他 NP 完全问题都可以在多项式时间内简化为它。我认为 hazzen 指的是一些问题,例如背包,可以在多项式时间内很好地近似。但是,您越接近完美近似,您离多项式就越远。
    • 你能说出问题的名称并描述算法吗?我们当然感兴趣。
    • 许多 NP 完全问题可以使用动态规划来解决。考虑字符串对齐的问题(编辑距离)。 O(k^n) 使用简单的实现,但 O(n^2) 使用动态编程。一般来说,任何表现出最优子结构和重叠子问题的问题都可以使用记忆化来降低复杂性,这就是动态编程所做的。维基百科有一个不错的解释和一些例子。
    • 重要的是要注意,动态规划并没有真正提供在多项式时间内解决 NP 完全问题的算法,它只是利用非常具体的问题子类的结构来排除冗余工作。该技术适用于一般类别的 NP 完全问题。如果是这样,那将是一个了不起的结果。 :-)
    【解决方案3】:

    不可能为最短找到更好的算法,因为它是 NP 困难的。但是您可以尝试一些启发式方法,也许您可​​能想查阅您的讲义;)。

    为了降低复杂性,您可以使用贪心算法找到一个短(ish)步行。

    【讨论】:

      【解决方案4】:

      一般而言,由于哈密顿路径问题的(决策版本)是 NP 完全的,因此您不能希望获得一个多项式时间算法来寻找哈密顿路径。您可以使用通常的 N 稍微加快速度! → N22N 动态规划技巧(计算 hp[v][w][S] = “是否存在具有端点 v 和 w 且其顶点为每个子集 S 和其中每两个顶点 v 和 w 的子集 S" 使用 DP),但这仍然是指数的。

      但是,有许多特殊类型的图始终存在哈密顿路径,并且很容易找到它们(参见 Posa、Dirac、Ore 等的工作)

      例如,以下情况为真:如果图的每个顶点的度数至少为 n/2,则图具有哈密顿路径。事实上,如果你做得更聪明,你可以在 O(n2) 或 IIRC 甚至 O(n log n) 中找到一个。
      [粗略的草图:首先,只需连接某个“哈密顿”循环中的所有顶点,不管边是否真的在图中。现在,对于实际上不在图中的循环的每条边 (v,w),请考虑循环的其余部分:v...w。由于 deg(v)+deg(w)>=n,列表中存在连续的 x,y(按此顺序),因此 w 是 x 的邻居,v 是 y 的邻居。 [证明:考虑{w的所有邻居的集合}和{v的邻居列表中所有后继者的集合};它们必须相交。] 现在将你的循环 [v...xy...wv] 改为 [vy...wx...v],它至少少了一个无效边,所以你最多需要n 次迭代以获得真正的哈密顿循环。更多详情here.]

      顺便说一句:如果您要查找的只是包含每个 一次的游走,则称为欧拉游走,并且对于具有它的图(奇数度的顶点数为 0 或 2 ),可以很容易地在多项式时间内找到一个(快速)。

      【讨论】:

        【解决方案5】:

        根据您正在使用的图形的生成方式,您可以通过执行贪婪路径扩展,然后在卡住时进行随机边交换,获得针对随机实例的预期多项式时间。

        这对于保证具有哈密顿游走的随机生成的相对稀疏的图非常有效。

        【讨论】:

        • 为什么投反对票?这是一个很好的答案,比没有告诉你可以做什么的“哈哈 NP 完整”的非答案要好得多。
        【解决方案6】:

        嗯.. 这取决于您的定义。哈密​​顿路径肯定是 NP 完全的。但是,可以多次访问边和顶点的哈密顿游走(是的,只要在末尾添加游走位,它仍然称为哈密尔顿游走)可以在 O(p^2logp) 或 O(max(c^2plogp , |E|)) 只要你的图满足狄拉克首先猜想和高见泽证明的特定条件。参见 Takamizawa (1980)“在图中寻找短闭合跨步游走的算法”。

        保罗

        【讨论】:

        • 令人惊讶的是,对 OP 问题的唯一正确答案根本没有得到支持......
        【解决方案7】:

        我的查询:表明在图 G 中查找哈密顿循环的搜索问题 RHAM 是 自还原 如果搜索问题 R 可库克归约为决策问题,则该搜索问题 R 是自归约的
        SR={ x : R(x) ≠ ∅ }

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-07-17
          • 1970-01-01
          • 1970-01-01
          • 2018-08-14
          • 1970-01-01
          • 2010-11-26
          • 2010-12-31
          • 1970-01-01
          相关资源
          最近更新 更多