AI 기반 접근법을 사용하여 NP-complete 문제를 해결하는 연구 프로젝트입니다.
이 프로젝트는 전통적으로 해결하기 어려운 NP-complete 문제들을 현대 AI 기술로 다루는 방법을 탐구합니다:
- 머신러닝: 강화학습(DQN, PPO), 그래프 신경망(GNN), 지도학습
- LLM: Few-shot 프롬프팅, Chain-of-Thought 추론, LLM 기반 탐색
- 전통적 방법: 탐욕 알고리즘, 유전 알고리즘, 담금질 기법
- TSP (Traveling Salesman Problem) - 외판원 문제
- SAT (Boolean Satisfiability) - 충족 가능성 문제
- Graph Coloring - 그래프 색칠 문제
- Knapsack Problem - 배낭 문제
- Vertex Cover - 정점 덮개 문제
np-complete-program-solver/
├── src/
│ ├── problems/ # NP-complete 문제 정의
│ ├── solvers/ # 다양한 솔버 구현
│ │ ├── traditional/ # 전통적 알고리즘
│ │ ├── ml/ # 머신러닝 기반
│ │ └── llm/ # LLM 기반
│ ├── models/ # ML 모델 정의
│ ├── evaluation/ # 평가 프레임워크
│ └── utils/ # 유틸리티 함수
├── notebooks/ # Jupyter 노트북 예제
├── tests/ # 단위 테스트
├── docs/ # 문서
├── examples/ # 사용 예제
├── benchmarks/ # 벤치마크 데이터셋
└── results/ # 실험 결과
# 저장소 클론
git clone https://github.com/yourusername/np-complete-program-solver.git
cd np-complete-program-solver
# 가상환경 생성
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# 의존성 설치
pip install -r requirements.txtfrom src.problems.tsp import TSPProblem
from src.solvers.ml.dqn_solver import DQNSolver
# TSP 문제 생성
problem = TSPProblem(num_cities=20)
# DQN 솔버로 해결
solver = DQNSolver()
solution = solver.solve(problem)
print(f"최적 경로: {solution.path}")
print(f"총 거리: {solution.cost}")- ✅ 빠른 실행
- ✅ 이해하기 쉬움
- ❌ 최적해 보장 어려움
- ✅ 패턴 학습 가능
- ✅ 대규모 문제에 확장 가능
- ❌ 학습 시간 필요
- ✅ 제로샷/퓨샷 학습
- ✅ 추론 과정 해석 가능
- ❌ API 비용
- ❌ 대규모 문제에 제한
# TSP 문제에 대한 모든 솔버 비교
python -m src.evaluation.benchmark --problem tsp --size 50
# 특정 솔버로 실험
python -m src.solvers.ml.train_dqn --problem tsp --episodes 1000
# LLM 기반 솔버 테스트
python -m src.solvers.llm.llm_solver --problem sat --model gpt-4기여를 환영합니다! Pull Request를 보내주세요.
이 프로젝트는 MIT 라이선스 하에 배포됩니다.
질문이나 제안사항이 있으시면 이슈를 등록해주세요.
- Reinforcement Learning for Combinatorial Optimization (Bello et al., 2016)
- Attention, Learn to Solve Routing Problems! (Kool et al., 2019)
- Learning to Solve NP-Complete Problems (Nowak et al., 2017)
- Large Language Models as Optimizers (Yang et al., 2023)