一、多项式时间
在计算复杂度理论中,指的是一个问题的计算时间不大于问题大小的多项式倍数。任何抽象机器都拥有一复杂度类,此类包括可于此机器以多项式时间求解的问题。 (多项式时间代表的是一类时间复杂度的统称。)
- 问题的计算时间:指解决问题时使用的算法的时间复杂度。
- 问题大小:字面理解,要解决一个问题,这个问题里面有n个“东西”要处理,这个问题的大小就是n
- 多项式倍数:这个倍数是指,对于一个变量n,有这样一个倍数,比方说,假设n=5,那么n^2+10=5^2+10=35,这个35就是n的一个多项式倍数。因为对于n有无线多种多项式组合,所以它也就有无穷多个多项式倍数。
这个定义的意思就是,如果一个问题的规模是n,那么这个问题的计算时间不会超过n的某个多项式函数的值。这个定义区分了那些可以在多项式时间内解决的问题和那些不能在多项式时间内解决的问题。
二、P问题与NP问题
在计算机领域,一般可以将问题分为可解问题和不可解问题。不可解问题也可以分为两类:一类如停机问题,的确无解;另一类虽然有解,但时间复杂度很高。可解问题也分为多项式问题(Polynomial Problem,P问题)和非确定性多项式问题(NondeterministicPolynomial Problem,NP问题)。
1、P问题
P类问题是所有复杂度为多项式时间的问题的集合。确定一个问题是不是多项式问题在计算机科学中非常重要,已经证明,多项式问题是可解问题,因为除了P问题之外的问题,其时间复杂度都很高,即需要大量时间。理论上有解但其时间复杂度巨大的问题,科学家将其称为难解型问题。对计算机来说,这类问题是不可解的。因此,P问题成了区别问题是否可以被计算机求解的一个重要标志。
2、NP问题
NP(Nondeterministic Polynomially,非确定性多项式)类问题是指一个复杂问题不能确定是否在多项式时间内找到答案,但是可以在多项式时间内验证答案是否正确。NP类问题数量很大,如完全子图问题、图着色问题、旅行商(TSP)问题等。在P和NP问题中,P的难度最低,NP由于只对验证答案的时间作了限定,从而有可能包含某些无法在多项式时间内找到答案的问题,即NP是比P更困难的问题。
NP问题是指可以在多项式时间内被非确定机解决的问题。通常它们的时间复杂度都是指数变量,如 等。
3、NPC(NP Complete,NP完全)问题
计算机科学家将NP问题中最困难的称为NPC问题。NPC问题有一个令人惊讶的性质,即如果一个NPC问题存在多项式时间算法,那么所有NP问题都可以在多项式时间内求解,即P=NP成立。这是因为每一个NPC问题都可以在多项式时间内转化成任何一个NP问题。只要任意一个NPC问题找到了一个多项式算法,那么所有NP问题都能用这个算法解决,也就解决了NP=P问题。但是给NPC找一个多项式算法太不可想象了,而且也从未成功,因此科学家认为,正是NPC问题的存在,使得人们相信P=NP。
NPC问题目前没有多项式算法,只能用穷举法逐个检验,最终得到答案。但是穷举法的计算时间随问题的复杂程度呈指数增长,很快问题就会变得不可计算了。
围棋或象棋的博弈问题、国际象棋的n皇后问题、密码学中的大素数分解问题等,都属于NPC类问题。
部分来源:百度百科-验证