P类问题 VS NP问题 VS NP完全问题
简单了解一下P类问题、NP类问题和NP完全问题
P 类问题 一个问题可以在多项式时间(polynimal time)内解决,就是P类问题,时间复杂度为O(n),O(n^2)…多项式时间求解
NP类问题(nondeterministic polynomial) 一个问题在多项式时间判断一个值是不是该问题的解,即多项式时间验证
图中红线标出的区域为NP完全问题
举栗子:
一个数组求最大值,是P类问题
一个很大的数组,判断x是不是该数组的最大值是NP类问题
一个问题有可能是P类问题
NP完全问题,如果一个问题是NP类问题,这个问题目前为止不能再P时间内解决,但是可以在P时间内验证,
举栗子:3-SAT问题,该问题可以在O(1)时间内判定,但不能在P时间求解
证明NP类问题是否是P类问题是一个需要讨论的问题。
NP完全问题(NP complete):
所有的NP完全问题都可以在P时间内互相转换。
举栗子:
1.CLIQUE 图论中的问题
当一个全连通的无向图,是否可以找到结点为k的全连接的子图。
2.Independent Set问题
一个图中是不是有k个不相邻的点
3.VertexCover
是不是有k个点可以覆盖所有的边
如何证明一个问题是不是NP完全问题:
先确定问题是不是NP问题,然后可以将问题转换成NP完全问题,基本是和3-SAT问题相互转换
例如可以将3-SAT问题,转换成CLIQUE问题,转换过程:
可以看视频