计算理论 第7章 复杂性理论 II NP类问题


计算理论导引 第7章 复杂性理论 II 的相关笔记,包括:NP类问题……

这部分重点内容在于,对于一个NP问题,如何构造它的多项式时间验证机合非确定的多项式时间判别机。

第7章笔记 (II)

7.3 NP 类

验证机与判别机

验证机(Verifier)

两个 N P NP NP 问题:

  • H A M P A T H = { < G , s , t >   ∣   G HAMPATH=\{ {\lt}G,s,t{\gt}{\,}|{\,}G HAMPATH={<G,s,t>G 是包含从 s s s t t t 的哈密顿路径的有向图 } \} } (恰好经过每个顶点一次)
  • C O M P O S I T E S = { x   ∣   x = p q , COMPOSITES=\{x{\,}|{\,}x=pq, COMPOSITES={xx=pq, 整数 p , q   >   1 } p, q{\,}{\gt}{\,}1\} p,q>1} (合数问题)

特点:无法在多项式时间内求解,但是对于某个具体的例子,可以在多项式时间内验证

Def 7.15:语言 A A A验证机 是一个算法 V V V ,这里:

A = { w   ∣   对 某 个 字 符 串   c , V   接 受 < w ,   c > } A=\{w{\,}|{\,}对某个字符串{\,}c,V{\,}接受{\lt}w,{\,}c{\gt}\} A={wcV<w,c>}

  • 多项式时间验证机:在 w w w 的长度的多项式时间内运行
  • 多项式可验证的:若语言 A A A 有一个多项式时间验证机,则称它为多项式可验证的
  • c c c 称为 A A A 的成员资格 证书证明

(验证机 V V V 根据证书 c c c 来验证 w w w 是否为 A A A 的成员,因此多项式时间验证机的证书长度具有 w w w 长度的多项式长度,并且对于具体的 w w w c c c 是具体的,并不是一成不变的)

对于上面列举的两个问题,其证书分别为:

  • 字符串 < G , s , t >   ∈   H A M P A T H {\lt}G,s,t{\gt}{\,}{\in}{\,}HAMPATH <G,s,t>HAMPATH 的证书就是从一条从 s s s t t t 的哈密顿路径
  • 对问题 C O M P O S I T E S COMPOSITES COMPOSITES ,合数 x x x 的证书为其一个因子

Def 7.16 N P NP NP 是具有多项式时间验证机的语言类

判定机(Decider)

N P NP NP非确定型多项式时间(nondeterministic polynomial time)<span id="HAMPATH">

H A M P A T H HAMPATH HAMPATH 问题 N 1 = N_1= N1= “对输入 < G , s , t > {\lt}G,s,t{\gt} <G,s,t> ,这里 G G G 是包含节点 s s s t t t 的有向图”,构造一个非确定型图灵机( N T M NTM NTM):

① 写一列 m m m 个数 p 1 , p 2 , . . . p m p_1, p_2,...p_m p1,p2,...pm m m m 是图 G G G 的结点数, p i   ∈   N p_i{\,}{\in}{\,}N piN p i   ∈   [ 1 , m ] p_i{\,}{\in}{\,}[1,m] pi[1,m]

② 检查数列 p i p_i pi 重复性,若发现有重复,则 拒绝

③ 检查 s = p 1 s=p_1 s=p1 t = p m t=p_m t=pm 是否都成立,若有一个不成立,则 拒绝

④ 检查边 ( p i , p i + 1 ) (p_i,p_{i+1}) (pi,pi+1) i   ∈   [ 1 , m − 1 ] i{\,}{\in}{\,}[1,m-1] i[1,m1] 是否属于图 G G G 中,若有其中一条边不成立,则 拒绝

分析:① - ④ 的每一步在多项式时间内可完成,于是此算法在非确定型图灵机的多项式时间内可完成

Th 7.17 :一个语言在 N P NP NP    ⟺    {\iff} 它能被某个非确定型多项式时间图灵机判定

左到右

A   ∈   N P A{\,}{\in}{\,}NP ANP,已知存在多项式时间验证机 V V V ,假设 V V V 在时间 n k n^k nk 内运行,要构造一 N T M NTM NTM N N N 可判定 A A A ,构造如下:对于长为 n n n 的输入 w w w

① 非确定地选择最长为 n k n^k nk 的字符串 c c c 作为证书

② 在 V V V 上运行 < w , c > {\lt}w,c{\gt} <w,c>

③ 若 V V V 接受,则 <em>接受</em> ;否则 <em>拒绝</em>

(选择证书 c c c 的长度为 n k n^k nk ,是因为 V V V 最多处理长度为 n k n^k nk 长度的字符串)

右到左

已有一 N T M NTM NTM N N N 可判定 A A A ,要构造多项式时间验证机 V V V 如下:对输入 < w , c > {\lt}w,c{\gt} <w,c> ,

① 在 N N N 上运行 w w w ,但把 c c c 中每一个字符看作每一步所做的非确定性选择的描述

