NP,NPC和NP-hard概念

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
若A1多项式转换为A2,且A2∈NP,则A1∈NP
16
问题A2的难度不低于问题A1
2.1.4 NP完全问题类(NPC)
Cook在1971年给出并证明了有一类问题具有下述性质: (1)这类问题中任何一个问题至今未找到多项式时间算法; (2)如果这类问题中存在一个问题有多项式时间算法,则这 类问题都有多项式时间算法。
显 然 有 : P NP
构造字符串(解)的过程及验证算法 H 一起构成一个算法, 称为非确定多项式(时间)算法。
9
说明: 由定义可知,要证明一个判定问题是非确定多项式的, 有两处用到了多项式的限制: (1)S 的输入长度 d(S) 不超过 g(d(I))
(2) 对于算法 H,其计算时间 f(H) 不超过 g(d(I))。
网 络 优 化
Network Optimization
第 2 章
2.1
算法基础
NP,NPC和NP-hard概念
1
2.1.1 问题、实例与输入规模
问题 TSP 背包问题 整数线性规划 实例 问题中各参数:100个城市,城市间距离 d ij 已知. 问题中各参数: 4个物品,大小分别为4,3,2,2. 价 值分别为8,7,5,7. 包的大小为6. 问题中的n,A,b,c已知.
15
在 0-1 背包问题中,若 c j a j ( j 1, 2 , , n ) ,即体积=价值,得到一个特 殊 0-1 背包,也称为子集和问题(subset sum problem) 。其判定问题为:
对给定的整数 c j ( j 1, 2 , , n ) 和 b ,是否存在 {1, 2, , n } 的子集 B ,使 得
例2.7
适定性问题多项式转换为整数(0-1)线性规划问题.
SAT的一个实例是由 n 个逻辑变量和 m 个句子组成,输入长度是 m n.
将 “真”对应“1‖, “假”对应“0‖,令逻辑变量 x 对应整数 0 或 1, x 对应 1 x 。一个含 n 个变量的句子 C j ( j 1, 2 , , m ) 为“真” ,对应下列 不等式组有可行解:
n
解 W = i1 i 2 i n 的输入长度 d ( W )
( lo g
i1
2
i +1) n + n log 2 n
实例 I 的输入长度:由两城市间的非零距离 d ij 来决定。 d ij 的输入 长度不低于 m a x {1 ,lo g 2 | d ij |} ,因此,实例的输入长度:
(2) 算法 的这种转换过程使得实例 I 1 和 I 2 的解一一对应, φ 将实例 即
I1
的一个解 x 1 的输入转换为实例 I 2 的一个解 x 2 的输入,且 x 1 为 I 1 的
“是”答案 x 2 是 I 2 的一个“是”答案。
则称A1问题多项式转换为A2问题,算法φ称为问题A1到问题A2 14 的一个多项式转换(算法)(Transformation).
无论布尔变量 x 1 , x 2 如何赋值,上述表达式都不可能为真,即该表达 式不是适定的。
适定性问题(SAT 问题) :给定包含 n 个布尔变量的 m 个句子
C 1 , C 2 , ..., C m ,布尔表达式 C 1 C 2 ... C m
是适定的吗?
6
例2.4 三精确覆盖(3-Exact Covering:X3C) 已知 S { u 1 , u 2 , ..., u 3 m } 的n个子集构成的子集族
xi C

xi
j
xi C

(1 x i ) 1,
j
j 1, 2 , , m
x i {0 , 1}, i 1, 2 , ..., n
等价于一个整数(0-1)线性规划问题(目标可以任意)。 进一步,该映射可以在SAT实例的输入长度 m n 的多项式时间内完成
适定性问题多项式转换为整数(0-1)线性规划(判定)问题
2
2.1.2 判定问题
定义2.1 如果一个问题的每一个实例只有“是”或“否”两 种 答 案 , 则 称 这 个 问 题 为 判 定 问 题 (Decision / recognition / feasibility problem). 称有肯定答案的实 例为“是”实例(yes-instance). 称答案为“否”的实例为 “否”实例或非“是”实例(no-instance). 对任何一个优化问题, 可以考虑其三种形式:
F { S 1 , S 2 , ..., S n },
其中每个子集包含S中三个元素,F中是否存在m个子集
S i , S i , , S i
1 2 m
, ?
使得

