P类问题 VS NP问题 VS NP完全问题

简单了解一下P类问题、NP类问题和NP完全问题

P 类问题 一个问题可以在多项式时间(polynimal time)内解决,就是P类问题,时间复杂度为O(n),O(n^2)…多项式时间求解
NP类问题(nondeterministic polynomial) 一个问题在多项式时间判断一个值是不是该问题的解,即多项式时间验证
P类问题 VS NP问题 VS NP完全问题_第1张图片
图中红线标出的区域为NP完全问题
举栗子:
一个数组求最大值,是P类问题
一个很大的数组,判断x是不是该数组的最大值是NP类问题
一个问题有可能是P类问题

NP完全问题,如果一个问题是NP类问题,这个问题目前为止不能再P时间内解决,但是可以在P时间内验证,
举栗子:3-SAT问题,该问题可以在O(1)时间内判定,但不能在P时间求解

证明NP类问题是否是P类问题是一个需要讨论的问题。

NP完全问题(NP complete):
所有的NP完全问题都可以在P时间内互相转换。

举栗子:
1.CLIQUE 图论中的问题
当一个全连通的无向图,是否可以找到结点为k的全连接的子图。
P类问题 VS NP问题 VS NP完全问题_第2张图片
2.Independent Set问题
一个图中是不是有k个不相邻的点
P类问题 VS NP问题 VS NP完全问题_第3张图片
3.VertexCover
是不是有k个点可以覆盖所有的边
P类问题 VS NP问题 VS NP完全问题_第4张图片
如何证明一个问题是不是NP完全问题:
先确定问题是不是NP问题,然后可以将问题转换成NP完全问题,基本是和3-SAT问题相互转换
例如可以将3-SAT问题,转换成CLIQUE问题,转换过程:
可以看视频

你可能感兴趣的:(算法学习,计算理论导引)