본문 바로가기

Math/Optimization

Knapsack problem

knapsack은 한국어로 배낭을 의미한다.

maximum weight $b$를 담을 수 있는 배낭, knapscak을 생각한다. 그리고 $n$개의 아이템을 생각하고, $i$ 아이템은 무게가 $a_i$이다. $i$ 아이템을 $x_i$개 담으면서 모든 아이템들의 무게의 합이 knapsack의 총 용량 $b$가 넘지 않도록 설계해야 한다, 즉, $\sum^n_{i=1}a_ix_i\leq b$이다.

다음과 같은 집합을 생각해보자:

$$K=\{ x\in \{0,1\}^n : \sum^n_{i=1}a_ix_i\leq b\}.$$

 

Minimal cover는 다음과 같이 정의된다:

$$\sum_{i \in C \notin \{ j \} } a_i \leq b, \quad  \forall j \in C.$$

Minimal cover로 정의되는 다음 집합을 생각해보자:

$$K^C=\{  x \in \{0,1\}^n : \sum_{i\in C} x_i \leq |C|-1 \text{for every minimla cover}\; C \; \text{for} K\}$$

Propositiion 2.1 집합 $K$ and $K^C$은 일치한다.

증명 :
$C$가 $K$의 minimal cover라면, $\sum_{i\in C} x_i \leq |C|-1$이다. 그리고 $\sum_{i=1}^n a_ix_i\leq b$가 $K^C$의 원소에 대해 성립한다.

$\bar{x}\in K^C$라고 하고 $J:=\{ j : \bar{x}_j=1\}$이라고 하자.  $\sum^n_{i=1}a_i\bar{x}_i>b$가 성립하는 $J$의 minimal subset을 $C$라고 하면, $C$는 minimal cover이고 $\sum_{i\in C}\bar{x}_i=|C|$이다. 

 

'Math > Optimization' 카테고리의 다른 글

Hermite Form  (0) 2025.04.05
Oracle Complexity  (0) 2021.12.17
Smoothness  (0) 2021.10.21
Proximal Gradient and Mirror Descent  (0) 2021.10.20
Duality  (0) 2021.10.17