Skip to content

Lecture 10. NP Complete NP 完全 ​

EXPTIME 指数时间类 ​

exp 是 exponential 的意思。

定义:,即所有在指数时间内可判定的语言的集合(集合的集合)。

故:。但是我们不知道 是否是更小的确定性时间复杂度类的子集。(怎么听起来有点像连续统假设呢?)

3-SAT 问题与 CLIQUE 问题 ​

首先定义 合取范式(Conjunctive Normal Form,CNF):具有 形式的布尔表达式。其中每个括号包起来(子句,clause)的都用 连接,括号与括号之间用 连接。相当于数电当中学的 POS 形式。如果 CNF 是可满足的,那就意味着每一个子句当中,都至少有一个变量能取到真。

另外,定义 3CNF 表示每个从句都恰好含有 3 个变量。

最后定义:。

此外还有一个 团(clique) 的概念:k-clique 指的是一个图当中大小为 的完全连通子图。

。

定理: 多项式时间可归约到 ,即 。因为 是可满足的,当且仅当图 拥有一个 -clique。其中 是子句的数量。证明可以考虑分别从两个方向进行:

  • 充分性():若 可满足,意味着 的 个子句当中都至少有一个变量取真。那么把这 个变量抽出来,就可以形成一个 -clique。
  • 必要性():假如存在一个 -clique,由于每个子句当中的三个节点都互不连通,所以团当中的任意两点都不在同一个子句,所以团里的 个节点恰好来自 个不同的子句。直接把这 个变量赋值真(由于 与 之间没有连边,所以这样赋值不会产生 与 同时真的情况),这样这个 就可满足了。

这个证明完全没有用到 的性质,所以对于任意的 问题,都可以多项式时间可归约到 。

推论:。

NP-完全 ​

定义:若语言 且 则称 是 NP-完全 的。

也就是说,NP-完全类,像是一个标杆。

要证明某个问题是 NP-完全的,可以先证明这个问题是 NP 的,再找一个已知的 NP-完全问题,证明两个问题之间多项式时间可归约。

NP 完全类对于证明 有重要作用。

常见 NP 完全问题 ​

  • SAT 问题(库克-列文定理)
  • 3-SAT 问题
  • CLIQUE 问题
  • VERTEX-COVER 问题(顶点覆盖问题)
  • HAMPATH 问题(哈密顿路径问题)
  • UHAMPATH 问题(无向图的哈密顿路径问题)
  • SUBSET-SUM 问题(子集和问题)

HAMPATH 问题的 NP 完全性证明 ​

核心是证明 3-SAT 多项式可归约到 HAMPATH。

没学明白。考试不考。

UHAMPATH 问题的 NP 完全性证明 ​

先证明 NP 性:非确定性的选择一条路径,然后检查是否恰好包含所有节点各一次即可。

然后证明