NP-Completeness

1 / 37

# NP-Completeness - PowerPoint PPT Presentation

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.

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.

## PowerPoint Slideshow about 'NP-Completeness' - allistair-emerson

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

### 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
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?

• 假設以下兩樣存在
• 則B也沒有polynomial-time algorithm可以解
• 使用反證法,假設有

Polynomial-time reduction algorithm:

instances of A  instances of B

A: no polynomial-time algorithm exist

B: polynomial-time algorithm

Polynomial-time reduction algorithm:

instances of A  instances of B

A: polynomial-time algorithm

• 雖然是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.
Abstract problem

S: solutions

I: instances of problem

Q: Abstract problem(binary relation)

Decision problem:

S={0,1}

Example: PATH

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

otherwise

Encoding

A set S of abstract objects

The set of binary strings

encoding:mapping

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

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
P的正式定義

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

Abstract problem轉換成encoding problem

I: instances of problem

S: solutions

Q: Abstract problem(binary relation)

Decision problem:

S={0,1}

e(I): {0,1}*

e(Q): Concrete problem

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個

Encoding和花的時間有關嗎?
• 然而如果我們不考慮這麼極端的例子(unary), 大部分的encoding都不會影響到一個問題是否可以在polynomial time解決.
• 例: 使用三進位數和二進位數是沒有差別的, 因為我們可以在polynomial time裡面將三進位數轉換成二進位數.

input

f: {0,1}*{0,1}*

output

Polynomially related

I: instances of problem

Lemma:

: Concrete problem

if:

S: solutions

I: instances of problem

polynomially related

Q: Abstract problem(binary relation)

Decision problem:

S={0,1}

: Concrete problem

Then: if and only if

Proof:

• 因為是對稱的, 所以只需要證明一個方向.
• 假設可以在時間內解決(for some constant k)
• 假設對每個problem instance i, 轉換成需花(for some constant c),
• 則解決 (input為) 先花轉換成
• 再解決 (input為), 花
• c, k都是constant, 因此為polynomial time

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
A Formal-language Framework
• Operations on languages:
• Union, intersection
• Complement:
• Concatenation of :
• Closure or Kleene Star: …concatenation 自己k次

• 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
Accepts and Rejects
• An algorithm A accepts a string if, given input x, A outputs 1
• An algorithm A rejectsa 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 .
: 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.

• Complexity class: a set of languages, 是不是在其中由algorithm的complexity measure決定(ex. running time), 而此algorithm是決定一個string x是否屬於L.
• 使用這個方式, 我們可以重新定義P這個complexity class:

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.

• 對任何input x,A’ 利用A, 先執行steps. 如果這時候Aaccept x了,A’就accept x. 如果A還沒accept x, A’就reject x.
• A’使用A的overhead不會超過一個polynomial factor, 所以A’是一個可以decide L的polynomial time algorithm.

Algorithms that accepts/rejects/decides L

Algorithms that verify Lwith a certificate

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}
Hamiltonian cycles
• 暴力法?
• 檢查所有的vertex permutation需要not for any constant k.
• 目前還找不到polynomial time algorithm to decide/accept HAM-CYCLE
Verify會簡單一點嗎?
• 會!
• 假設告訴你某一個graph G是Hamiltonian, 然後告訴你一個vertex的序列(certificate)可以組成Hamiltonian cycle.
• 則我們可以在polynomial time裡面檢查:
• 這個vertex序列是不是真的是G裡面的vertex的permutation
• vertex序列的相鄰vertices之間是不是在G中有那個edge
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.
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.
What is in NP?
• HAM-CYCLENP
• if , then . Why?
• 可以做出一個algorithm是完全不甩certificate的, 就可以模擬出verification algorithm的效果
• 意思就是說.
• 但P=NP or not? (尚未得知)
Complexity class co-NP
• class NP is closed under complement?(尚未得知)
• 意思就是說的話, 否?
• co-NP: all languages that satisfies
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  解一個破全部, 一箭千雕
Reducibility
• 如果Q可以reduce成Q’, 則表示任何一個Q的instance都可以”換句話說”變成Q’的一個instance
• 一元一次方程式: ax+b=0可以視為一元二次方程式的特例: , 解出來可以得到對應的一元一次方程式解.
• 如果一個問題Q可以reduce成另外一個問題Q’, 則Q不會比Q’難解.
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
{"found_math": false, "script_math_tex": 0, "script_math_asciimath": 0, "math_annotations": 0, "math_alttext": 0, "mathml": 0, "mathjax_tag": 0, "mathjax_inline_tex": 0, "mathjax_display_tex": 0, "mathjax_asciimath": 0, "img_math": 0, "codecogs_latex": 0, "wp_latex": 0, "mimetex.cgi": 0, "/images/math/codecogs": 0, "mathtex.cgi": 0, "katex": 0, "math-container": 0, "wp-katex-eq": 0, "align": 0, "equation": 0, "x-ck12": 0, "texerror": 0}