【问题标题】:Relating NP-Complete problems to real world problems将 NP 完全问题与现实世界问题联系起来
【发布时间】:2011-01-25 03:19:02
【问题描述】:

我对 NP Complete 问题有很好的理解;那不是问题。我没有很好地了解它们在“真实”编程中出现的位置。有些(如背包和旅行推销员)是显而易见的,但有些似乎与“真正的”问题没有明显联系。

我曾多次与一个难题作斗争,但后来才意识到这是一个众所周知的 NP 完全问题,并已被广泛研究。如果我能更快地识别出这种联系,我可以节省很多时间来研究针对我的特定问题的现有解决方案。

是否有任何资源(在线或印刷)专门将 NP Complete 连接到现实世界的实例?

编辑: 例如,我正在开发一个程序,该程序试图根据年龄、年级和原籍学校将学生分组,这本质上是一个图划分问题。我花了一段时间才意识到这种联系。

【问题讨论】:

  • 我上次查看时,维基百科对于实际应用来说是一个糟糕的来源。它似乎有所改善。感谢您指出。
  • 我同意看到一些真实世界的 NP-complete/hard 问题实例,并看到与抽象版本的联系,会及时增加你建立联系的直觉。

标签: algorithm computer-science


【解决方案1】:

我发现Computers and Intractability 是该主题的权威参考。

【讨论】:

  • 关于他们讨论与现实世界问题的联系的程度有哪些?它似乎主要关注理论(这很好,但不是我现在正在寻找的)。
  • 他们很少讨论现实世界的问题,但他们有一系列令人印象深刻的 NP 完全问题,以及一些关于如何证明问题 NP 完全的讨论。一旦你认为你可能正在处理一个 NP 完全问题或 NP 难题,这本书是一本好书,可以仔细阅读,看看是否有什么熟悉的地方。
  • 它专注于理论。但是,它相当短,如果您阅读它,它将帮助您对可能是 NP-complete 的内容形成直觉。
【解决方案2】:

通常你所说的连接必须用所谓的reduction来提取,例如你将3-SAT减少到你正在处理的问题,然后您可以得出结论,您的问题具有相同的复杂性。

这段话不是微不足道的,因为你必须证明你可以将已知NP-Hard问题L的每个问题实例l > 使用确定性多项式算法进入您的问题 C 的实例 c

因此,除了使用记忆学习常见 NP-Hard 问题的基本相关性之外,没有办法确定一个问题是否与另一个 NP-Hard 问题相似不先尝试猜测然后证明它,你必须聪明。

【讨论】:

  • 你说的一切都是正确的,但这并不是我要说的。例如,我正在开发一个程序,该程序试图根据年龄、年级和原籍学校将学生分组,这本质上是一个图划分问题。我花了很长时间才意识到这一点。
【解决方案3】:

这是一个维基链接: http://wapedia.mobi/en/List_of_NP-complete_problems 注意它说

这个列表并不全面(有超过 3000 个已知的 NP 完全问题)

如果有人能编出这样的列表,这可能是一项伟大的任务。

理论家应该尝试理解/证明一个 NP-Complete/Hard 问题。但是,程序员没有那个时间。他需要一份清单。

我说的对吗?

我认为你应该用谷歌搜索。并且,通读所有链接。将链接中发现的任何新问题添加到您的列表中。

希望对你有帮助

PS:完成后不要忘记发布列表:P

【讨论】:

    【解决方案4】:

    为了培养更好的直觉,Skiena 的“算法设计手册,第二版”一书(谷歌书籍的节选)简直太棒了。

    1. 有问题的列表在后面 (包括难题),即 包括一个插图和一个 与现实世界讨论(经常) 示例
    2. 涵盖了理论 和实际的事情,通常 谈论实际代码。

    在此处在线阅读例外情况(参见第 14 章中的一些示例): http://books.google.dk/books?id=7XUSn0IKQEgC&printsec=frontcover#v=onepage&q&f=false

    第 16 章(未在线)讨论了一些难题,包括图分区。

    【讨论】:

    • 另外,对于困难的问题,它提供了关于如何使用例如实际解决它们的建议。一种近似算法。
    • 算法设计手册还提到了 Garey 和 Johnson 的一本书,其中列出了与 cmets 相关的 400 个 NP 完全问题。 cmets是我认为的好部分。我没有这本书,但我正在考虑买它。和你一样,我想获得更好的直觉来识别现实世界中的难题:) 他说:一旦你质疑是否存在针对你的问题的有效算法,请立即浏览目录。事实上,这是我图书馆里我最常阅读的一本书。
    猜你喜欢
    • 2022-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-18
    • 2012-07-13
    • 1970-01-01
    相关资源
    最近更新 更多