Home

Published

- 6 min read

[ Concept ] P NP 문제

img of [ Concept ] P NP 문제

P 분류(P class)

판정 문제들을 분류하는 방법 중 하나

  • 판정 문제: 입력 값에 대해 예 / 아니오 답을 내릴 수 있는 문제

결정론적 튜링 기계에서 다항식 시간 안에 풀 수 있는 모든 문제를 포함

결정론적 튜링기계란?튜링 기계: 무언가를 계산하는 기계를 대표하는 가상의 장치 일반적인 컴퓨터 알고리즘을 수행할 수 있음결정론적 튜링 기계 어떤 명령어 실행 뒤, 다음 실행할 명령어가 확정됨 코어 하나에서 명령어를 순서대로 실행한다 생각할 것 즉, 코어 하나에서 실행되는 다항식 시간 알고리즘이 있는 문제는 P

NP 분류(NP class)

NP: 비결정적 다항식 시간(Nondeterministic Polyormial Time)

  • Not P가 아님(매우 중요함)

비결정론적 튜링 기계어떤 명령어 실행 뒤, 다음 실행할 명령어가 확정되지 않음 여러 개의 다음 명령어를 병렬적으로 실행하는 기계라고 생각하면 됨

결정론적 튜링 기계에서의 NP 문제

  • 일단 답이 있으면 그 답이 맞는지를 다항식 시간 안에 검증할 수 있음
  • 푸는 데는 지수 시간이 걸릴 수도 있음
    • 그래도 다항식 시간 안에 검증 가능

랜덤 접근 기계는 결정론적 튜링 기계

  • 랜덤 접근 기계: 레지스터를 갖춘 CPU 1개
  • 앞으로 별도 언급이 없으면 결정론적 튜링 기계를 의미
  • NP 문제를 일반적인 방법으로 풀기에는 좀 느림
    • 대신 무작위, 근사, 휴리스틱 알고리즘 등을 이용

다음 프로그램은 P? NP?

   public static boolean hasGreater(int[] nums, int k){
	for (int i =0; i< nums.length; ++i){
		if(nums[i] > k){
			return true;
		}
	}
	return false;
}

P 또는 NP가 아님!

  • 둘 사이의 판단 기준이 아예 다름
    • NP가 not P가 아님
  • 사실 모든 P 문제는 NP

NP - 완전(NP-complete, NPC) 문제

  • NP 문제중 일부
  • 모든 NP 문제들은 NP - 완전 문제로 환원 가능
    • 그것도 다항식 시간 안에
    • 여전히 NP 문제이니 다항식 시간 안에 답 검증 가능
  • 최소 다른 NP문제들만큼 어려운 문제
  • 따라서 NP 중에서도 가장 어려운 문제라고 할 수 있음

NP 완전 문제의 예

  • 외판원 문제(판정 버전)
    • 어떤 정해진 길이 L이 있음
    • 이 길이를 넘지 않는 경로가 있는지 판정
    • 나중에 그래프 배우면서 봄
  • 배낭 문제(knapsack) 문제
    • 크기와 가격이 다른 여러 물품이 있음
    • 값어치가 최대가 되도록 물건 넣기
    • 당연히 배낭에는 크기 제한이 있음
    • 판정 버전: 최소 어떤 값어치 V만큼 넣을 수 있는가?
      • 약한 NP - 완전 문제: 의사 다항식 시간 안에 풀 수 있음
  • 해법은 나중에 배움
    • 동적 계획법(dynamic programming)
    • 그리디(greedy) 알고리즘

NP - 난해(NP - hard) 문제

  • 최소 NP - 완전 문제만큼 어려운 문제들
  • NP - 완전 문제는 모두 NP - 난해 문제
  • NP가 아닌 문제도 있음
    • 즉, 다항식 시간에만 답 검증이 불가능한 문제
    • 당연히 NP보다 복잡도가 높은 문제

P vs NP 문제

  • P 또는 NP냐를 논하는 문제가 아님
  • P와 NP가 같은지 아닌지를 논하는 문제

P =NP vs P != NP

  • NP - 완전 문제는 NP문제 중 가장 어려운 문제
  • NP - 완전 문제 중 하나라도 다항식 시간 안에 풀 수 있다면?
    • 이 문제는 P가 됨
    • 모든 NP 문제를 NP - 완전 문제로 다항식 시간 안에 환원할 수 있음
    • 따라서 모든 NP 문제가 P가 됨(P = NP)
  • P = NP가 되면 디지털 사회에 미치는 여파는?
    • 느려서 못 풀던 그 많은 문제를 효율적으로 풀 수 있음