m j1
Si S
j
若m个子集满足上式,则称这m个子集精确覆盖S.
7
2.1.3
一、定义
非确定多项式问题类(NP)
考虑将求解判定问题的算法分为两个阶段:
d
j1
n
i j i j1
z ,其中 i n 1 i1 。
满足 f (W ) 可行解。
d
j1
n
i j 对应判定问题的一个
4
例2.3 适定性问题(Satisfiability problem) 在逻辑运算中,布尔变量x的取值只有两个: “ 真 ” (1) 和 “ 假 ” (0) , 逻 辑 运 算 有 “ 或 (+)”,“与()”和“非(—). 文字集 { x 1 , x 2 , , x n ; x 1 , x 2 , , x n }
例2.2 TSP问题的判定问题。
最后返回 i1 的一个路径。判定问题为:
用 n 个城市的排列 i1 i 2 i n 表示商人从城市 i1 出发依次通过 i 2 i n ,
给 定 z , 是 否 存 在 n 个 城 市 的 一 个 排 列 W i1 i 2 i n , 使 得 :
f (W )
验证是否可行解的算法最多需 3m2 个加法和 3m 个比较,则
f ( H ) 3m + 3m 。
2
故,取 g ( x )
x
2
3
+ x 。所以三精确覆盖属于 NP。
13
二、多项式转换
在研究中,经常有这样一种思路,设法将几类问题归结为一个问题, 一点解决了这一个归结后的问题,其他的几类问题也就可以得到结 解决,称这种方法为归类或者归约。
j B
cj b ?
例2.8 三精确覆盖多项式转换为子集和判定问题。
Sj j cj
uiS

( n 1)
j
i 1
S (1,1, ,1) b

3m
( n 1)
i 1
i 1
结论:若A1多项式转换为A2,且A2∈P,则A1∈P
NP

