• 沒有找到結果。

NP-Completene ss

N/A
N/A
Protected

Academic year: 2022

Share "NP-Completene ss"

Copied!
37
0
0

加載中.... (立即查看全文)

全文

(1)

2011/5/6

(2)
(3)

ion problem

 Decision problem: 輸出是 yes/no (1/0) ( 可不可以找到答案 )

 Optimization problem: 輸出是最好的解 ( 可以的答案中找出最好的那個 )

 例子 : Shortest path v.s. Path

 NP-Complete 只適用於 decision problems

(4)

Decision problem v.s. optimizat ion problem

 怎麼將 optimization problem 轉換成 decisio n problem 呢 ?

 對要 optimize 的值設定一個 bound

 將 Shortest path 轉換成 decision problem:

 給定 graph G, vertices u & v, integer k, 有沒有從 u 到 v 的路徑使用少於 k 個 edge?

(5)
(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 algorithm Polynomial-time reduction

algorithm:

instances of A  instances of B

A: polynomial-time

algorithm 矛盾 . 所以 B 也沒有 .

(7)

易解” ?

雖然是 polynomial time, 但實務上這麼高次的多項 式並不常見

通常如果找到一個 polynomial-time algorithm, 比 較快的方法很快也會被找到

通常使用不同的 computation model( 之後自動機會 教到 , 現在可以想像是單 CPU v.s. 多 CPU 的機器 ) , 某 model 可用 polynomial-time 解的問題在另外一 個 model 也可用 polynomial-time 解

Polynomials are closed under addition, multipl ication, 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 edges

otherwise

(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 p roblem.

 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 sol vable: 有一個的 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: solutions Q: 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), 大部分的 e ncoding 都不會影響到一個問題是否可以在 polynomial ti me 解決 .

例 : 使用三進位數和二進位數是沒有差別的 , 因為我們 可以在 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: solutions

Q: 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  

polynomial ly related

if:

Then: if and only if

 

(17)

 因為是對稱的 , 所以只需要證明一個方向 .

 假設可以在時間內解決 (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)

 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 int eger, and 從 u 到 v 在 G 裡面有一條路徑含有最多 k 條 edge

 

(21)

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 s et of strings

注意 : L is accepted by A, 不一定表示會被 A reje ct! (ex. 無窮迴圈 )

A language is decided by an algorithm A if every binary string in L is accepted by A and every bi nary 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 polynomia l time. 這句話什麼意思 ?

如果可以找到解 ( 從 u 到 v 在 G 裡面有一條路徑含 有最多 k 條 edge), 則可以在 polynomial time 裡面 說”有 (1, yes)”!

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

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

 

(23)

義 complexity class P

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

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

� ={ � ⊆ { 0,1 } :

 

(24)

Proof:

The class of languages decided by polynomi al-time algorithms 是 the class of languages accepted by polynomial-time algorithms 的 su bset.

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

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

我們要利用 A 做成一個 algorithm A’ 可以 decid

es L.

(25)

s for a constant c

 對任何 input x, A’ 利用 A, 先執行 steps.

如果這時候 A accept x 了 , A’ 就 accept x.

如果 A 還沒 accept x, A’ 就 reject x.

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

(26)

accepts/rejects/decides L

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

Algorithms that verify L with a certificate

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

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

 

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

(27)

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

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

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

(28)

Hamiltonian cycles

 暴力法 ?

 假設使用 adjacency matrix, n= 是 G 的 encod ing 的長度 ( 也就是 ,m 是 G 中 vertex 數 )

 檢查所有的 vertex permutation 需要 not fo r 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 certifi cate 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 languag es that can be verified by a polynomial-t ime algorithm.

 A language L belongs to NP if and only if there exist a two-input polynomial-time a lgorithm A and a constant c such that

L=

 Then algorithm A verifies L in polynomial time.

 

(32)

What is in NP?

 HAM-CYCLENP

 if , then . Why?

 可以做出一個 algorithm 是完全不甩 certific ate 的 , 就可以模擬出 verification algorit hm 的效果

 意思就是說 .

 但 P=NP or not? ( 尚未得知 )

 

(33)

 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-Com plete 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 co mputable function f: such that for all , if and only if .

 f: reduction function

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

 

(37)

參考文獻

相關文件

The hashCode method for a given class can be used to test for object equality and object inequality for that class. The hashCode method is used by the java.util.SortedSet

Breu and Kirk- patrick [35] (see [4]) improved this by giving O(nm 2 )-time algorithms for the domination and the total domination problems and an O(n 2.376 )-time algorithm for

By exploiting the Cartesian P -properties for a nonlinear transformation, we show that the class of regularized merit functions provides a global error bound for the solution of

這些問題目前尚未找到可以在 polynomial time 內解決的 algorithm.. 這些問題目前尚未被證明無法在 polynomial time

If P6=NP, then for any constant ρ ≥ 1, there is no polynomial-time approximation algorithm with approximation ratio ρ for the general traveling-salesman problem...

The set of concrete decision problems that are polynomial-

Programming languages can be used to create programs that control the behavior of a. machine and/or to express algorithms precisely.” -

Data larger than memory but smaller than disk Design algorithms so that disk access is less frequent An example (Yu et al., 2010): a decomposition method to load a block at a time