핵심 인사이트

  1. 다항 시간 환산(Polynomial Reduction, A ≤_p B)은 "문제 A를 문제 B로 변환할 수 있고, B를 다항 시간에 풀 수 있으면 A도 다항 시간에 풀린다"는 원리로 — NP-완전 증명의 핵심 도구이며, Cook-Levin 정리에서 SAT이 NP-완전임을 보인 방법이다.
  2. A ≤_p B의 방향성이 핵심 — "A가 B로 환산된다" = "B가 A보다 적어도 같거나 더 어렵다" = B가 A의 상한(upper bound), 이 방향을 혼동하면 복잡도 이론 전체가 뒤집힌다.
  3. 3-SAT ≤_p 3-Color ≤_p Clique ≤_p 독립 집합 ≤_p 정점 커버처럼 환산 체인을 구성하면 모든 NP-완전 문제가 서로 등가임을 증명할 수 있어 — 하나를 풀면 모두를 풀 수 있다는 NP-완전의 연대를 보여준다.

Ⅰ. 다항 시간 환산 정의

다항 시간 환산 (Polynomial-Time Reduction):

표기: A ≤_p B (A가 B로 다항 시간 환산된다)
또는: A ≤_m^p B (다항 시간 매핑 환산)

정의:
  다항 시간 함수 f: {0,1}* → {0,1}*가 존재하여
  모든 입력 x에 대해:
    x ∈ A  ⟺  f(x) ∈ B
  
  이때 f를 환산 함수 (Reduction Function)라 함

의미:
  A의 임의 인스턴스 x를 B의 인스턴스 f(x)로 변환
  f(x)에 대한 B의 답 = x에 대한 A의 답
  변환 시간: 다항 시간 O(n^k)

A ≤_p B의 복잡도 의미:
  B가 P에 속하면 → A도 P에 속함
  A가 NP-hard이면 → B도 NP-hard임
  
방향 주의:
  A ≤_p B: B가 더 어렵거나 같음
  B ≤_p A: A가 더 어렵거나 같음
  
  ≤_p는 "≤ (쉽다)" 방향 → A ≤_p B = "A는 B만큼 어렵지 않다"
  단, NP-완전 증명에서는 "B는 A만큼 어렵다 (NP-hard)"를 보이기 위해
  알려진 NP-hard A ≤_p B 방향으로 환산

📢 섹션 요약 비유: 다항 시간 환산은 언어 통역 — 한국어 문제(A)를 영어 문제(B)로 번역(환산)해서, 영어로 푼 다음 다시 한국어 답으로 번역. 번역 시간이 짧으면(다항 시간) 문제 풀이 효율이 그대로 유지.


Ⅱ. Cook-Levin 정리와 SAT

Cook-Levin 정리 (1971/1973):
  SAT (Boolean Satisfiability Problem) 이 NP-완전이다

SAT 정의:
  CNF (Conjunctive Normal Form) 수식이 주어졌을 때
  해당 수식을 참(True)으로 만드는 변수 할당이 존재하는가?
  
  예: (x₁ ∨ ¬x₂ ∨ x₃) ∧ (¬x₁ ∨ x₂) ∧ (x₂ ∨ x₃)
      x₁=T, x₂=T, x₃=F → 모든 절 참 → 충족 가능

Cook-Levin 증명 핵심:
  모든 NP 문제 A를 SAT로 환산 가능:
  
  비결정론적 튜링 머신 M이 A를 다항 시간 해결
  → M의 계산 과정 전체를 CNF 수식으로 인코딩
  → 수식이 충족 가능 ⟺ M이 w를 수락
  
  따라서 모든 NP 문제 A ≤_p SAT
  → SAT는 NP-hard
  → SAT는 NP에 속함 (검증이 다항 시간)
  → SAT는 NP-완전

