単元一覧 › 大学数学 アルゴリズムと計算量

アルゴリズムと計算量の問題

難易度 1教科書の例題レベル大学数学 アルゴリズムと計算量

次の 個の品物から、重さの合計が 以下になるようにいくつか選ぶ。各品物は選ぶか選ばないかのどちらかで、同じ品物を 個以上選ぶことはできない。

品物ABCD
重さ
価値

品物を A, B, C, D の順に 番目とし、 番目の品物の重さを 、価値を とする。 を「 番目から 番目までの品物だけを使い、重さの合計が 以下になるように選んだときの価値の合計の最大値」とすると、 であり、 のとき

が成り立つ。この表を について埋め、選んだ品物の価値の合計の最大値 を求めよ。

この問題で使うもの

この問題を解けるようになるまで(2 技能)
算数中学高校大学大学院

読み込み中…

右端(太枠)がこの問題で使う技能です。左へドラッグすると、さらに前の前提をさかのぼれます。技能を押すと、そこまでの道筋が光ります。

一覧で見る(前提が先)
  1. 動的計画法の基本(硬貨の最小枚数)
  2. 0-1 ナップサック問題の動的計画法

ヒント

行き詰まったら、上から順に 1 つずつ開いてください。

ヒント 1

0-1 ナップサック問題の動的計画法を使う。品物を 1 つずつ増やしながら、容量 ごとの最大価値 の表を 1 行ずつ埋めていく。

ヒント 2

番目の品物を「選ばない」場合の と、「選ぶ」場合の の大きい方が になる。 のときは選べないので上の行をそのまま写す。

ヒント 3

A, B, C まで使ったときの表は ()となる。最後に D(重さ 、価値 )を加えた行の の値を計算する。

答えと解説

答えを見る
結果を記録する(このブラウザにだけ保存されます):
解説を読む

漸化式に従って、表を の順に 1 行ずつ埋めていく。各行は の 個の値を並べて書く。

(品物なし):すべて 。

(A: ): では 。 では 。

(B: ): では上の行と同じ。
- :
- :
- :
- :
- :

(C: ): では上の行と同じ。
- :
- :
- :
- :
- :
- :
- :

(D: ): では上の行と同じ。
- :
- :
- :
- :

したがって である。最後の比較で の方を採用したので D を選んでおり、残りの容量 で を与えるのは A である。実際に A と D を選ぶと重さ 、価値 となり確かめられる。

答え:

別解

V[0][w]=0 から順に表を埋める。

i=1(A: w=3, v=5): w=0,1,2 で 0、w=3〜8 で 5。
V[1] = [0,0,0,5,5,5,5,5,5]

i=2(B: w=4, v=6): w<4 は V[1] と同じ。w≥4 では max(V[1][w], V[1][w-4]+6)。
w=4: max(5, 0+6)=6
w=5: max(5, 0+6)=6
w=6: max(5, 0+6)=6
w=7: max(5, V[1][3]+6=11)=11
w=8: max(5, V[1][4]+6=11)=11
V[2] = [0,0,0,5,6,6,6,11,11]

i=3(C: w=2, v=3): w<2 は同じ。w≥2 では max(V[2][w], V[2][w-2]+3)。
w=2: max(0, 0+3)=3
w=3: max(5, 0+3)=5
w=4: max(6, 0+3)=6
w=5: max(6, 5+3)=8
w=6: max(6, 6+3)=9
w=7: max(11, 6+3)=11
w=8: max(11, 6+3)=11
V[3] = [0,0,3,5,6,8,9,11,11]

i=4(D: w=5, v=8): w<5 は同じ。w≥5 では max(V[3][w], V[3][w-5]+8)。
w=5: max(8, 0+8)=8
w=6: max(9, 0+8)=9
w=7: max(11, 3+8)=11
w=8: max(11, V[3][3]+8=13)=13
V[4] = [0,0,3,5,6,8,9,11,13]

よって V[4][8]=13。

検算:A と D を選ぶと重さ 3+5=8、価値 5+8=13。他の組合せ:B+C=重さ6で価値9、A+B=重さ7で価値11、A+C=重さ5で価値8、B+D は重さ9で不可、C+D は重さ7で価値11、A+C+... は A+B+C で重さ9 不可。したがって最大は 13。

この問題の確認

AI が作成した問題です。公開前に次の確認を行いました。確認の方法について

間違いを報告する

この問題の誤り・分かりにくい点・難易度や学年のずれを知らせる
どこについての報告ですか

報告の内容と問題の番号を保存します。名前やメールアドレスは保存しません。

関連する問題