【问题标题】:Best-case Running-time to solve an NP-Complete problem?解决 NP 完全问题的最佳情况运行时间?
【发布时间】:2010-12-19 03:30:59
【问题描述】:

解决特定 NP 完全问题的最快算法是什么?例如,travelling salesman 的简单实现是 O(n!),但使用动态编程可以在 O(n^2 * 2^n) 中完成。是否有任何可能“更简单”的 NP-Complete 问题具有更好的运行时间?

我对精确的解决方案而不是近似值感到好奇。

【问题讨论】:

  • 我会 +1,我有兴趣看看别人看到了什么。
  • 您的问题是“我们提出的最快算法是什么?”然后“请注意,我对近似值不感兴趣,而是对精确解感兴趣。”我们如何才能知道提出的确切最快的算法?
  • 你试过mathoverflow.net吗?
  • @RickNZ:“我们”是指“一般的人类”。我不是想让你们打败我的算法,我只是想知道最快的是什么。
  • mathoverflow 版本:mathoverflow.net/questions/6418/…

标签: language-agnostic theory complexity-theory performance np-complete


【解决方案1】:

[...] 使用动态编程可以在 O(n^2 * 2^n) 中完成。是否有任何可能“更简单”的 NP-Complete 问题具有更好的运行时间?

有点。您可以通过创建一个人为的问题来摆脱任何多项式因素,该问题在多项式更大的输入中编码相同的解决方案。只要输入只是多项式更大,由此产生的问题仍然是 NP 完全的。由于复杂性是根据定义将输入大小映射到运行时间的函数,如果输入大小增加,该函数将进入较低的 O 类。

因此,在 TSP 上运行相同的算法,输入用 n^2 无用位填充,复杂度为 O(1 * 2^sqrt(n))。

【讨论】:

    【解决方案2】:

    NP-Complete 问题的一个特点是 NP 中的任何问题都可以在最多多项式时间内机械​​地转换为任何 NP-Complete 问题。

    因此,无论对任何给定的 NP 完全问题的最佳解决方案是什么,它都会自动成为任何其他 NP 问题的类似良好解决方案。

    鉴于动态规划可以在 2^n 时间和 2^n 空间内解决旅行商问题,所有其他 NP 问题也必须如此[好吧,加上应用转换的时间,我猜 - 所以它可以为 2^(n+1)]。

    【讨论】:

    • 我认为它只需要 O(n) 空间
    • 我不记得了,所以我在维基百科上查找了它。可能是我看错了文章...
    【解决方案3】:

    通常,如果不尝试所有组合(可能存在负距离等),您将无法找到通用旅行商问题的最佳解决方案。

    通过添加额外的限制并放宽获得最佳解决方案的要求,您可以大大加快速度。

    例如,如果问题中的距离遵循“直接从 A 到 B 不比从 A 到 C 到 B”长(即捷径永远不会更长),您可以获得多项式可执行时间,并且你可以忍受结果最大是最优值的 1.5 倍。见http://en.wikipedia.org/wiki/Travelling_salesman_problem#Metric_TSP

    【讨论】:

      猜你喜欢
      • 2010-09-13
      • 2022-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-22
      • 2016-09-29
      • 2011-11-14
      • 2011-04-23
      相关资源
      最近更新 更多