P问题是一类问题,它们可以找到一个多项式复杂度的确定性算法。
这意味着,在给定有限的资源(计算机)内,资源运用该算法能在多项式时间内得到问题的正确解。
NP问题要比P问题更加广泛,它定义为一类问题,它们可以找到多项式复杂度的非确定算法。
P属于NP,即如果一个问题可以找到多项式复杂度的确定性算法,那一定有多项式复杂度的非确定性算法。
然而NP属于P却并没有证明,因为对于一个NP问题,我们只是找不到一个多项式复杂度的确定性算法,但并不能说一定不存在。
当然这也就是说NP=P尚未被证明。
NP问题通常要比P问题难,它意味着有限的资源内找不到一个算法能在多项式时间内解决。
于是在理论上把资源扩充到需要多少有多少。采用这样一种办法,用某种技术一步步地猜测,最后检验猜测结果,看是否是符合条件的正确解。
由于这种办法是猜出来的,因此每次运行过程都存在随机性,并且由于资源数也是不确定的,因此这种办法叫做非确定性算法。这种算法要对猜测的
最终结果进行检验,看是否符合,就是判断yes或no的问题。因此非确定性算法是决策性问题(decision problem)。
非确定算法的过程中每一步猜测都可能有许多种可能,正是由于可能性太多,因此确定性算法在多项式复杂度内完成才变得困难。然而非确定算法是
在有无限多资源的基础上的,因此在每一步的猜测上,可以分配有可能性个数那么多的计算机来同时计算,因此每次猜测时间代价就是1.然后再继续
进行下一步,每种可能性下又分出许多可能性,由于资源足够分配,得到结果又只用时间代价1.算法的运行过程可以用树的形
P,NP,NP-hard,NPC
最新推荐文章于 2022-07-20 18:44:45 发布
本文介绍了算法复杂度中的P、NP、NP-hard和NPC概念。P问题拥有确定性多项式时间解,而NP问题允许非确定性多项式时间解。尽管NP包含P,但NP是否等于P尚未被证明。NP-hard问题至少与所有NP问题同样难,而NPC问题既是NP-hard又是NP的一部分,解决NPC问题意味着能解决所有NP问题。
摘要由CSDN通过智能技术生成