② 若 N N N 当前计算分支接受,则 <em>接受</em> ;否则 <em>拒绝</em>

(证书 c c c 其实就代表了非确定型图灵机对于输入 w w w 的一个分支,也就是此时的 N T M NTM NTM 实际上是 D T M DTM DTM

Def 7.18:定义 N T I M E ( t ( n ) ) NTIME(t(n)) NTIME(t(n)) 为被 O ( t ( n ) ) O(t(n)) O(t(n)) 时间的非确定型图灵机所判定的语言集合

Th 7.19 N P = ∪ k N T I M E ( n k ) NP={\cup}_kNTIME(n^k) NP=kNTIME(nk)

(所有非确定型计算模型都是多项式等价的,因此 N P NP NP 对具体计算模型的选择不敏感)

(非确定型计算模型的某一具体分支是多项式时间内可完成的,所以总的来说也是多项式时间内可完成的;但是转化为确定的单带图灵机就需要指数时间了)

(大家要关注decider和verifier的区别,判别机对应验证机)

NP 问题举例

团(Clique)

Def 为一个无向图中的完全子图,k团 为包含 k k k 个节点的团

fct-7-4

Def C L I Q U E = { < G , k >   ∣   G CLIQUE=\{ {\lt}G,k{\gt}{\,}|{\,}G CLIQUE={<G,k>G 是包含 k k k 团的无向图 } \} }

Th 7.20 C L I Q U E   ∈   N P CLIQUE{\,}{\in}{\,}NP CLIQUENP

思路:可以构造多项式时间的验证机来证明,也可以构造多项式时间的非确定型判定机来证明

证法一:构造验证机 V V V ,对于输入 < < G , k > , c > {\lt}{\lt}G,k{\gt},c{\gt} <<G,k>,c> ,(证书 c c c 即为团)

① 检查 c c c 中是否有 k k k 个节点,且都属于 G G G

② 检查 c c c 中所有边是否都在 G G G

③ 若两项检查都通过,则 <em>接受</em> ;否则 <em>拒绝</em>

分析:两项检查都与 G G G 的点数或边数的多项式相关

证法二:构造判定机器 N N N ,对于输入 < G , k > {\lt}G,k{\gt} <G,k>

① 非确定地从 G G G 中选择带有 k k k 个节点的子图 c c c

② 检查 G G G 中是否包含 c c c 中所有结点两两相连的边;

③ 若通过 ② ,则 <em>接受</em> ;否则 拒绝

分析:① 中的选择有点像是上边 H A M P A T H HAMPATH HAMPATH 问题的

目标和子集

Def S U B S E T − S U M = { < x , t >   ∣   s = { x 1 , x 2 , . . . , x k } SUBSET-SUM=\{ {\lt}x,t{\gt}{\,}|{\,}s=\{x_1,x_2,...,x_k\} SUBSETSUM={<x,t>s={x1,x2,...,xk} 且存在 { y 1 , y 2 , . . . , y l }   ⊆   s \{y_1,y_2,...,y_l\}{\,}{\subseteq}{\,}s {y1,y2,...,yl}s 使得 Σ y i = t } {\Sigma}y_i=t \} Σyi=t}

Th 7.21 S U B S E T − S U M   ∈   N P SUBSET-SUM{\,}{\in}{\,}NP SUBSETSUMNP

思路:可以构造多项式时间的验证机来证明,也可以构造多项式时间的非确定型判定机来证明

证法一:构造验证机 V V V ,对于输入 < < S , t > , c > {\lt}{\lt}S,t{\gt},c{\gt} <<S,t>,c> ,(证书 c c c 即为某个子集)

① 检查 c c c 中的和是否为 t t t

② 检查 S S S 中是否不重复地包含 c c c 中所有数

③ 若两项检查都通过 ,则 <em>接受</em> ;否则 <em>拒绝</em>

分析:两项检查都与 S S S 的元素个数的多项式相关

证法二:构造判定机器 N N N ,对于输入 < S , t > {\lt}S,t{\gt} <S,t>

① 非确定地从 S S S 中选择一个子集 c c c

② 检查 c c c 中的和是否为 t t t

③ 若通过 ② ,则 <em>接受</em> ;否则 <em>拒绝</em>

注意 c o N P coNP coNP N P NP NP 中的语言的补语言,目前还无法知道二者的差别

P 与 NP 问题

P = P= P= 成员资格可以快速 判定 的语言类

N P = NP= NP= 成员资格可以快速 验证 的语言类

P类问题和NP类问题有精确定义:

P类问题NP类问题
确定型图灵机判别非确定型图灵机判别

目前已知最好判定语言是 N P NP NP 的确定型方法使用指数时间,只能证明

N P   ⊆   E X P T I M E = ∪ k T I M E ( 2 k ) NP{\,}{\subseteq}{\,}EXPTIME={\cup}_kTIME(2^k) NPEXPTIME=kTIME(2k)

但是无法判定是否 P ? = N P P?=NP P?=NP

fct-7-5
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Air浩瀚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值