np-completeness
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 PresentationTRANSCRIPT
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?
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