11
例2.6 三精确覆盖属于NP。
集合 S 中共有 3m 个元素, 子集族 F 中的每个子集合对应一个 3m 维向量:向量的 3m 个分量对应 3m 个元素,元素包含在对应子 集中的分量为 1,余下的为 0.
例如: S ={ u 1 , u 2 , ..., u 6 } ,F 中的一个元素 S 1 { u 1 , u 2 , u 6 } ,对应向 量为 1 = (1 ,1 ,0 ,0 ,0 ,1 ) ,表示为一个字符串(110001)。
8
定义2.2 若存在一个多项式函数g(x)和一个验证算法 H,对一
类判定问题 A 的任何一个“是” 实例 I,都存在一个字符串 S是I的可行解,满足其输入长度 d(S) 不超过 g(d(I)),其中
d(I)为 I 的输入长度,且算法 H 验证 S 为实例 I 的可行解,
其计算时间 f(H) 不超过 g(d(I)),则称判定问题 A 是非确定 多项式的,简记为NP。 所有非确定多项式问题的集合用NP表示.
f H 1 ( d ( I )) g 2 ( f H 2 ( g 1 ( d ( I )))) ,
其中fH1(x)和fH2(x)分别表示算法H1和H2的计算时间与实例输 入长度x之间的关系,则称问题A1多项式归约为问题A2. 根据A2的算法H2, 构造A1的算法H1的过程,即映射 φ :H2 H1
(1)猜测阶段:求出或猜测该问题的一个解 (2)检查或验证阶段:一旦解已经选定,将猜测的解作为输 入,验证此解是否为该实例“是”的回答. 我们称实例“是” 回答的解为实例的可行解,否则称为不可行解. 求解一个实例是否存在回答“是”的解是难度较大的,对很多 优化问题,目前不能在多项式时间内完成。因此,考虑降低解 的要求,定义一类相对容易的问题: 对于一个判定问题的任意一个“是”实例,是否可以在多项式 时间内验证它确定就是“是”实例? 由此,得到一类更广泛的问题——非确定多项式问题类(NP)。
最优化形式(原形:最优解)
计值形式(最优值) 判定形式(上界)
难度降低
就有效算法的存在性而言,通常认为三种形式等价!
3
例2.1 线性规划问题(LP)的判定形式——LP判定问题: 给定一个实数值z,(LP)是否有可行解使其目标值不超过z?
T 即:给定z,是否有 { x | c x z , A x b , x 0 } ?
可以将上面的这两处多项式限制改变为: 存在两个多项式函数 g 1 ( x ) 和 g 2 ( x ) ,使得 d ( S ) g 1 ( d ( I )) 和
f ( H ) g 2 ( d ( I )) 。这样 g ( x ) 选择高阶的那个多项式即可。
10
例2.5 TSP 问题属于NP
对任何一个 n 城市的 TSP 判定问题,其解的形式为 {1, 2, , n } 的 一个排列 W = i1 i 2 i n 。
定义 2.3 给定问题 A1 和 A2,若存在一个多项式函数 g ( x ) 和 一个多项式算法 φ,满足:
(1)对 A1 的任何一个实例 I 1 ,算法 φ 将实例 I 1 的输入转换为 A2 的一 个实例 I 2 的输入,算法 为实例 I 1 的输入长度的多项式时间 g ( d ( I 1 )) ;
这类问题就是所谓的NP完全问题。
首先给出多项式归约的定义。
17
一、多项式归约
定义2.4 已知判定问题A1和A2,若存在多项式函数 g 1 ( x ) 和 g 2 ( x ) ,使得对A1的任何实例I,在多项式时间内构造A2的 一个实例,其输入长度不超过 g 1 ( d ( I )) ,并对A2的任何一 个算法H2,都存在问题A1的一个算法H1,使得H1算法调用H2 算法且使得计算时间
评价一个算法的依据是该算法在 最坏实例下 的计算时间与 C or C ( I ) O ( g ( d ( I ))) 实例输入规模的关系: ( I ) g ( d ( I )) 存在多项式函数 g(x) 满足上式时,算法为多项式算法
存在多项式算法的问题集合:多项式问题类(P) 比多项式问题类可能更广泛的一个问题类是非确定多项式 (Nondeterministic Polynomial,简记 NP ) 问题类 NP 类是通过判定问题引入的。
F 中 m 个元素 { S i , S i , , S i } 是 S 的一个精确三覆盖
1 2 m
相应的 m 个向量满足:

m j1
i (1, 1, , 1)
j
12
三精确覆盖问题任何一个实例的输入长度d(I)≥3m.
按字符串向量问题,精确三覆盖 ―是‖实例的任何一个解可以用 长度为 3m2 的字符表示,即 d ( S ) 3 m 2 。
d ( I ) m ax { n ( n - 1),log 2 | P |} n ( n - 1) ,其中 P = { d ij | d ij 0 } 。
n
若给定 TSP 实例的一个可行解,只需验证 f (W )
d
j=1
i j i j +1
z

验证算法里有 n 个加法和 1 个比较,故 f ( H ) n +1 。 取 g ( x ) x + 4 ,故 T S P
0 0 1 1 0 0 1 1
0 1 0 1 0 1 0 1
+ 0 1 1 1 0 0 0 1 —
文字集的任意一个子集中各元素(布尔变量) 的“或”运算组成一个句子,多个句子的“与” 运算组成一个表达式。
存在真值分配的表达式称为适定的(可满足的)。
0 1
1 0
5
例如,表达式 ( x 1 x 2 ) ( x 1 x 2 ) ( x 1 x 2 ) ( x 1 x 2 )
相关文档
最新文档