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

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

難易度 3期末試験の応用レベル大学数学 アルゴリズムと計算量

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

品物ABCDEF
重さ
価値

選んだ品物の価値の合計の最大値を求めよ。

この問題で使うもの

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

読み込み中…

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

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

ヒント

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

ヒント 1

ナップサック問題なので、 =「重さ 以下での価値の最大値」を品物を 個ずつ加えながら更新する。

ヒント 2

品物(重さ 、価値 )を加えるときの更新式は 。同じ品物を 回使わないよう、 は大きい方から更新する。

ヒント 3

A, B, C, D, E まで加えた時点で 、 となる。最後に F(重さ )を加えるとき がどう変わるかを調べる。

答えと解説

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

ナップサック問題として動的計画法で解く。品物を A, B, C, D, E, F の順に考え、 を「ここまでの品物から重さの合計が 以下になるように選んだときの価値の最大値」とする()。品物(重さ 、価値 )を加えるとき、 を大きい方から順に

と更新する。

の順に を並べると次のようになる。

  • 初期:
  • A(, )を加えた後:
  • B(, )を加えた後:
  • C(, )を加えた後:
  • D(, )を加えた後:
  • E(, )を加えた後:
  • F(, )を加えた後:

確認のため主な更新を書く。C を加えたとき (A, B, C)。D を加えたとき 、。E を加えたとき、たとえば 、 で、どの値も増えない。F を加えたとき 、。

よって最大値は で、たとえば C と F(重さ 、価値 )や A, D, F(重さ 、価値 )で達成される。

(検算:重さの小さい 個 D, A, B, C の重さの合計が なので、選べるのは高々 個。重さ 以下の 個の組は ABC(), ABD(), ACD(), ADE(), BCD(), BDE(), ADF()で、 個の組の最大は CF()。したがって最大値は である。)

別解

価値/重さの比は D が 、F が 、C が 、A と E が 、B が 。

上界: 品物を分割してよいとする緩和問題では、比の大きい順に D(重さ 、価値 )、F(重さ 、価値 )、C を入れる。D と F で重さ 、価値 。残り容量 に C を だけ入れると価値 で、合計 。価値は整数なので最大値は 以下。

達成: C+F(重さ 、価値 )。また A+D+F(重さ 、価値 )も 。

他の主な組も確認: A+B+C(重さ )は 、B+D+E(重さ )は 、C+E(重さ )は 、B+F(重さ )は 。いずれも 以下。

答え:

この問題の確認

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

間違いを報告する

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

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

関連する問題