배낭채우기 문제란, 정해진 용량의 배낭이 있을 때, 이 배낭에 주어진 물건을 넣어서 최대한의 가치를 내는 문제이다. 각 물건은 고유한 무게와 가치가 있으며, 배낭에 들어가는 모든 물건의 무게의 합은 배낭 용량을 초과하지 못한다.
이 문제는 크게 0/1 Knapsack과 Fractional Knapsack으로 나뉜다.
0/1 Knapsack : 물건을 쪼갤 수 없다. 항상 배낭에 들어가지 않거나, 들어가거나 둘 중 하나이다. 동적 계획법으로 풀 수 있다. 이 문제의 경우에는 두 가지 유형이 있는데, 물건의 종류당 개수가 한정되어 있는 것과 무한정인 것 두 가지가 있다.
Fractional Knapsack : 물건을 쪼갤 수 있다. 무게당 가치를 구하여 Greedy를 이용해 풀 수 있다.
일반적으로 Knapsack 문제라고 하면 0/1 Knapsack을 가리키는 경우가 많다.
이 문제를 풀기 위해서는 동적 계획법을 적용해야 한다.
다음은 종류당 물건의 개수가 무한인 문제의 경우의 솔루션이다.
다음은 종류당 물건의 개수가 각 1개로 한정되어 있는 경우의 솔루션이다.
이 문제는 크게 0/1 Knapsack과 Fractional Knapsack으로 나뉜다.
0/1 Knapsack : 물건을 쪼갤 수 없다. 항상 배낭에 들어가지 않거나, 들어가거나 둘 중 하나이다. 동적 계획법으로 풀 수 있다. 이 문제의 경우에는 두 가지 유형이 있는데, 물건의 종류당 개수가 한정되어 있는 것과 무한정인 것 두 가지가 있다.
Fractional Knapsack : 물건을 쪼갤 수 있다. 무게당 가치를 구하여 Greedy를 이용해 풀 수 있다.
일반적으로 Knapsack 문제라고 하면 0/1 Knapsack을 가리키는 경우가 많다.
이 문제를 풀기 위해서는 동적 계획법을 적용해야 한다.
다음은 종류당 물건의 개수가 무한인 문제의 경우의 솔루션이다.
다음은 종류당 물건의 개수가 각 1개로 한정되어 있는 경우의 솔루션이다.
Modified at 5/15 11:37 개수 한정의 경우 솔루션 추가
2008년 1월 19일 이후 작성된 모든 글에 대해서 퍼가는 것을 금지합니다.
퍼가고자 하시는 분은 링크를 달아 주시기 바랍니다.
퍼가고자 하시는 분은 링크를 달아 주시기 바랍니다.



댓글을 달아 주세요
신선한 글이군^^;;
잘 지내고 잇겟지..^^;;
물론 잘 지내고 있지^^
너는 거기 생활 어때?
잘 지내고 있지ㅋ
정올 준비 열심히하고, 시험 잘 쳐서 꼭 대상 받도록 ^^ㅋ
어이;; fraction knapsack까지 생각하면 3개라고 해야겠네
0/1 냅색이랑 쪼갤수없는 무한 냅색, 쪼갤수 있는 냅색..
무슨 말씀이신지...?
관리자만 볼 수 있는 댓글입니다.
수정했습니다^^ 감사드립니다.