Knapsack 문제의 정형적 정의
Knapsack 문제 유형
0-1 knapsack에 대한 완전 검색 방법
0-1 Knapsack에 대한 탐욕적 방법1
무게 | 값 | |
---|---|---|
물건1 | 25kg | 10만원 |
물건2 | 10kg | 9만원 |
물건3 | 10kg | 5만원 |
값이 비싼 물건부터 채운다.
W = 30kg
탐욕적 방법의 결과 : (물건1)->25kg, 10만원
최적해 : (물건2, 물건3) -> 20kg, 14만원
최적 X
0-1 Knapsack에 대한 탐욕적 방법2
무게 | 값 | |
---|---|---|
물건1 | 25kg | 10만원 |
물건2 | 10kg | 9만원 |
물건3 | 10kg | 5만원 |
무게가 가벼운 물건부터 채운다.
W = 30kg
탐욕적 방법의 결과 : (물건2, 물건3) -> 14만원
최적해 : (물건1) -> 15만원
최적 X
0-1 Knapsack에 대한 탐욕적 방법3
무게 | 값 | 값/kg | |
---|---|---|---|
물건1 | 5kg | 50만원 | 10만원/kg |
물건2 | 10kg | 60만원 | 6만원/kg |
물건3 | 20kg | 140만원 | 7만원/kg |
무게 당(kg) 값이 높은 순서로 물건을 채운다.
W = 30kg
탐욕적 방법의 결과 : (물건1, 물건3) -> 190만원
최적해 : (물건2, 물건3) -> 200만원
최적 X
Fractional Knapsack 문제
무게 | 값 | 값/kg | |
---|---|---|---|
물건1 | 5kg | 50만원 | 10만원/kg |
물건2 | 10kg | 60만원 | 6만원/kg |
물건3 | 20kg | 140만원 | 7만원/kg |
물건의 일부를 잘라서 담을 수 있다.
탐욕적인 방법
(물건1 5kg + 물건3 20kg + 물건2의 절반 5kg) -> 30kg, (50만원+140만원+30만원->220만원)
알고리즘 | 목적 | 설명 | 유형 |
---|---|---|---|
Prim | N 개의 노드에 대한 최소 신장 트리(MST)를 찾는다. | 서브트리를 확장하면서 MST를 찾는다. | 그래프 |
Kruskal | N 개의 노드에 대한 최소 신장 트리(MST)를 찾는다. | 싸이클이 없는 서브 그래프를 확장하면서 MST를 찾는다. | 그래프 |
Diijkstra | 주어진 정점에서 다른 정점들에 대한 최단 경로를 찾는다. | 주어진 정점에서 가장 가까운 정점을 찾고,그 다음을 정점을 반복해서 찾는다. | 그래프 |