33
NPC 问问问问问问问 问问问 [email protected]

NPC 问题与近似算法

Embed Size (px)

DESCRIPTION

NPC 问题与近似算法. 林衍凯. [email protected]. Definition of NP-Completeness. 定义 : 如果一个问题 Y 可以通过调用问题 X 且通过 poly-time 的时间转化得到,我们称:. Definition of NP-Completeness. If X is P, then Y is P IF Y is NP, then X is NP. Definition of NP-Completeness. Example1 :. Independent Set & Vertex Cover - PowerPoint PPT Presentation

Citation preview

Page 1: NPC 问题与近似算法

NPC 问题与近似算法NPC 问题与近似算法林衍凯

[email protected]

Page 2: NPC 问题与近似算法

定义 : 如果一个问题 Y 可以通过调用问题 X

且通过 poly-time 的时间转化得到,我们称:

Definition of NP-Completeness

pY X

Page 3: NPC 问题与近似算法

If X is P, then Y is P

IF Y is NP, then X is NP

Definition of NP-Completeness

Page 4: NPC 问题与近似算法

Independent Set & Vertex Cover

IS: If there is IS of G in size of >=k

VC: If there is IS of G in size of <=k

Definition of NP-Completeness

Example1 :

Page 5: NPC 问题与近似算法

Observation:

S V is IS if and only if V\S is VC of the

graph G

Conclusion : IS VC & VC IS

Definition of NP-Completeness

p p

Page 6: NPC 问题与近似算法

Vertex Cover Set Cover

SC: Given a set U of elements,a collection

M of subset of U S1,S2…Sn,and a integer

k,ask if

Definition of NP-Completeness

Example2 :

p

[ ],& | | , . . ii S

S m S k s t S U

Page 7: NPC 问题与近似算法

Definition of NP-Completeness

我们怎样证明一个问题是 NPC 的呢?

Page 8: NPC 问题与近似算法

定义: 如果问题 X 满足以下条件,那么 X 属于NPC 。1.

2. 对于任意

Definition of NP-Completeness

X NP

, pY NP Y X

Page 9: NPC 问题与近似算法

Reducibility of NP-Completeness

Page 10: NPC 问题与近似算法

Reducibility of NP-Completeness

证明:The Clique Problem is Np-complete

①Show that a given clique can be checked in poly-time

②Show that 3-CNF-SAT Cliquep

Page 11: NPC 问题与近似算法

Reducibility of NP-Completeness

令 为一个 k 子句的 3-CNF ,且

1 2 ... kC C C 1 2 3r r r

rC l l l

我们如何构建一幅图 G(V,E) 将图的团和 3-

CNF 问题联系起来?

Page 12: NPC 问题与近似算法

Reducibility of NP-Completeness

Page 13: NPC 问题与近似算法

Reducibility of NP-Completeness

对于每个子句 ,我们在图中添加 3 个结点 ,如果结点 满足以下两个条件,就连边:1.

2.

1 2 3r r r

rC l l l

1 2 3, ,r r rV V V ,r si jV V

i jr si jl l

Page 14: NPC 问题与近似算法

Approximation Algorithm

例 1 : Load Balancing Problem

问题描述:

1. 给定n个工作,工作j需要时间 tj ,同

时拥有 m 台机器。2. 定义机器 i 的负载为:3. 定义总负载:4. 目标:最小化总负载

i

i jj M

T t

max ii

T T

Page 15: NPC 问题与近似算法

Approximation Algorithm

近似算法 1

每次任意选择一个未安排的工作,将它安排在当前负载最小的机器上

• 这是一个 2 倍近似算法

Page 16: NPC 问题与近似算法

Approximation Algorithm

证明:1.

2. 假设 Mi 是负载最大的机器,工作 j 是机器 i

最后一个工作,我们有:

1&& maxj j

jj

OPT t OPT tm

1

2*

i j kk

i j

T t t OPTm

Solution T OPT t OPT

Page 17: NPC 问题与近似算法

