NP의 다른 정의 — 검증자와 증명서

NP를 “NTM이 다항식 시간에 푸는 문제”라 정의했다. 그런데 NP에는 전혀 다른, 더 직관적인 정의가 존재한다. 두 정의는 완전히 동치다.

이 포스트에서 다루는 내용
  • NP의 두 정의: Df1(NTM 기반)과 Df2(검증자/증명서 기반) — 두 정의는 동치
  • 증명서(Certificate): 어떤 입력이 언어에 속함을 증명해주는 힌트. 다항식 길이 이하
  • 검증자(Verifier): 입력과 증명서를 받아 다항식 시간에 검증하는 DTM
  • 암호학적 함의: PNPP \neq \text{NP}는 암호의 필요조건이지 충분조건이 아니다

앞선 글에서 NP를 “NTM이 다항식 시간에 결정하는 언어 클래스”로 정의했다. 이 정의는 수학적으로 명확하지만, 현실에서 NTM은 존재하지 않는다. NP를 더 현실적으로 이해할 수 있는 동치 정의가 있다.


NP의 두 가지 정의

Df1: NTM 기반 정의

LNP     다항식 시간 NTM M:L=L(M)L \in NP \iff \exists \text{ 다항식 시간 NTM } M : L = L(M)

NTM이 모든 계산 경로를 동시에 탐색하는 것을 허용한다. 경로 중 하나라도 accept 상태에 도달하면 accept한다.

Df2: 검증자(Verifier) 기반 정의

LNP     다항식 시간 DTM (검증자) V,  다항식 p:L \in NP \iff \exists \text{ 다항식 시간 DTM (검증자) } V,\ \exists \text{ 다항식 } p : xL    h, hp(x):V(x,h)=Yesx \in L \iff \exists h,\ |h| \leq p(|x|) : V(x, h) = \text{Yes}

여기서 hh증명서(Certificate) 또는 증인(Witness) 이라 한다. xx가 언어에 속한다는 사실을 증명해주는 힌트다.

NP의 검증자 모델. 입력 x와 다항식 길이의 증명서 h가 다항식 시간 검증자 V로 들어간다. Yes는 이 h가 x의 소속을 증명했다는 뜻이고, No는 이 h가 증명서가 아니라는 뜻일 뿐이다. x가 언어에 속하지 않는다는 결론은 모든 h에 대해 No일 때만 나온다
NP의 검증자 모델. 입력 x와 다항식 길이의 증명서 h가 다항식 시간 검증자 V로 들어간다. Yes는 이 h가 x의 소속을 증명했다는 뜻이고, No는 이 h가 증명서가 아니라는 뜻일 뿐이다. x가 언어에 속하지 않는다는 결론은 모든 h에 대해 No일 때만 나온다

증명서란 무엇인가?

증명서 hh는 네 가지 조건을 만족해야 한다.

  1. 존재 조건: xLx \in L이면, V(x,h)=YesV(x, h) = \text{Yes}hh가 반드시 존재한다.
  2. 건전성 조건: xLx \notin L이면, 어떤 hh를 제시해도 V(x,h)=NoV(x, h) = \text{No}다.
  3. 길이 조건: hp(x)|h| \leq p(|x|) — 입력 크기에 대한 다항식 이하
  4. 효율성 조건: V(x,h)V(x, h)가 다항식 시간에 Yes/No를 판정

조건 1과 2의 비대칭성 이 핵심이다. 증명서 hh는 “xx가 L에 속함”을 증명할 수 있지만, hh가 없다는 사실이 “xx가 L에 속하지 않음”을 증명하지는 않는다. 즉, V가 No를 출력했다고 해서 xLx \notin L이라는 뜻이 아니다 — 단지 그 hh가 올바른 증명서가 아닌 것이다.

구체적인 예: Longest Path 문제

