OptAtlas
형식 문제

0/1 배낭 문제

용량 제약 아래 가치를 최대화하도록 항목을 고르기.

다른 이름: Knapsack Problem · 0/1 Knapsack · 배낭 문제

마지막 검증: 2026-05-27

정의

각 항목이 무게 wiw_i와 가치 viv_i를 가질 때, wixiC\sum w_i x_i \le C를 지키며 vixi\sum v_i x_i를 최대화하도록 xi{0,1}x_i \in \{0,1\}를 선택한다.

예시

용량 C=10C = 10인 배낭과 네 개의 항목이 있다고 하자.

항목무게 wiw_i가치 viv_i
1510
247
369
434

무게 합이 10을 넘지 않는 부분집합 중 가치 합이 가장 큰 것은 항목 {1,2}\{1, 2\}로, 무게 5+4=9105 + 4 = 9 \le 10, 가치 10+7=1710 + 7 = 17이다. 흥미롭게도 항목 {2,3}\{2, 3\}은 무게 4+6=104 + 6 = 10으로 용량을 꽉 채우지만 가치는 1616에 그친다 — 용량을 더 채운다고 해가 더 좋아지는 것은 아니다.

왜 여기 있나

배낭 문제는 절단·적재와 두 가지로 얽힌다: (1) 동적 계획법이라는 공통 방법, (2) 1D 절단 재고의 열 생성에서 가격 산정 부분문제가 곧 배낭 문제다.

관련 노드

아래 깊이 1 그래프를 참고하라.

주장 & 증거

모든 관계는 등가 수준과 증거 등급을 가진 하나의 주장입니다. 증거 정책을 참고하세요.

관계주장등가증거출처
사용 방법동적 계획법 (Dynamic Programming)0/1 배낭 문제는 의사다항(pseudo-polynomial) 동적 계획법으로 정확히 풀 수 있다.A
  • AKnapsack Problems
직접 벤치마크OR-LibraryOR-Library는 배낭 계열을 포함한 표준 테스트 인스턴스를 배포한다.B
  • BOR-Library
방법 공유1D 절단 재고절단 재고의 열 생성에서 가격 산정 부분문제가 (정수) 배낭 문제로 나타나, 두 문제는 방법론적으로 맞물린다.E3A
  • AA Linear Programming Approach to the Cutting-Stock Problem
사용 방법분기 한정 (Branch and Bound)0/1 배낭 문제는 동적 계획법 외에 분기 한정으로도 정확히 풀 수 있다.A
  • AKnapsack Problems
사용 방법정수 선형 계획법 (Integer Linear Programming)0/1 배낭 문제는 이진 변수와 단일 용량 제약을 갖는 0/1 정수 선형 계획으로 직접 정식화된다.A
  • AKnapsack Problems
오픈소스 구현Google OR-ToolsGoogle OR-Tools는 0/1 배낭을 푸는 KnapsackSolver를 오픈소스로 제공한다.C

이웃 그래프

직접 연결된 그래프 이웃입니다. 깊이를 전환해 확장하세요.

노드를 클릭하면 열리고 · 엣지를 클릭하면 주장이 보입니다

함께 보기

직접 연결되어 있지 않지만, 공유하는 연결과 설명으로 보아 개념적으로 가까운 노드입니다.