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

第十一回 (2008年12月 12日)

動的計画法

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

Martin J. Dürst

duerst@it.aoyama.ac.jp

AGU

© 2008 Martin J. Dürst 青山学院大学

目次

Rabin-Karp アルゴリズムの修正と追加

誤: ハッシュ関数は hf (p) = (p0·bm-1+p1·bm-2+...+pm-2·b1+pm-1·b0) mod d
(b はアルファベットの基数、d は適切に選んだ数字)

正: ハッシュ関数は hf (p) = (p[0]·bm-1+p[1]·bm-2+...
+p[m-2]·b1+p[m-1]·b0) mod d
(b はアルファベットの基数、d は適切に選んだ数字)

追加: Excell による Rabin-Karp のアルゴリズムの例: ARabinKarp.xls

行列の乗算

三行列の連鎖乗算

乗算の順番の数

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

乗算の最適な順番

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

計算の実例

n=5, r0=2, r1=3, r2=4, r3=2, r4=4, r5=5

mincost 0 1 2 3 4 5
b (分岐点)
0 (r0=2) 0 24
 
1 (r1=3) 0 24
 
2 (r2=4) 0 32
 
3 (r3=2) 0 40
 
4 (r4=4) 0
 
5  
 
(r5=5)

 

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

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

動的計画法の概要

(dynamic programming)

動的計画法の基本要素

動的計画法の応用

Ruby による履歴管理

アルゴリズムの設計方針

宿題 (レポート)

提出: 12月26日 (金) 19:00、O棟 529号室の前の箱; 3ページ程度; A4 両面左上ホチキス止め; 名前と学籍番号は一ページ目上部に記載 (表紙無し)

動的計画法 (貪欲アルゴリズムやネットワークフローでも可) のアルゴリズムで解決できる問題を調べて、一つ選んで、その問題と一般の方法を詳しく説明しなさい。

注意点: