np-completeness

37
NP- Completenes s Michael Tsai 2011/5/6

Upload: allistair-emerson

Post on 03-Jan-2016

40 views

Category:

Documents


0 download

DESCRIPTION

NP-Completeness. Michael Tsai 2011/5/6. Decision problem v.s . optimization problem. Decision problem: 輸出是 yes/no (1/0) ( 可不可以找到答案 ) Optimization problem: 輸出是最好的解 ( 可以的答案中找出最好的那個 ) 例子 : Shortest path v.s . Path NP-Complete 只適用於 decision problems. - PowerPoint PPT Presentation

TRANSCRIPT

NP-CompletenessMichael Tsai2011/5/6

2

3

Decision problem v.s. optimization problem Decision problem: 輸出是 yes/no (1/0)

( 可不可以找到答案 ) Optimization problem: 輸出是最好的解

( 可以的答案中找出最好的那個 ) 例子 : Shortest path v.s. Path NP-Complete 只適用於 decision problems

4

Decision problem v.s. optimization problem 怎麼將 optimization problem 轉換成

decision problem 呢 ? 對要 optimize 的值設定一個 bound 將 Shortest path 轉換成 decision problem: 給定 graph G, vertices u & v, integer k,

有沒有從 u 到 v 的路徑使用少於 k 個 edge?

5

Reduction

6

用 Reduction 證明”一樣難” 假設以下兩樣存在

則 B 也沒有 polynomial-time algorithm 可以解

使用反證法 , 假設有

A: no polynomial-time algorithm exist

Polynomial-time reduction algorithm:

instances of A instances of B

B: polynomial-time algorithmPolynomial-time reduction

algorithm:instances of A instances of B

A: polynomial-time algorithm 矛盾 . 所以 B 也沒有 .

7

為什麼 Polynomial time 就是”容易解” ? 雖然是 polynomial time, 但實務上這麼高次的多

項式並不常見 通常如果找到一個 polynomial-time algorithm,

比較快的方法很快也會被找到 通常使用不同的 computation model( 之後自動機

會教到 , 現在可以想像是單 CPU v.s. 多 CPU 的機器 ), 某 model 可用 polynomial-time 解的問題在另外一個 model 也可用 polynomial-time 解

Polynomials are closed under addition, multiplication, and composition.

8

Abstract problem

I: instances of problem

S: solutions

Q: Abstract problem(binary relation) Decision problem:

S={0,1}Example: PATH

𝑖=⟨𝐺 ,𝑢 ,𝑣 ,𝑘 ⟩

𝑃𝐴𝑇𝐻 (𝑖 )=0

if a shortest path from u to v has at most k edgesotherwise

9

Encoding

A set S of abstract objects

The set of binary strings

encoding:mapping

Polygons, numbers, graphs, functions, ordered pairs, programs, …

10

Some more definitions Concrete problem: 一個 problem 的 instance

是 binary string 的 set, 則稱為 concrete problem.

An algorithm solves a concrete problem in O(T(n)): 一個 problem 的 instance 長度為 n (i的長度 , 即為 binary string 長度 ), 而此algorithm 可在 O(T(n)) 時間產生解

A concrete problem is polynomial-time solvable: 有一個的 algorithm 可以解此problem

11

P 的正式定義

The complexity class P:The set of concrete decision problems that are polynomial-time solvable

12

Abstract problem 轉換成encoding problem

I: instances of problem

S: solutionsQ: Abstract problem(binary relation) Decision problem:

S={0,1}

e(I): {0,1}*

𝑒 : 𝐼→ {0,1 }∗

e(Q): Concrete problem

13

Encoding 和花的時間有關嗎 ? 有 ! 極端的例子 : unary input: integer k, running time: 假設 encoding 是 unary: 11111…1111 則在這樣的 case 下 input length: n running time: 可是如果以正常的 binary encoding 表示 input lennth: running time: Encoding 決定是 or !!

k 個

14

Encoding 和花的時間有關嗎 ? 然而如果我們不考慮這麼極端的例子 (unary), 大部分的

encoding 都不會影響到一個問題是否可以在polynomial time 解決 .