3-SAT:
  각 절이 정확히 3개의 리터럴로 구성된 SAT
  SAT ≤_p 3-SAT (각 절을 3-리터럴로 분할 가능)
  3-SAT도 NP-완전

📢 섹션 요약 비유: Cook-Levin 정리는 수학의 공통분모 발견 — "모든 어려운 문제는 결국 SAT라는 하나의 공통 언어로 번역 가능하다"는 놀라운 사실.


Ⅲ. NP-완전 증명 방법

새 문제 X가 NP-완전임을 증명하는 방법:

1단계: X ∈ NP 증명
  해가 주어졌을 때 다항 시간에 검증 가능함을 보임

2단계: X가 NP-hard 증명
  알려진 NP-완전 문제 Y에 대해
  Y ≤_p X를 보임 (Y를 X로 환산 가능)
  
  → X가 Y만큼 어렵다 (NP-hard)

NP-완전 증명 예시: 3-Color

증명 대상: 그래프 G의 꼭짓점을 3가지 색으로 칠할 수 있는가? (3-Color)

1단계: 3-Color ∈ NP
  해 (각 꼭짓점 색 배정) 검증: O(E) → 다항 시간

2단계: 3-SAT ≤_p 3-Color
  3-SAT 수식의 변수와 절을 그래프로 변환:
    - 각 변수 xᵢ에 대해 xᵢ, ¬xᵢ 노드 + BASE 삼각형 추가
    - 각 절에 대해 OR-gadget 그래프 구성
    - 3-SAT가 충족 가능 ⟺ 그래프 3-색칠 가능
  
  변환 시간: 다항 시간 O(n + m)

결론: 3-Color는 NP-완전

환산 체인 예시:
  3-SAT ≤_p 3-Color ≤_p Clique ≤_p 독립 집합 ≤_p 정점 커버
  → 이 체인의 모든 문제가 NP-완전
  → 하나를 다항 시간에 풀면 모두 다항 시간에 풀림 (P=NP)

📢 섹션 요약 비유: NP-완전 증명은 자격증 인정 절차 — 새로운 자격증(X)이 어렵다는 걸 증명하려면 이미 어렵다고 인정된 자격증(Y)을 가진 사람이 자동으로 X도 딸 수 있음을 보이면 돼.


Ⅳ. 환산의 종류

다항 시간 환산의 종류:

1. 많은 일대일 환산 (Many-One Reduction, ≤_m^p):
   가장 기본적인 환산
   f(x)가 단일 인스턴스로 매핑
   X를 Y로 변환하는 함수 f만 필요

2. 튜링 환산 (Turing Reduction, ≤_T^p):
   오라클 호출을 허용하는 환산
   Y를 여러 번 호출 가능
   더 강력하지만 "≤_T" 표기
   NP-완전 증명에서는 보통 many-one 사용

3. 선형 시간 환산 (Linear-Time Reduction, ≤_lin):
   환산 시간이 O(n)
   더 세밀한 복잡도 구분에 사용

환산 방향 정리표:

문제 관계           | 환산 방향         | 결론
-------------------+-------------------+----------------------------
A가 B로 환산 (A≤_p B) | A → B         | B ≥ A의 난이도
                   |                   | B 해결 → A 해결 가능
                   |                   | A가 NP-hard → B도 NP-hard
B가 A로 환산 (B≤_p A) | B → A         | A ≥ B의 난이도
                   |                   | A 해결 → B 해결 가능

NP-완전 증명 핵심:
  기존 NP-완전 Y ≤_p 신규 문제 X
  → X가 Y 이상의 난이도 = NP-hard
  + X ∈ NP 추가 증명
  = X는 NP-완전

📢 섹션 요약 비유: 환산 방향은 물길 방향 — A ≤_p B는 "A에서 B로 물이 흐른다" = B 위에 A가 있다 = B가 A보다 아래(더 어렵거나 같다).


Ⅴ. 실무 시나리오 — 최적화 문제 NP-완전 증명

