Answers:
很高兴看到一个本科生以如此的热情去追求这个伟大的问题。请允许我根据我的经验为您提供一些建议。
是一个非常有趣的问题。答案的含义是巨大的,特别是在两个类别相等的情况下。从无私的科学到物质的金钱奖励,奖励在许多层面上都是巨大的。这导致许多年轻人在没有解决或知识有限的情况下尝试解决该问题。
也许大多数理论学生都经历了那个阶段。您将有一个想法,认为这是对的,但是几乎可以肯定您是错的。有些人从来没有经历过那个阶段,因为过于固执而无法承认自己的错误而感到尴尬。
在FOCS 2010中,Rahul Santhanam将问题与一个神话怪兽进行了比较。要击败这个怪物,需要很多牺牲和勇气。毕竟,这可能是有史以来最困难的问题。为了有战斗的机会,您将必须就此问题和复杂性进行大量研究。您永远不会知道“怪物的弱点”将是什么。
所以我的建议是:花些时间了解问题。每次您找到解决方案时,都以某种方式假设您错了,然后尝试查找问题所在。这样,您将学到很多东西。
至于参考资料,我也会推荐Sipser的书。完成后,我将推荐Arora和Barak撰写的“计算复杂性:一种现代方法”,这是一本面向复杂性的书,它需要对计算概念有很好的理解。
我强烈建议Sipser撰写“计算理论导论”,尤其是因为它涵盖了解决P vs. NP的主要障碍之一,即相对化。它非常清楚地证明了贝克-吉尔-索洛维的结果。我不确定Razborov-Rudich结果中是否包含任何内容,但是它是一种奇妙,非常清晰且易于阅读的入门资源,不仅可以学习P vs. NP,还可以学习复杂性理论中的许多其他相关主题。 ..这很重要,因为如果您希望尝试解决问题,则需要在该领域具有一些背景知识以及从何处着手的想法。
有关NP完整性的经典参考是Garey和Johnson的书(http://tinyurl.com/2w5yofs)。这既有启发性,又彻底。
我个人是从克莱因伯格·塔多斯(Kleinberg Tardos)(http://tinyurl.com/37dtyyl)那里学到的,因为我的大学使用了它。
我还建议举一个问题实例并尝试解决它。尝试解决未解决的问题是一个好习惯。通过实验,我的意思是,您可以编写程序或由他人实施已知的算法,并了解它们的工作方式,失败之处等。此外,您还可以发现几种证明技术。请记住,如果您对此进行了大量研究和工作并且找不到任何解决方案,他们不会将您送入监狱。相反,您的能力水平得到保证。
在大多数情况下,这些问题通常比其具体情况难解决。阅读有关NFL的信息以了解想法。
就我而言,我很快就陷入了思想和相关概念的深渊。有一些编程/编码方面的调整,也有一些理论上的调整。例如,如果您想使用遗传算法概念解决任何问题实例,您很快就会发现,仅GA是一个广阔的发现世界!最近,我开始了解GA / EA中的链接学习。对此了解不多。
此外,当您尝试编写代码时,您会发现某些编程语言/工具比其他编程语言/工具更好/更容易。我不知道为什么Alex Stepenov认为OOP在数学上是不正确的,以及函数式编程的优点是什么。我没有线索,但我清楚地记得,一开始我是在研究NP完全/困难问题。
我欢迎您,尽管旅途充满冒险!
P,NP和NP完全性: Oded Goldreich撰写的“复杂性理论基础”将是另一本不错的入门书。
在介绍性内容之后,我还想推荐Richard J. Lipton 撰写的《 P = NP问题》和哥德尔的《失信》。
兰斯·福特诺(Lance Fortnow)最近扩大了自己的著作,并将其在CACM上已经很全面的专栏发表(在MA的其他答案中提到),成为一本完整的科普水平书籍,《金票:P,NP和寻找不可能》。Nazaryan 在《纽约客》的“最深奥的数学问题”中对此进行了评论。(出版商页面,普林斯顿大学出版社)