例 : 使用三進位數和二進位數是沒有差別的 , 因為我們可以在 polynomial time 裡面將三進位數轉換成二進位數 .

f: {0,1}*{0,1}*input output

如果 f 花 polynomial time 可以把任何 input轉成 output, 則稱為 polynomial-time computable

15

Polynomially related

I: instances of problem

𝑒1: {0,1 }∗𝑒1: 𝐼→ {0,1 }∗ 𝑒2: 𝐼→ {0,1 }∗

𝑒2: {0,1 }∗𝑓 12 (𝑒1 (𝑖 ) )=𝑒2(𝑖)

𝑓 21 (𝑒2 (𝑖 ) )=𝑒1(𝑖)

如果有和是 polynomial-time computable, 則和為polynomially related.

16

I: instances of problem

S: solutionsQ: Abstract problem(binary relation)

Decision problem:S={0,1}

𝑒1: {0,1 }∗𝑒1: 𝐼→ {0,1 }∗

: Concrete problem

𝑒2: {0,1 }∗𝑒2: 𝐼→ {0,1 }∗

: Concrete problem

polynomially related

if:

Then: if and only if

Lemma:

17

Proof: 因為是對稱的 , 所以只需要證明一個方向 . 假設可以在時間內解決 (for some constant

k) 假設對每個 problem instance i, 轉換成需

花 (for some constant c), 則解決 (input 為 ) 先花轉換成

再解決 (input 為 ), 花 c, k 都是 constant, 因此為 polynomial

time只要 encoding 都是”合理的” (“ 簡要的” ) 表示方式 , 一個問題的複雜度 ( 能否在 polynomial time 裡面解掉 ) 不會被encoding 影響 .

18

A Formal-language Framework An alphabet : a finite set of symbols A language over : 使用裡面的 symbol 組

合而成的字串 ( 不一定包含全部可能的字串 ) Ex: , (over )= empty string: empty language: : the language with all strings over

19

A Formal-language Framework

Operations on languages: Union, intersection Complement: Concatenation of : Closure or Kleene Star:

…concatenation 自己 k 次

20

應用 formal language framework…

Decision problem Q 的 set of instances 為

Q 的主要特性可以想成是會產生答案為 1(yes) 的這些instances

因此可以把 Q 重新定義為一個 language over , 而 例子 : PATH= is an undirected graph, is an

integer, and 從 u 到 v 在 G 裡面有一條路徑含有最多 k 條 edge

21

Accepts and Rejects An algorithm A accepts a string if, given

input x, A outputs 1 An algorithm A rejects a string if, given input

x, A outputs 0 The language accepted by an algorithm A

is the set of strings 注意 : L is accepted by A, 不一定表示會被 A

reject! (ex. 無窮迴圈 ) A language is decided by an algorithm A if

every binary string in L is accepted by A and every binary string not in L is rejected by A

A language is accepted in polynomial time if it is accepted by A and if A accepts x in time for a constant k and any length-n string .

22

: PATH The language PATH can be accepted in

polynomial time. 這句話什麼意思 ? 如果可以找到解 ( 從 u 到 v 在 G 裡面有一條路徑含

有最多 k 條 edge), 則可以在 polynomial time裡面說”有 (1, yes)”!

可以嗎 ? 可以 ! 用 BFS 找出最短路徑 , 然後看有沒有比 k 大 ( 只需 polynomial time)

假設我們設計這個 algorithm 發現比 k 大的話就無窮迴圈 , 這樣的話就沒有 decided in polynomial time.

23

使用 formal-language framework定義 complexity class P

Complexity class: a set of languages, 是不是在其中由 algorithm 的 complexity measure 決定 (ex. running time), 而此algorithm 是決定一個 string x 是否屬於 L.

使用這個方式 , 我們可以重新定義 P 這個complexity class:

