CS공부/학점은행_알고리즘

14-2 NP 완전 문제

inji_ 2023. 9. 17. 18:07

1. 문제의 종류

① 문제의 종류

 - 풀 수 있는 문제와 풀 수 없는 문제로 나뉨.

 - 현실적인 시간안에 풀 수 없는 문제는 근사해를 구하는 것을 목표로 할 수 밖에 없음

 - NP 완전 문제

   : 현실적인 시간에 풀 수 없다 추정되면서 서로 강력한 연관성을 가진 특이한 문제군에 관한 것.

 

② 현실적인 시간

 - 다항식 시간을 의미 (= 현실적인 시간)

   > 문제의 크기가 n이면 그 문제를 푸는데 n의 다항식에 비례하는 시간이 드는 알고리즘

   > 어떤 문제가 다항식 시간에 해결되면 현실적인 시간에 풀 수 있다고 간주

 - 비현실적인 시간

   > 문제를 해결하는데 비다항식의 시간이 소요되면 현실적인 시간에 풀 수없는 경우로 간주 (지수시간, 계승시간)

 

2. YES/NO 문제와 최적화 문제

YES/NO 문제 - 결정문제

  - ex) 그래프 G에서 길이가 k이하인 해밀턴 경로가 존재하는가?

② 최적화 문제

  - ex) 그래프 G에서 길이가 가장 짧은 해밀턴 경로는 얼마인가?

3. NP 완전문제

P(polynomial)

  - 다항식 시간에 해결할 수 있는 문제들의 군

  - 결정문제들 중에서 쉽게 풀리는 것을 모아 놓은 집합

  -  다항식 시간 내에서 더 적은 시간을 소요하는 알고리즘을 개발하는데 초점 맞춰짐

  - 컴퓨터 같은 계산 장치를 이용해 합리적인 시간 내에 풀 수 있는 형태의 문

 

② NP (Nondeterministic Polynomial) : 비결정적 다항식 문제

 - 결정 문제들 중에서 적어도 검산은 쉽게 할 수 있는 것 모아 놓은 집합

 - 결정 문제의 답이 Yes일 때, 그 문제의 답이 Yes라는 것을 입증하는 힌트가 주어지면 그 힌트를 사용해서 

    그 문제의 답이 정말 YES라는 것을 다항식 시간 이내에 확인할 수 있는 문제

 - 일반적으로 모든 P문제는 NP문제임

 

③ NP  - 난해(NP hard) 문제

  - NP문제 보다 어렵고, 모든 NP문제를 다항식 시간 내에 어떤 문제로 환원할 수 있는 경우 그 문제를 NP 난해 문제라고 함

  - NP 난해 문제를 다항식 시간 내에 풀 수 있으면 모든 NP 문제를 다항식 시간 내에 풀 수 있음.

  - NP-난해 문제 중 NP 문제가 아닌 것도 있다.

 

④ NP- 난해 증명의 예

 - 해밀턴 사이클 문제가 NP 난해임을 알고 있다 가정

 -> 이를 이용해서 TSP 문제가 NP-난해임을 보일 수 있음

 NP- 완전문제

  - NP - 난해에도 포함, NP-문제에도 포함되면 NP- 완전 문제라고 부름

⑥ 현재까지 연구 결과

  - 어떤 문제가 NP-완전임이 확인되면 현실적 시간안에 풀 수 있는 방법 아직 없음

  - 명제 P=NP 증명 X

⑦ 다항식 시간 변환

⑧ NP 이론의 유용성

  - 어떤 문제가 NP 완전/난해임이 확인되면 

    > 쉬운 알고리즘 찾으려는 헛된 노력 중지

    > 주어진 시간 예산 내에서 최대한 좋은 해 찾는 알고리즘 개발에 집중

⑨ P와 NP의 포함관계

 

'CS공부 > 학점은행_알고리즘' 카테고리의 다른 글

14-1 문자열 매칭  (0) 2023.09.17
13-2 그리디 알고리즘  (0) 2023.09.13
13-1 벨만-포드 알고리즘  (0) 2023.09.13
12-2 플로이드 와샬 알고리즘  (0) 2023.09.06
12-1 다익스트라 알고리즘  (1) 2023.09.05