Skip to content

NP问题

About 615 wordsAbout 2 min

2026-01-04

NP问题概述

P类问题:在多项式时间内可以解决的问题, 比如O(n)

NP类问题:给定一个证书,可以在多项式时间内验证此证书是否是问题的一个解的问题。比如,在哈密顿回路中,我们给出一个所有节点的序列,即证书,可以很容易在多项式时间内验证这个证书是否是一个哈密顿回路。

P问题一定是NP问题,如果一个问题是NP问题,那它是P问题?不知道

NPC问题(NP完全问题)

  • 是一个NP问题
  • 所有的NP问题都可以转化成此问题

NP难问题是NPC问题缺少第一个条件

判断是否NP问题

  • 给出一个证书,可否在多项式时间内判断他是否是原问题的一个解
  • 最优化问题需要转化为判断性问题(旅行商问题)

旅行商问题转化为:

  • 此图中是否存在权重为1的回路?如果存在那就是旅行商问题的解

如果能够证明一个判断性问题为NP难时,显然原问题也是NP难问题。

基本概念:归约性

一个问题Q1可以归约为另外一个问题Q2,需要满足以下两个条件:

  • 1、实例对应性:Q1的任意一个实例,通过函数f都可以转化成Q2的一个实例,且这个转化函数f必须为多项式时间;
  • 2、输出一致性:归约后的输出和原来的输出一致,如果algo1是Q1的算法,algo2是Q2的算法,则在相同输入下,algo1(Q1) = algo2(Q2)

归约具有传递性,如果问题A归约到问题B,问题B归约到C, 那么问题A可归约到问题C

基本概念:归约证明

多项式时间内,Q1的实例可以通过函数f转化成Q2的一个实例

P问题的证明

2合取范式CNF的可满足行问题SAT

定义: 2CNF-SAT,2CNF是一个布尔表达式,其由子句的“与”组成,而每个子句都由两个文字的‘或’组成,这些变量及其‘否’为文字,两个文字构成了一个子句,2CNF的可满足性问题是指是否存在一个赋值,使得2CNF为真。