스케줄링 문제 NP-완전 증명 사례:

문제 정의: 작업 스케줄링 문제 (Job Scheduling)
  n개의 작업, m개의 기계
  각 작업에 처리 시간과 마감 기한
  모든 마감 기한을 지키면서 완료 가능한가?

NP-완전 증명:

1단계: Scheduling ∈ NP
  해 (각 작업의 기계 배정 및 시작 시간) 주어짐
  검증: 각 마감 기한과 기계 충돌 확인 → O(n*m) 다항 시간
  → 맞음

2단계: Partition ≤_p Scheduling
  Partition: 집합 S를 두 부분집합으로 나눠 합이 같게 가능한가?
  (Partition은 NP-완전으로 이미 알려짐)
  
  환산 f:
    Partition 인스턴스 (a₁, ..., aₙ, W/2)
    → Scheduling 인스턴스:
      n개 작업, 처리시간 = aᵢ
      2개 기계, 각 기계의 마감 = W/2
    
    Partition 해 존재 ⟺ Scheduling 해 존재
    변환 시간: O(n) 선형 시간
    
결론: Scheduling은 NP-완전

실용적 의미:
  스케줄링 문제가 NP-완전이므로:
  → 다항 시간 완전 해: 불가능 (P≠NP 가정 시)
  → 실용적 접근:
    Greedy 알고리즘 (빠르지만 최적 보장 없음)
    분기 한정법 (Branch & Bound): 작은 n에서 정확
    유전 알고리즘: 대규모 근사해

산업 적용 사례:
  TSP: 물류 배송 경로 최적화 → 근사 알고리즘
  배낭: 광고 예산 배분 → DP + 근사
  스케줄링: 클라우드 작업 배치 → Bin Packing 근사

📢 섹션 요약 비유: NP-완전 증명의 의의는 의사 진단 — "이 병은 치료가 어렵다"는 걸 증명해야 무리한 치료 시도를 멈추고 증상 관리(근사 알고리즘)로 전환할 수 있어요.


📌 관련 개념 맵

다항 시간 환산
+-- 정의
|   +-- A ≤_p B (A가 B로 환산)
|   +-- 환산 함수 f (다항 시간)
+-- 종류
|   +-- Many-one Reduction
|   +-- Turing Reduction
+-- 적용
|   +-- NP-완전 증명 도구
|   +-- Cook-Levin: SAT NP-완전
+-- 환산 체인
|   +-- 3-SAT → 3-Color → Clique → ...

📈 관련 키워드 및 발전 흐름도

[계산 가능성 이론 (1930s~40s)]
Turing 기계, 결정 불가능성
      |
      v
[Cook-Levin 정리 (1971)]
SAT NP-완전 증명 → 환산 기법 확립
      |
      v
[Karp의 21 NP-완전 문제 (1972)]
환산 체인으로 21개 문제 NP-완전 확인
      |
      v
[PCP 정리 (1992)]
근사 불가능성과 환산의 연결
이론적 근사 한계 증명
      |
      v
[현재: 미세 복잡도 (Fine-Grained Complexity)]
더 정밀한 환산: SETH (Strong ETH)
ETH 기반 알고리즘 하한 증명

👶 어린이를 위한 3줄 비유 설명

  1. 다항 시간 환산은 문제 번역 — 어려운 한국어 수학 문제를 영어로 번역(환산)하고, 영어로 풀고, 다시 한국어로 번역. 번역이 빠르면 풀이 속도는 그대로예요!
  2. A ≤_p B는 "A를 B로 번역 가능" = B가 A보다 어렵다는 뜻 — 어려운 문제로 쉬운 문제를 번역할 수 있다면 그 문제가 더 어려운 거예요.
  3. 환산 체인은 도미노 — 하나가 쓰러지면(다항 시간 풀림) 연결된 모든 문제가 같이 쓰러져요(모두 다항 시간에 풀림)!