𝑃={𝐿⊆ {0,1 }∗ :

24

Theorem: . Proof: The class of languages decided by

polynomial-time algorithms 是 the class of languages accepted by polynomial-time algorithms 的 subset.

所以我們只需要證如果 L is accepted by a polynomial-time algorithm, 它也可以decided by a polynomial-time algorithm.

假設 L 是被某 polynomial-time algorithm A accept.

我們要利用 A 做成一個 algorithm A’ 可以decides L.

25

因為 A accepts L in for some constant k, 所以我們也可以說 A accepts L 最多花steps for a constant c

對任何 input x, A’ 利用 A, 先執行 steps. 如果這時候 A accept x 了 , A’ 就 accept x. 如果 A 還沒 accept x, A’ 就 reject x.

A’ 使用 A 的 overhead 不會超過一個polynomial factor, 所以 A’ 是一個可以decide L 的 polynomial time algorithm.

26

Algorithms that accepts/rejects/decides

L

告訴你某個 instance 是不是有解 ( 在 L 裡面 )

Algorithms that verify L with a certificate

給你一個 certificate ( 可能是答案 ), 可以讓你檢查某個 instance 是不是有解 ( 在 L 裡面 )

給和一條 path p, 我們可以檢查 path 是不是真的是在 G 中 uv 的 path, 且長度是不是不超過 k. 此 p 是一個 certificate, 用來幫助algorithm 看此 instance 是不是屬於 PATH.

對 PATH 來說其實沒有太大差別 , 因為本來就可以在 polynomial time decide PATH. 但是對於其他問題可能有差別 !

27

Hamiltonian cycles A Hamiltonian cycle of an undirected

graph G=(V,E) is a simple cycle that contains each vertex in V.

Not all graph is Hamiltonian ( 找不到Hamiltonian cycle)

HAM-CYCLE={: G is a Hamiltonian graph}

28

Hamiltonian cycles 暴力法 ? 假設使用 adjacency matrix, n= 是 G 的

encoding 的長度 ( 也就是 ,m 是 G 中 vertex數 )

檢查所有的 vertex permutation 需要 not for any constant k.

目前還找不到 polynomial time algorithm to decide/accept HAM-CYCLE

29

Verify 會簡單一點嗎 ? 會 ! 假設告訴你某一個 graph G 是 Hamiltonian,

然後告訴你一個 vertex 的序列 (certificate)可以組成 Hamiltonian cycle.

則我們可以在 polynomial time 裡面檢查 : 這個 vertex 序列是不是真的是 G 裡面的

vertex 的 permutation vertex 序列的相鄰 vertices 之間是不是在 G 中

有那個 edge

30

Verification Algorithm Verification Algorithm: Algorithm A with two

arguments: Ordinary input string x Binary string y (certificate)

A verifies an input string x if there exists a certificate y such that A(x,y)=1.

The language verified by a verification algorithm A is

如果 x 在 L 裡面 , 則一定找得到 y. 如果 x 不在 L 裡面 , 則一定找不到 y.

31

The complexity class NP Complexity class NP: the class of

languages that can be verified by a polynomial-time algorithm.

A language L belongs to NP if and only if there exist a two-input polynomial-time algorithm A and a constant c such thatL=

Then algorithm A verifies L in polynomial time.

32

What is in NP? HAM-CYCLENP if , then . Why? 可以做出一個 algorithm 是完全不甩

certificate 的 , 就可以模擬出 verification algorithm 的效果

意思就是說 . 但 P=NP or not? ( 尚未得知 )

33

Complexity class co-NP class NP is closed under complement?

( 尚未得知 ) 意思就是說的話 , 否 ? co-NP: all languages that satisfies

34

NP-Complete languages “The hardest languages in NP” If NP-P is nonempty, then these in NP-

Complete are in NP-P (such as HAM-CYCLE)

Reducibility 解一個破全部 , 一箭千雕

35

Reducibility 如果 Q 可以 reduce 成 Q’, 則表示任何一個 Q

的 instance 都可以”換句話說”變成 Q’ 的一個 instance

一元一次方程式 : ax+b=0 可以視為一元二次方程式的特例 : , 解出來可以得到對應的一元一次方程式解 .

如果一個問題 Q 可以 reduce 成另外一個問題Q’, 則 Q 不會比 Q’ 難解 .

36

Reduction is polynomial-time reducible to , ( 寫成 )

if there exists a polynomial-time computable function f: such that for all , if and only if .

f: reduction function 用來計算 f 的 polynomial-time algorithm

F: reduction algorithm

37