그래프 GG, 두 정점 s,ts, t, 정수 kk가 주어졌을 때, GG에서 ss에서 tt까지의 단순 경로 중 길이가 kk 이상인 것이 존재하는지 판별하는 문제다.

  • 증명서: 길이 kk 이상의 구체적인 경로 (정점 목록)
  • 검증: 주어진 경로가 단순 경로인지, 길이가 kk 이상인지 확인 — 다항식 시간

증명서 없이 이 경로를 찾는 것(결정)은 어렵지만, 누군가 경로를 알려주면 검증은 쉽다. 이것이 NP의 핵심 직관이다.


암호학적 함의: 힌트의 비대칭성

P ≠ NP와 암호. 비밀키를 가진 Bob은 복호화 알고리즘을 다항식 시간에 돌리고, 키가 없는 Eve는 평문을 직접 복원해야 한다. P = NP라면 이 이점이 사라져 암호가 무너지지만, 거꾸로 P가 NP와 다르다고 해서 어떤 암호가 안전해지지는 않는다
P ≠ NP와 암호. 비밀키를 가진 Bob은 복호화 알고리즘을 다항식 시간에 돌리고, 키가 없는 Eve는 평문을 직접 복원해야 한다. P = NP라면 이 이점이 사라져 암호가 무너지지만, 거꾸로 P가 NP와 다르다고 해서 어떤 암호가 안전해지지는 않는다

“답을 찾기는 어렵고 맞는지 확인하기는 쉽다”는 비대칭성은 암호가 서 있는 자리와 모양이 같다.

  • Bob(수신자): 암호문 cc와 비밀키 kk를 가진다. 복호화 알고리즘을 돌려 다항식 시간에 평문을 얻는다.
  • Eve(도청자): 암호문 cc만 가진다. 키 없이 평문을 복원해야 한다.

다만 이 닮음을 안전성의 증명으로 읽으면 안 된다. PNPP \neq \text{NP}는 암호의 필요조건이지 충분조건이 아니다.

성립하는 방향부터 보자. P=NPP = \text{NP}라면 검증할 수 있는 것은 모두 풀 수 있으므로, 키를 가진 쪽만 빠르다는 이점이 사라지고 현대 암호는 무너진다. 이 방향은 옳다.

거꾸로는 성립하지 않는다. 이유는 셋이다.

  • 최악의 경우와 평균의 차이. NP-난해함은 “어떤 입력에서는 어렵다”는 최악의 경우 진술이다. 암호는 키 생성기가 실제로 뽑는 분포 위에서 어려워야 한다. 어려운 입력이 몇 개뿐이고 나머지가 쉬운 문제는 암호가 되지 못한다.
  • 다항식이 아니라는 것과 지수라는 것의 차이. PNPP \neq \text{NP}는 다항식 시간 알고리즘이 없다는 말일 뿐이다. nlognn^{\log n}처럼 어떤 다항식보다도 크면서 지수보다는 훨씬 작은 시간도 있다. “지수 시간 이상이 필요하다”는 결론은 여기서 나오지 않는다.
  • 어느 문제가 어려운지는 말해주지 않는다. PNPP \neq \text{NP}는 NP 안의 어떤 문제가 다항식 시간에 풀리지 않는다는 존재 진술이다. 내가 쓰는 암호를 깨는 문제가 그 어떤 문제인지는 별개다. 실제로 RSA가 기대는 정수 인수분해도, Diffie–Hellman이 기대는 이산 로그도 NP-완전이라고 알려져 있지 않다. 인수분해의 판정 버전은 NP와 coNP에 모두 속하는데, 이런 문제가 NP-완전이면 NP=coNP\text{NP} = \text{coNP}가 따라 나온다. 이 역시 참이라고 믿어지지 않는 등식이다.

그래서 암호의 안전성은 PNPP \neq \text{NP}가 아니라 더 강하고 더 구체적인 가정 위에 선다. 인수분해가 어렵다, 이산 로그가 어렵다, 격자 문제가 어렵다 같은 개별 가정들이며, 이들은 하나같이 평균적 난이도를 요구한다.

