NP问题、NP难问题(NPH)和NP完全问题(NPC)理解

看算法的时候经常会碰到NP问题、NP难问题(NPH)和NP完全问题(NPC)等术语,每次碰到的时候都似懂非懂,这次专门在网上搜了一些资料看,做一下记录,权当加深印象。
NP是指Non-deterministic Polynomial-time,即非确定性多项式时间。与NP相关的总共有四类问题,是计算复杂度理论中研究的主要内容之一。

  1. P问题:Polynomial-time问题,即指在多项式时间内可用算法求解的问题
  2. NP问题:Non-deterministic Polynomial-time问题,指不确定是否存在多项式时间的求解算法,但可以在多项式时间内验证一个猜测解的正确性。(针对NP问题有一个千年难题,即NP=P?,也即是否所有能在多项式时间内验证得出正确解的问题,都是具有多项式时间算法的问题,至今尚未有定论)
  3. NP难问题:NP-hard(NPH)问题,如果所有NP问题可在多项式时间内转化(归约,意思是解决了后者也就相应的解决了前者)成某个问题,则该问题称为NP难问题。
  4. NP完全问题:NP-complete(NPC)问题,如果所有NP问题可在多项式时间内归约成某个NP问题,则该NP问题称为NP完全问题。也就是说NP完全问题既是NP难问题又是NP问题。

    下面贴一张图把四者的关系捋一捋
    NP问题、NP难问题(NPH)和NP完全问题(NPC)理解_第1张图片

参考资料:
1.[总结]算法中的P问题、NP问题、NP完全问题和NP难问题
2.Wiki百科-NP困难问题

你可能感兴趣的:(数学)