자료구조 | 알고리즘

[알고리즘] P vs NP

seulll 2024. 12. 11. 23:43

P vs NP 문제 : 컴퓨터가 답이 되는 몇 가지 경우는 빠르게 찾을 수 있지만, 최적의 답을 빠르게 찾을 수는 없는 모든 경우에 대한 문제

 

- P (Deterministic Polynomial time, 결정론적 다항 시간)

  • 다항식 시간복잡도를 가진 알고리즘으로 해결되는 문제 집합 (O(n), O(n²))
  • P 클래스는 입력 크기에 대해 다항 시간 안에 결정론적 순차 기계에서 해결할 수 있는 모든 결정 문제들을 포함

 

- NP (Non-deterministic Polynomial time, 비결정론적 다항 시간)

  • 비결정적 다항식 시간 알고리즘으로 해결되는 문제 집합 (O(n!), O(2^n))
  • NP 알고리즘은 주어진 해에 대해 'Yes'를 확인해야 하므로 결정 문제로 변형
  • NP 클래스는 긍정적인 해답을 주어진 정보로 다항 시간 안에 검증할 수 있는 결정 문제들 또는 비결정론적 기계에서 다항 시간 안에 해답을 찾을 수 있는 결정 문제들을 포함

- NP-complete 

  • 모든 다른 NP 문제를 다항 시간 내에 변환할 수 있는 문제 집합으로, 해결된 답을 다항 시간 내에 변환할 수 있는 문제 집합으로, 해결된 답을 다항 시간 내에 검증할 수 있는 문제들로 구성

- NP-hard

  • NP에 속하는 모든 문제에 대해 polynomial time many one reducible 문제들의 집합

* NP-hard이면서 NP인 문제: NP-complete  (subset sum)

* NP-hard이면서 NP-complete가 아닌 문제 (halting problem)