データ構造とアルゴリズム

第十一回 (2012年1月6日)

動的計画法

http://www.sw.it.aoyama.ac.jp/2011/DA/lecture11.html

Martin J. Dürst

AGU

© 2009-12 Martin J. Dürst 青山学院大学

目次

これからの予定

補講についての注意

期末試験の内容

試験範囲:
授業・プリント・プログラムの全ての内容
プログラムそのものは書く必要がないが、理解する必要はある
問題の種類:
情報数学 I や計算機実習 I と類似
過去の問題 (2008年度2009年度2010年度):
一部のブラウザ (IE7以前) は非推奨
図と解答例の一部は欠落
解答例は「表示」→「スタイル」→「solutions」で表示可能
注意点:
問題をよく読む (計算、証明、説明などの区別)
概念の定義を自分の言葉でおさえる
綺麗な字で書く

 

前回の残り・まとめ

アルゴリズムの設計方針

動的計画法の概要

(dynamic programming)

動的計画法の単純な例

行列の乗算

三行列の連鎖乗算

乗算の順番の数

乗算の数 順番の数
0 1
1 1
2 2
3 5
4 14
5 42
6 132
7 429
8 1430
9 4862
 

乗算の最適な順番

最適化の順番と途中結果の記憶

計算の実例

0M1M5: 274
0M2M5: 450
0M3M5: 470
0M4M5: 320
0M1M4: 260
0M2M4: 468
0M3M4: 400
1M2M5: 366
1M3M5: 330
1M4M5: 250
  0M1M3: 200
0M2M3: 284
1M2M4: 360
1M3M4: 220
2M3M5: 330
2M4M5: 390
 
  0M1M2: 48 1M2M3: 120 2M3M4: 300 3M4M5: 150  
0M1: 0 1M2: 0 2M3: 0 3M4: 0 4M5: 0
r0 = 4 r1 = 2 r2 = 6 r3 = 10 r4 = 5 r5 = 3

連鎖乗算の最適化の計算量

動的計画法では問題によって O(n3), O(n2), O(n),
O(nm) 等さまざまな計算量

動的計画法の概要 (再確認)

動的計画法の基本要素

Ruby による履歴管理

まとめ