P,NP,NPC 和 NP-Hard问题
P,NP,NPC面对的问题都是 答案为是或非的决策性问题。
NP-Hard的问题即不局限于答案为是非的,但是包含了是非。
P问题
能在多项式时间内找到解决方法的问题,比如图的2-color着色问题,我们现实中能找到复杂度在多项式时间解决的问题都是此类的。
NP问题
给与一个问题,可能你目前无法在多项式时间解决,但是如果给了你一个猜想的答案,你能在多项式时间检验 这个答案的正确性,这样的问题成为np问题。比如hanmilton回路问题, 给定一幅图,是否能找到一条经过每个顶点一次且恰好一次最后又走回来的路。
所以,所有的p类问题都是np问题,p是np的子集,但是p可不可能等于np问题至今仍是一个谜团。
NPC问题
npc特指一类特殊的问题,如果一个np的问题能够被规约转化(要求这个转化必须是多项式时间可以做到的)为该问题,即该问题的解法可以解决转化前的问题,那么这个问题就可以称为npc问题。
所以,npc问题是可以理解为np问题里面最难的那类问题,所有的np问题都可以泛华为该类问题。
比如,最大独立集,最大团 和 3-SAT问题。
NP-Hard问题
典型代表:停机问题。
np-hard问题的范围就广泛许多,它已经不局限于np问题的范围,npc问题都可以规约为np-hard问题,并且np-hard的问题也不再局限于回答是非的问题。
Reference:
- https://stackoverflow.com/questions/1857244/what-are-the-differences-between-np-np-complete-and-np-hard