좋아, 이건 진짜 명작 환원이야.
**3SAT → SUBSET SUM**은
서로 완전히 다른 문제 세계인 **불 논리식**과 **정수 덧셈** 사이를
수학적으로 **완벽하게 대응**시키는 예술적인 구조지.
---
## 🎯 목적
> 어떤 3SAT 식이 주어졌을 때,
> 이를 만족시키는 변수 할당이 존재하는지
> → **SUBSET SUM** 문제로 바꿔서 판단
즉,
\[(x_1 \lor \neg x_2 \lor x_3) \land (\neg x_1 \lor x_2 \lor \neg x_3)\]
이런 논리식을
→ 정수들의 집합과 목표합 $T$으로 변환해서
→ "부분집합의 합이 $T$가 되도록 고를 수 있는가?"로 바꾼다.
---
## SUBSET SUM 문제란?
* 입력: 정수 집합 $S = \{s_1, s_2, ..., s_n\}$, 목표합 $T$
* 문제: $S$에서 일부 원소를 골라 합이 정확히 $T$가 되는가?
---
## 3SAT → SUBSET SUM 환원의 핵심 아이디어
### 핵심 철학:
> **변수를 선택한다** = **어떤 수를 고른다**
> **절을 만족시킨다** = **특정 자리수의 합이 조건을 만족한다**
→ **자리수 기반의 인코딩**이 포인트
---
## 환원 설계 개요
### 입력:
3SAT 식 with
* $n$개의 변수
* $m$개의 절 (각 절에 3개의 리터럴)
### 출력:
SUBSET SUM 문제 with
* $2n$개의 숫자 (각 변수의 참/거짓 선택지)
* 목표 합 $T$:
* 변수 자리 합이 $n$
* 각 절 자리 합이 ≥1 → 다 충족되었음을 의미
---
## ✍️ 숫자 구성 방식
### 각 숫자는 \*\*$(n + m)$\*\*자리 10진수로 구성됨:
| 자리 번호 | 의미 |
| 1\~n번 자리 | 어떤 변수가 선택되었는지 표시 (딱 하나 선택해야 함) |
| n+1\~n+m번 자리 | 어떤 절이 만족되었는지 표시 |
---
### 예: 변수 $x_1$
* $x_1$이 True일 때 포함할 숫자:
100010
* $x_1$이 False일 때 포함할 숫자:
010000
→ 1번째 자리: $x_1$ 선택됨
→ 4번째 자리: 해당 절(절 1)을 만족시킴
---
## 목표 합 $T$ 설정
* 변수 자리: 합이 정확히 $n$이어야 함 (변수는 하나씩만 선택)
* 절 자리: 합이 ≥ 1이어야 하므로, 정확히 1로 세팅해서 강제
$$ T = \underbrace{111\ldots1}_{n} \underbrace{111\ldots1}_{m} $$
→ 합이 딱 $T$가 되려면:
* 변수는 정확히 1개씩만 선택돼야 하고
* 각 절은 **최소한 하나의 리터럴에 의해 참**이 돼야 함
---
## 반대로, 절이 만족되지 않으면?
* 절 자리에 1이 들어오지 않음
→ $T$를 절대 만들 수 없음
→ SUBSET SUM에서 **해 없음**
→ 3SAT 식도 **불만족**
---
## 예시 간단히 (초미니 버전)
### 3SAT 식:
$ (x_1 \lor x_2) \land (\neg x_1 \lor x_2) $
* 변수: $x_1, x_2$
* 절: $C_1, C_2$
→ 자리 수: 4자리
(1~~2번 = 변수 자리, 3~~4번 = 절 자리)
### 수 만들기 (2n = 4개):
| 변수 선택 | 수 (자리별 의미) |
| --------- | ---------- |
| $x_1 = T$ | 1 0 1 0 |
| $x_1 = F$ | 1 0 0 1 |
| $x_2 = T$ | 0 1 1 1 |
| $x_2 = F$ | 0 1 0 0 |
→ 목표합: $T = 1 1 1 1$
→ 올바른 부분집합만 이 목표합을 만들 수 있음
→ 즉, 3SAT 식 만족 ↔ 부분집합 존재
---
## 결론
> 이 환원은 논리식을 수학적 합으로 변환하면서도
> **정보 손실 없이 정확히 대응**시킨 구조의 예술적인 사례다.
→ 특히 **자리수 인코딩**과 **합 조건 = 논리 만족**이라는 점이 혁신적임
---
원하면:
* 위 예제를 수치 코드로 완전하게 정리해줄 수 있고
* 반대로 SUBSET SUM → SAT 환원 구조 분석도 가능해
어디로 가볼까?
'Reduction' 카테고리의 다른 글
| Hamiltonian Cycle ↔ TSP (0) | 2025.06.30 |
|---|---|
| 3-SAT <-> Clique (0) | 2025.06.28 |