CS党必须了解的P/NP常识

        1.背景

           对算法感兴趣的人多多少少会多P/NP术语有过了解,它是CS界中著名的难解谜题之一,是在理论信息学中计算复杂度理论领域里至今没有解决的问题,它被“克雷数学研究所”(clay mathematics institute,简称cmi)在千禧年大奖难题中收录。

         2.NP、P、NPC以及NP-hard

         P问题 (全称polynominal,即确定性多项式):指的是能够在确定性图灵机中在多项式时间内获得问题的解。这里的确定性图灵机可以暂时理解为可计算的、可以通过公知理论、正常逻辑推导而出的机器去解答。

         NP问题(Non-deterministic Polynomial,即多项式复杂程度的多项式问题):指的是可以在非确定性多项式时间内验证得出一个或些许解的问题。(非确定性算法将问题分解成猜测和验证两个阶段。算法的猜测阶段是非确定性的,算法的验证阶段是确定性的,它验证猜测阶段给出解的正确性。)

         NPC问题(即NP-complete):可以简单认为是NP问题中的boss型问题,即一切的NP问题都可以约化为NPC问题。约化是什么意思呢?简单地说,一个问题A可以约化为问题B的含义即是,可以用问题B的解法解决问题A,或者说,问题A可以“变成”问题B。若NPC问题题得到解决,理应就是所有的NP问题都可以迎刃而解了。这里可以引入一个小例子:在中学中,我们学过一元一次方程和一元二次方程,我们知道,若根据计算步骤与公式的复杂的,一元二次方程是比一元一次方程难解些的。那么我们说,前者可以约化为后者,意即知道如何解一个一元二次方程那么一定能解出一元一次方程。如何找到问题等价?(在上述例子中,把二次方程的二次项系数变为0即可)。同样地,我们可以说,Hamilton回路可以约化为TSP问题(Travelling Salesman Problem,旅行商问题):在Hamilton回路问题中,两点相连即这两点距离为0,两点不直接相连则令其距离为1,于是问题转化为在TSP问题中,是否存在一条长为0的路径。Hamilton回路存在当且仅当TSP问题中存在长为0的回路。

          NP-hard:比NP问题还要难的问题。所有,NPC问题也属于NP-hard。

    3.NP=P or NP!=P?

           NP完全问题:该问题是被称为“七大数学难题”中的一个,主要就是证明NPC问题到底能不        能写出多项式时间的算法,如果有,那么所谓的NPC也便可以解决,其集合也为空;此时,          NP=P,反之则NP!=P;但无论证明是与不是都是一件非常棘手的,毕竟对于渺小而又有着          无限潜能的人类而言,很难去预知一个未解的问题是不是真的未解(似乎有点掉入哲学的层面       去了)

          

你可能感兴趣的:(算法,np问题)