Upgrade to Pro — share decks privately, control downloads, hide ads and more …

動的計画法 / Python DP

kaityo256
December 17, 2019

動的計画法 / Python DP

プログラム基礎同演習

kaityo256

December 17, 2019
Tweet

More Decks by kaityo256

Other Decks in Education

Transcript

  1. 10 重さ 価値 3 4 3 33 36 24 持てる重さは最大「10」まで

    5 50 持ち運べる範囲で価値を最大化したい 制約条件
  2. 12 重さ 価値 4 3 36 24 5 50 重さあたりの価値

    10 9 8 3 33 11 上から順番に選ぶ ここで重さ10を超えるため ストップ 貪欲法による解 最適解 重さ8 価値 83 重さ10 価値 93
  3. 18 A B C D E F G H I

    2 7 8 1 2 3 15 10 12 1 3 2 各辺に重み(コスト)が設定されているグラフがある A I から まで行きたい その際、辺のコストの合計を最小にしたい
  4. 19 最短経路 コストの合計:13 A B C D E F G

    H I 2 7 8 1 2 3 15 10 12 1 3 2 この解をどうやって(効率的に)求めるか?
  5. 20 A E I 3 10 もし最短経路が「A – E –

    I 」という経路であれば AからIに含まれる 「AからE」への経路 「EからI」への経路 もそれぞれ最短
  6. 22 A B C D E F G H I

    1 2 いま、「部分問題」が解けているとする AからGへの最短経路 AからHへの最短経路 がそれぞれわかっている
  7. 23 「AからG」「AからH」までの最短経路のコストが わかっているなら、この問題を解けばよい A G I 1 2 13 11

    H 「A-H-I」が最短経路であることがわかる A B C D E F G H I 2 7 8 1 2 3 15 10 12 1 3 2 全体像はいったん忘れる
  8. 24 A B C E F H 2 7 1

    2 3 12 3 AからHに行く最短経路は? AからEに行く最短経路(3) AからFに行く最短経路(8) A E H 12 3 3 8 F がわかっているなら 全体像はいったん忘れる 「A-F-H」が最短経路であることがわかる この問題↓を解けばよい
  9. 26 A G I 1 2 13 11 H 最短経路のコストは13とわかっているとする

    最終目的地 「I」に至る経路は「G」か「H」か? A-H のコストと H-Iのコストの和 = 13 A-G のコストと G-Iのコストの和 = 14 「A-G」「A-H」までの最短コストから計算してみればよい H経由だった
  10. 29 彩りガーデンサラダ 小エビのサラダ やわらかチキンのサラダ イタリアンサラダ ・・・ 299 円 349 円

    299 円 299 円 130 kcal 115 kcal 134 kcal 92 kcal 0.435 kcal/円 0.330 kcal/円 0.448 kcal/円 0.307 kcal/円 ラージライス アーリオ・オーリオ (W) ・・・ 219 円 574 円 454 kcal 1120 kcal 2.07 kcal/円 1.95 kcal/円 「価格あたりのカロリーが高い順」に並べる 一番上から、予算が許す限り選ぶ 品目 価格 カロリー 価格あたりの カロリー