跳到主要内容

京都大学 情報学研究科 知能情報学専攻 2021年8月実施 情報学基礎 F2-2

Author

Isidore, 祭音Myyura

Description

ナップサック問題の入力は、非負整数の容量 cc を持つナップサックと、nn 個のアイテム a1,a2,,ana_1, a_2, \ldots, a_n からなる。 各アイテム aia_i は正整数の重さ wi (c)w_i \ (\leq c) と 正整数の価値 pip_i を持つ。 アイテムの集合 SS の合計重さと合計価値は、それぞれ SS に含まれるアイテムの重さの総和、価値の総和と定義する。 ナップサックには、合計重さ cc 以下のアイテム集合を詰め込むことができる。 ナップサックに詰め込むことのできるアイテム集合のうち合計価値が最大となるものをその入力に対する最適解、最適解の合計価値をその入力に対する最適値と呼ぶ。

n=6,c=10n=6, c=10 で、アイテムが以下の表で与えられる入力を II とする。

アイテムa1a_1a2a_2a3a_3a4a_4a5a_5a6a_6
重さ wiw_i233445
価値 pip_i345678

設問1 入力 II に対する最適値と 、全ての最適解を答えよ。

設問2 アイテムを単位重さ当たりの価値が大きい順に「ナップサックに入れることができれば入れ、できなければ捨てる」という逐次処理をし、最後にナップサックに入っているアイテム集合を出力するアルゴリズムを考える。 ただし、単位重さ当たりの価値が同じアイテムが複数あれば、価値の高いものを先に処理する。 入力 II にこのアルゴリズムを適用させた場合の出力を答えよ。

設問3 n4,c=10n \leq 4, c = 10 で、設問2のアルゴリズムが出力するアイテム集合の合計価値が最適値の 55 倍以上悪く(小さく)なる入力例を1つ示せ。 また、最適解とアルゴリズムの出力を示すことにより、その答えが設問の要件を満たしていることを説明せよ。

設問4 1in,0jc1 \leq i \leq n, 0 \leq j \leq c を満たす整数 i,ji,j に対し、アイテムが a1,,aia_1, \ldots, a_i でナップサック容量が jj である部分問題の最適値を OPT(i,j)\text{OPT}(i,j) とする。 上記の入力 II に対して OPT(1,1),OPT(2,4),OPT(3,5)\text{OPT}(1,1), \text{OPT}(2,4), \text{OPT}(3,5) の値を答えよ。

設問5 設問4で定義した OPT(i,j)\text{OPT}(i,j)iijj の値が小さいものから順に計算していくアルゴリズムを考える。 以下の問いに答えよ。なお本設問は、上記の具体的な入力 II に対して ではなく一般の入力に対する問いであるので注意すること。

  • (1) OPT(i,0)\text{OPT}(i, 0) の値を答えよ。
  • (2) OPT(1,j)\text{OPT}(1,j) の値を答えよ。
  • (3) i2,j1i \geq 2, j \geq 1 とし、1ai1,0bj1 \leq a \leq i-1, 0 \leq b \leq j および a=i,0bj1a = i, 0 \leq b \leq j-1 を満たす全ての a,ba,b について OPT(a,b)\text{OPT}(a,b) が求まっているとする。 このとき OPT(i,j)\text{OPT}(i,j) を求める計算方法を答えよ。

Kai

設問1

The optimal value is 1616, while there is 3 solutions

{a5,a3,a2},{a5,a4,a1},{a1,a3,a6}\{a_5, a_3, a_2\} , \{a_5, a_4, a_1\}, \{a_1, a_3, a_6\}

設問2

アイテムa1a_1a2a_2a3a_3a4a_4a5a_5a6a_6
pi/wip_i/w_i1.501.501.331.331.671.671.501.501.751.751.601.60

The output value is 1515, while the output solution is

{a5,a3,a1}\{a_5, a_3, a_1\}

設問3

Design the input like below

a1a_1a2a_2
w110
p210
p/w21

Obviously, by comparing the value per weight, performing the algorithm defined in Q.2 will results in the output

2,{a1}2,\{a_1\}

However, the actual optimal value with solution is

10,{a2}10, \{a_2\}

which is 5 times better than the former.

設問4

OPT(1,1)=0OPT(2,4)=4OPT(3,5)=8\begin{aligned} \text{OPT}(1,1) = 0 \\ \text{OPT}(2,4) = 4 \\ \text{OPT}(3,5) = 8 \\ \end{aligned}

設問5

(1)

OPT(i,0)=0\text{OPT}(i,0) = 0

(2)

OPT(1,j)={p1(jw1)0(j<w1)\text{OPT}(1, j) = \begin{cases} p_{1}&(j\geq w_{1})\\ 0&(j<w_{1}) \end{cases}

(3)

OPT(i,j)={max(OPT(i1,j),OPT(i1,jwi)+pi)(jwi)OPT(i1,j)(j<wi)\text{OPT}(i,j) = \begin{cases} \max(\text{OPT}(i-1,j), \text{OPT}(i-1,j-w_{i})+p_{i})&(j\geq w_{i})\\ \text{OPT}(i-1,j)&(j<w_{i}) \end{cases}