Approximation Algorithm

近似算法 2

每次选择一个未安排的工作中用时最多的,将它安排在当前负载最小的机器上

• 这是一个 1.5 倍近似算法

Page 18: NPC 问题与近似算法

Approximation Algorithm

例 2 : K-Center Problem

问题描述:1. 给定一张图 G(V,E) 满足 G 是 metric

2. 要求选择 k 个点作为图的中心3. 目标:最小化 max ( , )

( : ( , ) min ( , ))v V

u C

radius dist v C

ps dist v C dist v u

Page 19: NPC 问题与近似算法

Approximation Algorithm

近似算法 1

• 每次假设图的 radius (至多 |E| 个),然后执行以下算法 :

1. S=V C=empty

2. While S!=empty

choose an arbitary v in S

CC+v

3. if |C|<=k succeed else increase radius

Page 20: NPC 问题与近似算法

Approximation Algorithm

近似算法 2

1. C1 ={v} v 为图中任意点

2. for i=2 to k

choose vi s.t. Dist(vi,Ci-1) is

largest CiCi-1+Vi

Page 21: NPC 问题与近似算法

Approximation Algorithm

例 3 : Set Cover

算法:

Page 22: NPC 问题与近似算法

Approximation Algorithm

例 4 : Weighted Set Cover

问题描述:Set Cover 的加强,每个 subset 从

花费都是 1 变为花费为 Wi

Page 23: NPC 问题与近似算法

Approximation Algorithm

近似算法

每次选择 subset Si 且使得 Wi/ # of

uncovered elements covered by Si 最小

THM: 上述算法是一个 Hn 近似算法( Ps : Hn=1+1/2+1/3+…+1/n)

Page 24: NPC 问题与近似算法

Approximation Algorithm

贪心近似算法

每次选择 subset Si 且使得 Wi/ # of

uncovered elements covered by Si 最小

THM: 上述算法是一个 Hn 近似算法( Ps : Hn=1+1/2+1/3+…+1/n)

Page 25: NPC 问题与近似算法

Approximation Algorithm

证明:假设我们选择的 subset 为根据我们算法选择 subset 的规则,我们有:

为第 t 次后未被覆盖的结点数)

1,...,i itS S

1 (#it

tt

W OPTn

n

Page 26: NPC 问题与近似算法

Approximation Algorithm

证明(续):那么我们有

1 1

1 2

1 1 1

...

( ... )...

1 1( ... 1)

1*

i i

t

t

Solution W W

XX XOPT

n n X n X X

OPTn n

OPT Hn

Page 27: NPC 问题与近似算法

Approximation Algorithm

例 5 : Edge Disjoint Path(EDP)

问题描述:• 给定一个无向图 G(V,E)

• 给定一组二元组 T={(s1,t1),…(sk,tk)}

• 目标:寻找尽可能多的不相交道路使得这些道路起终点为给定二元组。

Page 28: NPC 问题与近似算法

Approximation Algorithm

• 算法网络流?

不行网络流无法保证 Si 以 Ti 为终

寻找近似算法

Page 29: NPC 问题与近似算法

Approximation Algorithm

• 近似算法repeat

pick an index i s.t. the shortest

path Pi from si to ti is shortest

delete Pi from the graph

THM :这个算法是一个 近似算法m

Page 30: NPC 问题与近似算法

Approximation Algorithm

例 5 :背包问题• 算法:对于给定的常数 c, k=

• 在改变价值的情况下用 DP 解决( polytime ),得到 Soltuion

n

c

max

ˆ ii

pp k

p

Page 31: NPC 问题与近似算法

Approximation Algorithm

• 在未改变的情况中选择 Solution 中的元素得到我们的近似解

• THM :这是一个( 1+c )近似算法

Page 32: NPC 问题与近似算法

Thank you

Page 33: NPC 问题与近似算法

Approximation Algorithm

更多的问题:• 旅行商问题• 最大割问题• 斯特林树问题