키는 증명서가 아니다. 비유가 편해서 키를 증명서 hh에 겹쳐 놓기 쉽지만 둘은 하는 일이 다르다. 검증자 VV는 Yes/No를 내놓는 판정기이고, 복호화는 평문을 내놓는 함수다. 그리고 증명서는 "xLx \in L"을 뒷받침하는 것이지 아는 사람만 가질 수 있는 비밀이 아니다. 두 그림에서 겹치는 것은 “가진 쪽과 갖지 못한 쪽의 비용이 다르다”는 모양 하나뿐이다.

쉽게 말하면

NP의 검증자 정의는 "답을 찾는 것은 어렵지만, 답이 맞는지 확인하는 것은 쉬운 문제들"이다. 암호는 이 비대칭성과 모양이 같다. Bob은 키가 있어서 빠르게 복호화하고, Eve는 키 없이 답을 찾아야 한다. 다만 "그래서 Eve가 반드시 오래 걸린다"까지는 PNPP \neq \text{NP}가 말해주지 않는다.


Df1과 Df2의 동치 증명

Df1 ⊆ Df2: NTM → 검증자

NTM MMxLx \in L을 accept할 때, 계산 트리에서 accept에 이르는 경로가 하나 이상 존재한다.

그 경로 자체를 증명서 hh로 사용한다.

  • MM이 다항식 시간 p(n)p(n) 안에 동작하므로, accept 경로의 길이도 p(n)p(n) 이하
  • 검증자 VVhh로 지정된 경로를 따라 MM을 시뮬레이션한다
  • MM이 accept하면 VV는 Yes를 출력한다

따라서 LDf1LDf2L \in \text{Df1} \Rightarrow L \in \text{Df2}

Df2 ⊆ Df1: 검증자 → NTM

검증자 VV와 다항식 pp가 존재해 xL    h,hp(x):V(x,h)=Yesx \in L \iff \exists h, |h| \leq p(|x|) : V(x,h) = \text{Yes}라 하자.

NTM을 다음과 같이 구성한다:

  1. 비결정론적으로 길이 p(x)p(|x|) 이하의 모든 가능한 hh를 열거한다
  2. hh에 대해 V(x,h)V(x, h)를 실행한다
  3. V(x,h)=YesV(x, h) = \text{Yes}인 경우 accept한다
  • hh의 길이는 p(x)p(|x|) 이하이므로, 가능한 후보의 수는 유한하고, NTM은 이를 비결정론적으로 선택할 수 있다
  • VV가 다항식 시간에 동작하므로, 전체 NTM도 다항식 시간 안에 동작한다

따라서 LDf2LDf1L \in \text{Df2} \Rightarrow L \in \text{Df1}


결론

Df1 (NTM 기반)Df2 (검증자 기반)
핵심 아이디어모든 경로를 동시에 탐색힌트가 있으면 빠르게 검증
직관병렬 탐색힌트의 비대칭성
증명서암묵적 (경로 = 증명서)명시적 (증명서 hh)
동치 여부두 정의는 완전히 동치
핵심 정리: NP의 검증자 정의
  • NP = "다항식 길이의 증명서가 존재하면, 다항식 시간에 검증할 수 있는 언어 클래스"
  • Df1(NTM)과 Df2(검증자)는 동치다 — 증명서 = NTM accept 경로, NTM = 증명서를 비결정론적으로 추측하는 기계
  • P=NPP = \text{NP}라면 암호는 무너진다. 거꾸로 PNPP \neq \text{NP}가 어떤 암호의 안전성을 보장하지는 않는다. 평균적 난이도와 개별 가정이 더 필요하다
  • NP 문제의 어려움은 "풀기"에 있지 "검증하기"에 있지 않다 — 이 비대칭성이 암호의 출발점이다
다음 포스트

NP-Complete — NP에서 가장 어려운 문제들 — NP 안에서도 특별한 위치를 차지하는 NP-Complete를 정의하고, Reduction(귀착) 개념과 Cook의 정리를 통해 SAT가 최초의 NP-Complete 문제임을 증명하는 과정을 살펴본다.

© 2026 XsQuare01. Powered by GitHub Pages. · 방문자