느리지만 정확한 알고리즘 → 사용 불가
최적해를 포기 → 근사해(approximate solution)를 선택
병렬화(Parallelization)
| 상황 | 대응 방식 |
|---|---|
| NP 문제로 최적해 못 구함 | 근사 알고리즘 설계 |
| 계산 시간 너무 큼 | 병렬화로 속도 개선 |
| 설계로 해결 안됨 | 문제 자체의 복잡도 이론 분석 |

🔵 Unsolvable (해결 불가 문제들)
🟡 Countable (셀 수 있는 문제들)
🔵 Solvable (계산 가능 문제들)
🟢 P (다항 시간 해결 가능 문제)
🟢 NP (다항 시간 검증 가능 문제)
🟢 EXP (지수 시간 해결 문제)
Theory of Computation 과목의 핵심은 문제들을 계산 복잡도 관점에서 분류하는 것.
"P ⊆ NP ⊆ EXP ⊆ Solvable ⊆ Countable"
Q1. 0과 10 사이의 정수 개수?
→ Finite countable
Q2. 0과 10 사이의 실수 개수?
→ Uncountable (→ 오답: infinite countable ❌)
Q3. 0과 무한대 사이의 정수 개수?
→ Countably infinite
Q4. 0과 1 사이의 실수 개수 > 0과 10 사이의 정수 개수인가?
→ Yes (실수가 더 많음)
Q. 정렬 문제(Sorting, P)는 배낭 문제(Knapsack, NP)보다 쉬운가?
→ **문제의 난이도 클래스(P/NP)**를 분석하여 설계하고 증명해야 함
→ ⇒ proper design/analysis 가 필요
Easy problem
Intractable problem
P-class
EXP-class
예시: 정렬(Sort), 탐색(Search), 최단경로(Dijkstra) 등
특징:
요약: Fast, efficient, optimal
예시:
O(n^2) 불가, O(n!)은 가능 → 브루트포스만 가능O(n!) 필요특징:
예시: Knapsack, TSP, Graph Coloring, Subset Sum
NP-class에 속함
이 문제들은 아직:
중요한 이유:
→ 미래에 효율적 알고리즘이 발견될 수도 있음

| 분류 | 설명 | 예시 |
|---|---|---|
| P-class | 빠르게 풀 수 있음 | Sort, Search, Dijkstra |
| Intractable | 풀 수는 있지만 시간 너무 많이 걸림 | Hamiltonian Path |
| NP-class (미정) | 풀기 쉬운지 어려운지 아직 모름 | TSP, Knapsack |
| Uncomputable | 아예 풀 수 없음 | Halting Problem |
NP (Nondeterministic Polynomial time)는 다음을 만족하는 결정 문제(decision problem)들의 집합:
최적화 문제 (Optimization): 가장 짧은 경로 찾기 (optimal tour)
결정 문제 (Decision):
질문: TSP는 P에 속하는가? NP에 속하는가?
최적화 버전: 제한된 무게 내에서 최대 이익(profit)을 얻는 아이템 조합 찾기
결정 문제:
최적화 문제: 최소 색상 수로 그래프 색칠
결정 문제:
정의: 그래프 내의 완전 부분 그래프 (모든 정점이 서로 연결된 집합)
용도: Bioinformatics, SNS 분석 등
예시: clique size가 4인 부분 그래프(파란색), size=3 (초록색)
최적화 문제: 최대 clique 찾기
결정 문제: