我正在尝试理解NP Complete的正式定义并提出了一些问题。我想知道是否有人可以提供更多的见解。
Jon Kleinberg algorithms book表示如果每个NP问题都可以简化为问题X,则问题X在集合NP完成中。
现在由于P是NP的子集,因此我们可以将P中的任何问题减少到多项式时间内的NP完全问题。这导致了一个矛盾,即由于减少是在多项式时间内,我们可以在多项式时间内解决这个NP完全问题。这不可能是真的。所以我不确定这个推理在哪里错了。
此外,如果我们能够将多项式时间中的任何NP问题减少到NP Complete,那么为什么我们说NP Complete更难。由于减少是多项式时间,渐近地说,它应该没有区别。
答案 0 :(得分:1)
现在因为P是NP的子集,所以我们可以减少任何一个 P到NP的问题多项式时间内的完全问题。这导致 矛盾的是,由于减少是在多项式时间,我们 可以在多项式时间内解决这个NP完全问题。
你得到减少方向的错误。如果你可以将任何NP完全问题减少到给定的P问题,那么P = NP,因为这意味着这个P问题比任何NP完全问题更难或等价。 P问题可以归结为NP问题的事实并不表明它比NP更难 - 它表明它比NP更容易,这并不令人惊讶或矛盾。
假设我们可以减少TSP的1次运行的最短路径,并假装TSP只能通过枚举(指数复杂度)来解决。然后,最短路径是多项式,减少是多项式(O(1)),但TSP不是多项式。这是一个假设的示例。但希望,它表明TSP可以在一次运行中解决SP这一事实并不意味着TSP在任何情况下都很容易。 TSP的复杂性不受其可以轻松解决SP的限制。