본문 바로가기
알고리즘

NP-Complete Problems

by HJINHA 2021. 6. 29.

Optimization Problem vs Decision Problem

- Optimization Problem

- Find a feasible solution with the best value

- SHORTEST-PATH  가장 적은 edge로 가는 경로 찾기

- Decision Problem

- 답이 yes or no

- PATH: given a graph G and vertices u and v, and an integer k, is there a path from u to consisting of at most k edges?  k 이하로 가는 경로가 존재하는가?

 

Polynomial Time: Class P

- 어떤 상수 k에 대해 T(n)=O(nk) 라면 그 알고리즘은 Polynomial time(다항식 시간)에 수행된다.

- 어떤 문제에 대해 polynomial-time algorithm존재한다면problemclass P에 있다.

- 알고리즘이 polynomial time에 수행된다면 “efficient”

 

Some Problems are Very Hard

- 어떤 문제는, 알려진 polynomial time algorithm이 존재하지 않음.

- 0/1 knapsack problem, traveling salesperson problem(complete weighted graph가 주어지고, 최소비용으로 모든 vertex를 한번에 방문하는)

- Undecidable problems: 정확한 예 또는 아니오로 이끄는 알고리즘을 구성하는 것이 불가능한 결정 문제

 

- 0/1 knapsack problem

- input: n개의 item. i번째 item: (Vi dollar, Wi weight), W의 무게만큼 담을 수 있는 가방

- output: W이하 무게로 가장 많은 이익을 갖는 item들 선택 -> W이하 무게로 k 이상의 이익을 갖는 item들이 존재하는가 (optimal 에서 decision으로 바꿈)

- 제한 조건

1. item을 가져가든지/놓고가든지

2. item의 일부분만 가져갈 수 x

3. item은 한 번만 가져갈 수 있음

 

Non-Deterministic Polynomial Time: Class NP (비결정 다항 시간)

- 어떤 문제에 대해 non-deterministic polynomial-time algorithm이 존재하면 그 문제는 class NP에 있다.

­- , solution(certificate)을 다항 시간에 vertify 가능하다.

- 다항시간 안에 certificate verify만 할 수 있으면 NP

- 클래스 P에 속하는 문제들은 모두 클래스 NP에 속한다.

- PNP인건 아는데, P=NP인가? (아무도 증명 못했음.)

- (비결정론적 알고리즘(Nondeterministic algorithm)은 결정론적 알고리즘과는 달리, 동일한 입력이 주어지더라도 매번 다른 과정을 거쳐 다른 결과를 도출하는 알고리즘을 의미한다.)

 

NP Example

- 문제: 어떤 그래프가 weight가 최대 KMST(minimum spanning tree)를 갖는지 결정 (yes/no)

- Verification Algorithm: yesyes라 하고, 아니면 대답 안 함

- Analysis: certifictateTest하는 데 O(n+m) 시간이 걸리므로 그 알고리즘은 polynomial time에 수행 가능.

 

중간 정리

- class P: the class of decision problems that are polynomial bounded.

- class NP: the class of decision problems for which there is a polynomially bounded non-deterministic algorithm.

 

The Class NP-Complete

- problem QNP-hard이다: 클래스 NP 안에 있는 어떤 문제보다 쉽지 않다 (QNP안에 포함된다고 보장x)

- problem Q NP-complete이다: NP-hard면서 NP에 있는 문제

- 문제 P가 문제 Qreducible:

- 다음과 같은 polynomial reduction fuction (다항 축소변환 함수) T가 존재한다:

- 모든 string x(Pinput)에 대해,

- xPyes input이라면, T(x)Q에 대해 yes input이다.

- xPno input이라면, T(x)Q에 대해 no input이다.

- T는 다항 bounded time에 계산 가능하다.

- ex) P: N개 정수 중 최솟값 찾기, Q: 정렬하기

- 변환: 다항시간, Q: 다항시간이면 P: 다항시간에 해결 가능

 

Some NP-Complete Problems

- SET-COVER: 적은 수의 union으로 universe 만들기(최소 집합수)

- |U|={1,2,3,4,5}, S={{1,2,3},{2,4},{3,4},{4,5}}일 때 -> {1,2,3},{4,5} 고르면 최소

- SUBSET-SUM: n개 원소를 갖는 집합 Spositive int k가 주어졌을 때, 원소들의 합이 정확히 tsubset이 존재하는가?

- 위 둘다 reduction from VERTEX-COVER에 의해 NP-complete이다.

 

Traveling Salesperson Problem

- NP-complete by reduction from Hamiltonian-Cycle

- Hamiltonian cycle 문제를 TSP를 이용해 풀 수 있음

 

**증명해보자.

- P: Hamiltonian-cycle problem

- Q: TSP (NPC라고 증명하고 싶은 문제)

(그래프  G의 해밀턴 경로 p G의 모든 꼭짓점을 포함하는 경로이다. (정의에 따라, 경로는 꼭짓점을 중복하여 거치지 않는 보행이다.) 해밀턴 순환(Hamiltonian cycle)은 해밀턴 경로인 순환이다.)

 

1. class NP임을 증명

- certificate가 제시됐을 때, edge들의 sumk 이내인지 확인 -> 다항시간에 verify 가능 -> NP

2. NP-hard임을 증명

1) 다항시간에 input을 변환 (k=0)

- H.C에 있는, 기존 edgeweight0, 새로 채운 edgeweight1로 두고 k=0 되게 하면 기존 edge들만 방문하는 경로가 됨.

2) 문제의 답이 일치함을 보임

- 0으로만 방문하는 cycle이 존재 -> H.C에서도 존재

- 0으로만 방문하는 cycle이 존재x(weight 1edge를 하나라도 지나감) -> H.C에서도 존재x

결론: NP이고 NP-Hard이므로 NP-Complete이다.

 

SAT (Satisfiability)

: CNF (논리곱 정규형)

- booleann formula S에 대해, S1로 만드는 input 조합이 존재하는가?

1. CNF-SATNP임을 보인다. -> 수식 계산은 다항 시간에 verify 가능함. NP.

2. NP-Hard임을 보인다 -> circuit-sat으로부터 증명 가능 -> NPC이다.

'알고리즘' 카테고리의 다른 글

String Matching  (0) 2021.06.28
Dynamic Programming  (0) 2021.06.28
Transitive Closure, All-pairs Shortest Paths  (0) 2021.06.28
Graph optimization Problems and Greedy Algorithms  (0) 2021.06.28
Graphs and Graph Traversals  (0) 2021.06.28

댓글