楔子
这学期选了中大的神课CSCI5320,授课老师是蔡雷震教授,香港一位很牛的搞算法的老师。蒟蒻被这门课虐得意识模糊,下周考试,复习之余写点心得。
P问题 NP问题 NPC问题 NP-hard问题 区别
几个问题介绍网络上很多,这里简单回顾一下:
→ \rightarrow → P问题:多项式可以得到解
→ \rightarrow → NP问题:多项式时间可以验证一个解的正确性
→ \rightarrow → NPC问题:又称NP完备。NP问题中最难的一类,也就是说任何NP问题都可以在多项式时间内归约到这一类问题上。
我们要证明一个问题A是NPC问题一般可以分为两步:
1)首先A是NP问题,那么给定一个解,可以在多项式时间内验证该解是否正确。(**NP问题的要求**)
2)其次找到一个NPC问题B,B可以多项式时间内归约到A。也就是说A比B难,可以通过解A,把B解了。
→ \rightarrow → NP-hard问题:比NPC更难,在多项式时间内无法验证一个解的正确性。
我们要证明一个问题A是NP-hard问题一般可以分为两步:
1) 对问题A给定限制条件得到一个特例B问题
2)证明问题B是NPC问题。
可以看出NPC是NP问题和NP-hard问题的交集。
举个例子:
Dense Induced Subgraph:给定图 G G G,正整数 k k k和 l l l,是否存在 k k k个点的生成子图包含最少 l l l条边。
证明:令 l = C k 2 l=C_k^2 l=Ck2,那么该问题变成Clique问题(NPC问题)
常见的NPC问题
→ \rightarrow → Clique
给定图 G G G,正整数 k k