关于P类问题,NP问题,NPC问题的一些粗浅理解
最近在做初赛题,发现总是考一些P和NP问题,完全不知道是什么
得不得分都随缘了,所以还是简单的了解了一下,有的说的可能不是很标准,单做初赛也肯定是够了
我们要学习这三种问题,首先要对时间复杂度有一定的了解
一共分为两个大类
第一种,多项式级
大体上是由n作为底数,例如O(n),O(logn),O(n^2),O(n^a),当然还有O(1)
第二种,非多项式级
由n作为指数,例如O(2^n),当还还有更高的O(n!)
First,P类问题
这是最好理解的,简要来说就是OI比赛考的算法,时间复杂度为多项式级
例如最短路算法
Second,NP问题,不太好理解,我就笼统的说了
所有的可以解的问题都是NP问题,时间复杂度可以是多项式级,也可以是指数级
再多说一句,如何证明NP=P
什么意思呢,就是证明所有的可以解的问题多可以用都项式级时间复杂度来做(算法)
这个并不难,大家可以自己好好思考一下,我就不在这里说了
Last,NPC问题,首先我们要知道一个叫做约化的东西
简而言之,就是可以用一个解法B,来替代解法A,(解法A对应问题A,解法B对应问题B,同时包含问题A)
就说成A问题约化为B问题(保证B问题的时间复杂度大于等于A问题的时间复杂度)
NPC问题就是找到一个问题,让所有的NP问题都可以约化成它,让这个问题的解可以做出所有的NP问题
这就是可以大概完成初赛的介绍了,希望对大家有帮助
再给一个讲的很详细的博客,如果你希望了解更深刻:http://www.matrix67.com/blog/archives/105
蒟蒻总是更懂你✿✿ヽ(°▽°)ノ✿