我对NP完全问题的掌握得体;那不是问题。我没有的是很好地理解他们在“真正的”编程中出现的位置。有些人(比如背包和旅行推销员)很明显,但其他人似乎并没有明显与“真实”问题联系在一起。
我曾经多次遇到过困难问题,只是意识到这是一个众所周知的NP完整问题,已被广泛研究过。如果我更快地认识到连接,我可以节省相当多的时间来研究现有解决方案以解决我的具体问题。
是否有任何资源(在线或打印)专门将NP Complete连接到真实世界的实例?
编辑: 例如,我正在研究一个程序,该程序试图根据年龄,年级和原始学校将学生分成小组,这实际上是图形分区问题。我花了一段时间才意识到这种联系。
答案 0 :(得分:4)
我发现Computers and Intractability是该主题的权威参考。
答案 1 :(得分:1)
通常,您所谈论的连接必须使用所谓的简化进行提取,例如,您将 3-SAT 减少到您正在使用的问题,然后你可以得出结论,你的问题具有相同的复杂性。
这段话并非无足轻重,因为你必须证明你可以解决已知的 NP-Hard 问题的 l L 使用确定性polinomyal算法 C 的 c 实例。
所以,除了使用你的记忆学习常见的 NP-Hard 问题的基本相关性之外,没有办法确定问题是否与另一个 NP-Hard 相似在没有先尝试猜测然后证明它的情况下,你必须要聪明。
答案 2 :(得分:1)
这是一个wiki链接: http://wapedia.mobi/en/List_of_NP-complete_problems 注意它说
如果任何人都可以编译这样的列表,那么这可能是一项伟大的任务。这个清单并不全面(已知有超过3000个NP完全问题)
理论家应该尝试理解/证明NP-Complete / Hard问题。但是,程序员没有那段时间。他需要一份清单。
我说错了吗?
我认为你应该谷歌。并阅读所有链接。在列表链接中添加任何新问题。
希望有所帮助
PS:完成后不要忘记发布列表:P
答案 3 :(得分:0)
为了发展更好的直觉,Skiena的书“算法设计手册,第二版”(谷歌书籍摘录)简直太棒了。
在线阅读例外情况(参见第14章中的一些例子): http://books.google.dk/books?id=7XUSn0IKQEgC&printsec=frontcover#v=onepage&q&f=false
第16章(不在线)讨论了一些难题,包括图分区。