Enviar pesquisa
Carregar
Sec15 dynamic programming
•
0 gostou
•
1,282 visualizações
Keisuke OTAKI
Seguir
Introduction to Algorithms, Section 15, dynamic programing.
Leia menos
Leia mais
Tecnologia
Arte e fotografia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 87
Baixar agora
Baixar para ler offline
Recomendados
アルゴリズムイントロダクション15章 動的計画法
アルゴリズムイントロダクション15章 動的計画法
nitoyon
動的計画法を極める!
動的計画法を極める!
HCPC: 北海道大学競技プログラミングサークル
AtCoder Regular Contest 030 解説
AtCoder Regular Contest 030 解説
AtCoder Inc.
動的計画法の並列化
動的計画法の並列化
Proktmr
高速フーリエ変換
高速フーリエ変換
AtCoder Inc.
自然言語処理のための機械学習入門1章
自然言語処理のための機械学習入門1章
Hiroki Mizukami
動的計画法入門(An introduction to Dynamic Programming)
動的計画法入門(An introduction to Dynamic Programming)
kakira9618
動的計画法
動的計画法
HCPC: 北海道大学競技プログラミングサークル
Mais conteúdo relacionado
Mais procurados
SGD+α: 確率的勾配降下法の現在と未来
SGD+α: 確率的勾配降下法の現在と未来
Hidekazu Oiwa
Tokyo r27
Tokyo r27
Takashi Minoda
TopCoder SRM614 解説
TopCoder SRM614 解説
EmKjp
Infinite SVM - ICML 2011 読み会
Infinite SVM - ICML 2011 読み会
Shuyo Nakatani
FHE in Action
FHE in Action
文杰 陆
CODE FESTIVAL 2014 本選 解説
CODE FESTIVAL 2014 本選 解説
AtCoder Inc.
【Unity道場スペシャル 2017博多】クォータニオン完全マスター
【Unity道場スペシャル 2017博多】クォータニオン完全マスター
Unity Technologies Japan K.K.
coordinate descent 法について
coordinate descent 法について
京都大学大学院情報学研究科数理工学専攻
【Unity道場】ゲーム制作に使う数学を学習しよう
【Unity道場】ゲーム制作に使う数学を学習しよう
Unity Technologies Japan K.K.
20170422 数学カフェ Part1
20170422 数学カフェ Part1
Kenta Oono
最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く
shindannin
Convex Hull Trick
Convex Hull Trick
HCPC: 北海道大学競技プログラミングサークル
WSDM2012読み会: Learning to Rank with Multi-Aspect Relevance for Vertical Search
WSDM2012読み会: Learning to Rank with Multi-Aspect Relevance for Vertical Search
sleepy_yoshi
パターン認識第9章 学習ベクトル量子化
パターン認識第9章 学習ベクトル量子化
Miyoshi Yuya
凸最適化 〜 双対定理とソルバーCVXPYの紹介 〜
凸最適化 〜 双対定理とソルバーCVXPYの紹介 〜
Tomoki Yoshida
Infinite SVM [改] - ICML 2011 読み会
Infinite SVM [改] - ICML 2011 読み会
Shuyo Nakatani
Clustering _ishii_2014__ch10
Clustering _ishii_2014__ch10
Kota Mori
パターン認識 第12章 正則化とパス追跡アルゴリズム
パターン認識 第12章 正則化とパス追跡アルゴリズム
Miyoshi Yuya
Recent Advances on Transfer Learning and Related Topics Ver.2
Recent Advances on Transfer Learning and Related Topics Ver.2
Kota Matsui
任意粒度機能モデルに基づく動的型付けプログラミング言語向けソースコード検索手法の提案
任意粒度機能モデルに基づく動的型付けプログラミング言語向けソースコード検索手法の提案
Kamiya Toshihiro
Mais procurados
(20)
SGD+α: 確率的勾配降下法の現在と未来
SGD+α: 確率的勾配降下法の現在と未来
Tokyo r27
Tokyo r27
TopCoder SRM614 解説
TopCoder SRM614 解説
Infinite SVM - ICML 2011 読み会
Infinite SVM - ICML 2011 読み会
FHE in Action
FHE in Action
CODE FESTIVAL 2014 本選 解説
CODE FESTIVAL 2014 本選 解説
【Unity道場スペシャル 2017博多】クォータニオン完全マスター
【Unity道場スペシャル 2017博多】クォータニオン完全マスター
coordinate descent 法について
coordinate descent 法について
【Unity道場】ゲーム制作に使う数学を学習しよう
【Unity道場】ゲーム制作に使う数学を学習しよう
20170422 数学カフェ Part1
20170422 数学カフェ Part1
最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く
Convex Hull Trick
Convex Hull Trick
WSDM2012読み会: Learning to Rank with Multi-Aspect Relevance for Vertical Search
WSDM2012読み会: Learning to Rank with Multi-Aspect Relevance for Vertical Search
パターン認識第9章 学習ベクトル量子化
パターン認識第9章 学習ベクトル量子化
凸最適化 〜 双対定理とソルバーCVXPYの紹介 〜
凸最適化 〜 双対定理とソルバーCVXPYの紹介 〜
Infinite SVM [改] - ICML 2011 読み会
Infinite SVM [改] - ICML 2011 読み会
Clustering _ishii_2014__ch10
Clustering _ishii_2014__ch10
パターン認識 第12章 正則化とパス追跡アルゴリズム
パターン認識 第12章 正則化とパス追跡アルゴリズム
Recent Advances on Transfer Learning and Related Topics Ver.2
Recent Advances on Transfer Learning and Related Topics Ver.2
任意粒度機能モデルに基づく動的型付けプログラミング言語向けソースコード検索手法の提案
任意粒度機能モデルに基づく動的型付けプログラミング言語向けソースコード検索手法の提案
Destaque
Dynamic Program Problems
Dynamic Program Problems
Ranjit Sasmal
Dynamicpgmming
Dynamicpgmming
Muhammad Wasif
Dynamic programming1
Dynamic programming1
debolina13
Em
Em
Keisuke OTAKI
Audi
Audi
gueste73644a
Instrucciones trabajo
Instrucciones trabajo
amarilis17
Perkembangan asuransi syariah di indonesia 2012
Perkembangan asuransi syariah di indonesia 2012
Wiku Suryomurti
8&11 pp. key trends and developments of pr market in 2013
8&11 pp. key trends and developments of pr market in 2013
Pavel Melnikov
презентация1[1]
презентация1[1]
gueste73644a
Avatar Technology
Avatar Technology
Matthew Conway
Argegna
Argegna
guest09d71252
Dance Project English
Dance Project English
Dance Association
Presentation
Presentation
s1170006
Roy Presen
Roy Presen
s1140181
Sec16 greedy algorithm no2
Sec16 greedy algorithm no2
Keisuke OTAKI
What is art?
What is art?
mertxita
Why and how to use graphs and infographics in your presentations
Why and how to use graphs and infographics in your presentations
Formation 3.0
51st Winter Nationals Inauguration
51st Winter Nationals Inauguration
guestdcd72
Strategic Planning
Strategic Planning
Leonardo Alfonso Jr.
Meic Swapnil Srivastava 200505589
Meic Swapnil Srivastava 200505589
swap_1985
Destaque
(20)
Dynamic Program Problems
Dynamic Program Problems
Dynamicpgmming
Dynamicpgmming
Dynamic programming1
Dynamic programming1
Em
Em
Audi
Audi
Instrucciones trabajo
Instrucciones trabajo
Perkembangan asuransi syariah di indonesia 2012
Perkembangan asuransi syariah di indonesia 2012
8&11 pp. key trends and developments of pr market in 2013
8&11 pp. key trends and developments of pr market in 2013
презентация1[1]
презентация1[1]
Avatar Technology
Avatar Technology
Argegna
Argegna
Dance Project English
Dance Project English
Presentation
Presentation
Roy Presen
Roy Presen
Sec16 greedy algorithm no2
Sec16 greedy algorithm no2
What is art?
What is art?
Why and how to use graphs and infographics in your presentations
Why and how to use graphs and infographics in your presentations
51st Winter Nationals Inauguration
51st Winter Nationals Inauguration
Strategic Planning
Strategic Planning
Meic Swapnil Srivastava 200505589
Meic Swapnil Srivastava 200505589
Semelhante a Sec15 dynamic programming
Donutsプロコンチャレンジ 2015 解説
Donutsプロコンチャレンジ 2015 解説
kuno4n
Or seminar2011final
Or seminar2011final
Mikio Kubo
JOI予選はランチの後で
JOI予選はランチの後で
Ken Ogura
topology of musical data
topology of musical data
Tatsuki SHIMIZU
AtCoder Beginner Contest 020 解説
AtCoder Beginner Contest 020 解説
AtCoder Inc.
Gurobi python
Gurobi python
Mikio Kubo
AtCoder Regular Contest 026 解説
AtCoder Regular Contest 026 解説
AtCoder Inc.
JOIss2020 発表資料
JOIss2020 発表資料
mdkcpp 1015
C07
C07
anonymousouj
diffの真髄
diffの真髄
fuku68
人工無脳バトル 1st STEP 回答と解説
人工無脳バトル 1st STEP 回答と解説
JustSystems Corporation
Gcd
Gcd
oupc
【展開用】日曜数学会 Sinc関数の積分について
【展開用】日曜数学会 Sinc関数の積分について
和人 桐ケ谷
Operations research yonezawa_no1
Operations research yonezawa_no1
ssuser0bebd2
会津合宿2015Day3:D問題
会津合宿2015Day3:D問題
HCPC: 北海道大学競技プログラミングサークル
Pythonではじめる競技プログラミング
Pythonではじめる競技プログラミング
cocodrips
TVM の紹介
TVM の紹介
Masahiro Masuda
CODE FESTIVAL 2015 予選B 解説
CODE FESTIVAL 2015 予選B 解説
AtCoder Inc.
Kosakunakano
Kosakunakano
ssuserb09fbd
1次式とノルムで構成された最適化問題とその双対問題
1次式とノルムで構成された最適化問題とその双対問題
京都大学大学院情報学研究科数理工学専攻
Semelhante a Sec15 dynamic programming
(20)
Donutsプロコンチャレンジ 2015 解説
Donutsプロコンチャレンジ 2015 解説
Or seminar2011final
Or seminar2011final
JOI予選はランチの後で
JOI予選はランチの後で
topology of musical data
topology of musical data
AtCoder Beginner Contest 020 解説
AtCoder Beginner Contest 020 解説
Gurobi python
Gurobi python
AtCoder Regular Contest 026 解説
AtCoder Regular Contest 026 解説
JOIss2020 発表資料
JOIss2020 発表資料
C07
C07
diffの真髄
diffの真髄
人工無脳バトル 1st STEP 回答と解説
人工無脳バトル 1st STEP 回答と解説
Gcd
Gcd
【展開用】日曜数学会 Sinc関数の積分について
【展開用】日曜数学会 Sinc関数の積分について
Operations research yonezawa_no1
Operations research yonezawa_no1
会津合宿2015Day3:D問題
会津合宿2015Day3:D問題
Pythonではじめる競技プログラミング
Pythonではじめる競技プログラミング
TVM の紹介
TVM の紹介
CODE FESTIVAL 2015 予選B 解説
CODE FESTIVAL 2015 予選B 解説
Kosakunakano
Kosakunakano
1次式とノルムで構成された最適化問題とその双対問題
1次式とノルムで構成された最適化問題とその双対問題
Mais de Keisuke OTAKI
KDD読み会(図なし版)
KDD読み会(図なし版)
Keisuke OTAKI
Reading Seminar (140515) Spectral Learning of L-PCFGs
Reading Seminar (140515) Spectral Learning of L-PCFGs
Keisuke OTAKI
一階述語論理のメモ
一階述語論理のメモ
Keisuke OTAKI
Grammatical inference メモ 1
Grammatical inference メモ 1
Keisuke OTAKI
ベイジアンネットワーク入門
ベイジアンネットワーク入門
Keisuke OTAKI
Tensor Decomposition and its Applications
Tensor Decomposition and its Applications
Keisuke OTAKI
Ada boost
Ada boost
Keisuke OTAKI
PRML§12-連続潜在変数
PRML§12-連続潜在変数
Keisuke OTAKI
Prml sec6
Prml sec6
Keisuke OTAKI
Foilsを使ってみた。
Foilsを使ってみた。
Keisuke OTAKI
ウェーブレット勉強会
ウェーブレット勉強会
Keisuke OTAKI
Prml sec3
Prml sec3
Keisuke OTAKI
Sec16 greedy algorithm no1
Sec16 greedy algorithm no1
Keisuke OTAKI
Hash Table
Hash Table
Keisuke OTAKI
Mais de Keisuke OTAKI
(14)
KDD読み会(図なし版)
KDD読み会(図なし版)
Reading Seminar (140515) Spectral Learning of L-PCFGs
Reading Seminar (140515) Spectral Learning of L-PCFGs
一階述語論理のメモ
一階述語論理のメモ
Grammatical inference メモ 1
Grammatical inference メモ 1
ベイジアンネットワーク入門
ベイジアンネットワーク入門
Tensor Decomposition and its Applications
Tensor Decomposition and its Applications
Ada boost
Ada boost
PRML§12-連続潜在変数
PRML§12-連続潜在変数
Prml sec6
Prml sec6
Foilsを使ってみた。
Foilsを使ってみた。
ウェーブレット勉強会
ウェーブレット勉強会
Prml sec3
Prml sec3
Sec16 greedy algorithm no1
Sec16 greedy algorithm no1
Hash Table
Hash Table
Último
JAWS DAYS 2024 E-3 ランチにまつわるちょっといい話 〜給食がない町の小中学生に温かい昼食を〜
JAWS DAYS 2024 E-3 ランチにまつわるちょっといい話 〜給食がない町の小中学生に温かい昼食を〜
Naomi Yamasaki
キャラで動かすGPT ~GPTsでどんな感じに作っているとか考えていることとか~
キャラで動かすGPT ~GPTsでどんな感じに作っているとか考えていることとか~
honeshabri
バイオリンの運弓動作計測による初心者と経験者の差異分析
バイオリンの運弓動作計測による初心者と経験者の差異分析
sugiuralab
キンドリル_ネットワーク自動化成熟度診断サービス ご紹介資料 2024年3月版
キンドリル_ネットワーク自動化成熟度診断サービス ご紹介資料 2024年3月版
Takayuki Nakayama
SIG-AUDIO 2024 Vol.02 オンラインセミナー 「必殺使音人(ひっさつしおとにん)カットシーンを成敗せよ」
SIG-AUDIO 2024 Vol.02 オンラインセミナー 「必殺使音人(ひっさつしおとにん)カットシーンを成敗せよ」
IGDA Japan SIG-Audio
チームで開発するための環境を整える
チームで開発するための環境を整える
onozaty
00001_test_automation_portfolio_20240313
00001_test_automation_portfolio_20240313
ssuserf8ea02
IGDA Japan SIG Audio #22 オンラインセミナー VRの知る.pdf
IGDA Japan SIG Audio #22 オンラインセミナー VRの知る.pdf
IGDA Japan SIG-Audio
AWS_Bedrock入門 このスライドは2024/03/08の勉強会で発表されたものです。
AWS_Bedrock入門 このスライドは2024/03/08の勉強会で発表されたものです。
iPride Co., Ltd.
これからはじめるAnsible - Ansible Night Tokyo 2024
これからはじめるAnsible - Ansible Night Tokyo 2024
Hideki Saito
The 86th National Convention of IPSJ (Student Encouragement Award))
The 86th National Convention of IPSJ (Student Encouragement Award))
yoshidakids7
AWS Lambdaと AWS API Gatewayを使ったREST API作り
AWS Lambdaと AWS API Gatewayを使ったREST API作り
iPride Co., Ltd.
Último
(12)
JAWS DAYS 2024 E-3 ランチにまつわるちょっといい話 〜給食がない町の小中学生に温かい昼食を〜
JAWS DAYS 2024 E-3 ランチにまつわるちょっといい話 〜給食がない町の小中学生に温かい昼食を〜
キャラで動かすGPT ~GPTsでどんな感じに作っているとか考えていることとか~
キャラで動かすGPT ~GPTsでどんな感じに作っているとか考えていることとか~
バイオリンの運弓動作計測による初心者と経験者の差異分析
バイオリンの運弓動作計測による初心者と経験者の差異分析
キンドリル_ネットワーク自動化成熟度診断サービス ご紹介資料 2024年3月版
キンドリル_ネットワーク自動化成熟度診断サービス ご紹介資料 2024年3月版
SIG-AUDIO 2024 Vol.02 オンラインセミナー 「必殺使音人(ひっさつしおとにん)カットシーンを成敗せよ」
SIG-AUDIO 2024 Vol.02 オンラインセミナー 「必殺使音人(ひっさつしおとにん)カットシーンを成敗せよ」
チームで開発するための環境を整える
チームで開発するための環境を整える
00001_test_automation_portfolio_20240313
00001_test_automation_portfolio_20240313
IGDA Japan SIG Audio #22 オンラインセミナー VRの知る.pdf
IGDA Japan SIG Audio #22 オンラインセミナー VRの知る.pdf
AWS_Bedrock入門 このスライドは2024/03/08の勉強会で発表されたものです。
AWS_Bedrock入門 このスライドは2024/03/08の勉強会で発表されたものです。
これからはじめるAnsible - Ansible Night Tokyo 2024
これからはじめるAnsible - Ansible Night Tokyo 2024
The 86th National Convention of IPSJ (Student Encouragement Award))
The 86th National Convention of IPSJ (Student Encouragement Award))
AWS Lambdaと AWS API Gatewayを使ったREST API作り
AWS Lambdaと AWS API Gatewayを使ったREST API作り
Sec15 dynamic programming
1.
Introduction To Algorithms. §15.
Dynamic Programming 2010 / 06
2.
What is DP
? 最適化問題に使う Divide-and-conquer method に似てる Programming → tabular method
3.
Difference (いめーじ) Divide
and conquer : 分割統治法 トップダウン + 似た小問題 Dynamic Programming : 動的計画法 ボトムアップ + 同じ形の小問題
4.
Step of DP(簡単に)
Characterize Recursively define Compute Construct an optimal solutions
5.
Step of DP(詳しく)
最適解の構造を特徴付ける 再帰的に最適解を定義する ボトムアップ的に解を計算する 結果から最適解を構築する
6.
とりあえず例題
7.
§15.1 Rod Cutting
長い鋼鉄の棒を切って売る 切るのはタダ 価格表が与えられる 高く売りたい
8.
§15.1 Rod Cutting
価格表の例 L 1 2 3 4 5 6 7 8 9 10 P 1 5 8 9 10 17 17 20 24 30 長さ n = 4 の場合… 4 , 3-1 , 2-2 , 1-3 , 1-1-2 , 1-2-1 , 2-1-1 , 1-1-1-1 パターン。
9.
§15.1 Rod Cutting
切り方の表現 4=1+1+2 一般に n = i1 + i2 + … + ik 収入は rn = pi1 + pi2 + … + pik R <- Revenue : 収入
10.
§15.1 Example Revenue
最大収入の例 N 1 2 3 4 5 6 7 8 9 10 P 1 5 8 9 10 17 17 20 24 30 R 1 5 8 10 13 17 18 22 25 30 4=2+2,5=2+3,7=2+2+3 8=2+6,9=3+6
11.
Step of DP
Characterize Recursively define Compute Construct an optimal solutions
12.
how to get
the optimal revenue Rnを求めるために、Rn-1を求めてる 長さnからiだけ切る … n = i + ( n - i ) 右の破片からだけ切るようにする
13.
how to get
the optimal revenue R1 = p1 R2 = max( p2 , r1 + r1 ) = max( p2 , 2p1 ) R3 = max( p3 , r1 + r2 , r2 + r1 ) = max( p3 , p1 + max( p2, 2p1 ) )
14.
how to get
the optimal revenue R1 = p1 R2 = max( p1 + r1 , p2 ) = max( 2p1 , p2 ) R3 = max( p1 + r2 , p2 + r1 , p3 ) = max( p1 + max( 2p1 , p2 ) , p1 + p2 , p3 ) = max( p1 + max( 2p1 , p2 ) , p3 )
15.
Step of DP
Characterize Recursively define Compute Construct an optimal solutions
16.
Implement 1.
17.
Features of Implement
1. 小さい問題を たくさん解いている 4 3 2 1 0 2 1 0 1 0 0 1 0 0 0 0
18.
Analysis 1. CutRodの実行時間
T(n) の再帰方程式 計算する
19.
Improvement. Memoize :
メモ化 過去に解いた小問題を記録しておく Bottom-up approach 小さいのから上へ積み上げる Dynamic Programmingの特徴
20.
Bottom-up
21.
Analysis 2. ButtomUpCutRod
O( n^2 ) : for for MemoizedCutRod O( n^2 ) らしい。
22.
※Subproblem Graph. 小問題同士の関係をグラフ化
XからYに矢印がある : Xを解くのにYを使う 4 3 2 1 0
23.
Step of DP
Characterize Recursively define Compute Construct an optimal solutions
24.
Construct an optimal
solution 例えばBottom-upを拡張する。 どの長さを選択するのか、記録する 一番最初の切断長だけ記録 7=2+2+3 -> 2を記録 7=2+5 と 5の解を利用すればいい
25.
Extended Buttom-up Cut
Rod
26.
Output 出力例
N 1 2 3 4 5 6 7 8 9 10 P 1 5 8 9 10 17 17 20 24 30 R 1 5 8 10 13 17 18 22 25 30 S 1 2 3 2 2 6 1 2 3 10 7=1+6=2+2+3 最初の切断点が小さい方が優先
27.
Caution 一般的に・・・
Speed – memory , trade off Memoizeすれば確かに高速だけど・・・
28.
§15.2 Matrix-chain multiplication
行列の列 例 < A1 , A2 , A3 , A4 > A1 A2 A3 A4 を求める 求め方 例 ( A1 ( A2 ( A3 A4 ) ) )
29.
Matrix Multiply (A,
B) #01 A of (n,m) * B of (m, s) = AB of (n, s) for I = 1 to n for J = 1 to s for K = 1 to m c[I,J] += a[I,K] * b[K,J]
30.
Matrix Multiply (A,
B) #02 1ブロック:乗算2+加算2 ブロック数:2 * 3 = 6
31.
Matrix Multiply (A,
B) #03 A : ( P , Q ) , B : ( Q , R ) , AB : ( P , R ) ブロック数 : PR 乗算の数: Q , 全体で PQR 加算の数: Q : とりあえず無視
32.
Matrix Multiply (A,
B) #04 A1 : ( 10 , 100 ) , A2 : ( 100 , 5 ) , A3 : (5 , 50 ) A1 A2 A3 : ( 10 , 50 ) A1 A2 : 5000回の乗算 -> * A3 : 2500回の乗算 A2 A3 : 25000回の乗算 -> A1 * : 50000回の乗算 (A1 A2) A3 : 7500 << A1 (A2 A3) : 75000
33.
Matrix-Chain Multiplication Problem
Matrices ( A1 A2 … An ) が与えられる 行列 Ai : ( pi-1, pi ) 型の行列 乗算回数を最も少なくするようにしたい
34.
Number of Parenthesize
Parenthesize : 括弧をつける 括弧の付け方 ≒ 乗算のやり方 括弧の付け方の数:カタラン数 P(1) 1 n 1 P(n) P(k) P(n k) n2 k 1
35.
Number of Parenthesize
N=1 : () N=2 : (()) , ()() N=3 : ((())) , (()()) , (())() , ()(()) , ()()()
36.
Step of DP
Characterize Recursively define Compute Construct an optimal solutions
37.
Split Product #01
I < K < J のとき Ai Ai+1 … Aj = ( Ai … Ak ) ( Ak+1 … Aj) このときの乗算回数は? 例題を思い出せば部分積での回数の和
38.
Split Product #02
最適解を二つに分けても最適解? 最適解 もし部分和でより最適な部分解があれば そもそも元の最適解が最適じゃない 構造がわかった
39.
Step of DP
Characterize Recursively define Compute Construct an optimal solutions
40.
Recursive Solution #01
積 Ai … Aj ( 1 <= I <= j <= n ) M[i][j] : 最小な積の回数 全体の問題の解 : M[1][n]
41.
Recursive Solution #02
M[i][j]をどう定義するか (Rod Cutのように) M[i][i] = 0 Ai … Aj = ( Ai … Ak ) ( Ak+1 … Aj) M[i][j] = M[i][k] + M[k+1][j] + Pi-1 Pk Pj
42.
Recursive Solution #03
分割位置 k は任意 ( I <= k <= J) 実際はMが最小になるような k が必要 M[i][i] 0 M[i][j] min {M[i][k] M[k 1][j] Pi 1Pk Pj} ik j
43.
Recursive Solution #04
本当に必要な情報はMではない 切断位置 k の情報が必要 S[i][j]にでも格納しておけばいい
44.
Step of DP
Characterize Recursively define Compute Construct an optimal solutions
45.
Computing #01 式を普通に計算する?
指数関数時間・・・ Keyword: Tabular and Bottom-up
46.
Computing #02 –
Imprement 実装はP375. 式より → M[i][i] = 0 For for で計算 S[i][j]に括弧の位置も記憶する
47.
Step of DP
Characterize Recursively define Compute Construct an optimal solutions
48.
Constructing 分離箇所の情報 S
を使う 詳しくはP376,377
49.
例題終わり
50.
一般的なこと
51.
§15.3 Elements of
DP DPをどういうときに使うか 2つの要素( ingredients ) 1. Optimal Substructure 2. Overlapping Subproblem
52.
Optimal Substructure Step1で最適化問題をCharacterizeしている
最適解の中に小問題の最適解を含んでいた Optimal Substructure と呼ぶ これを見つけることがStep1の仕事
53.
How to discover
見つけるときにどんなことをしている? 小問題に分けるための選択・切り分け 部分空間に分けている Cut-and-paste
54.
Cut-and-paste Cut-out と
Paste-in という技法 最適でない部分を取り除く 最適な解を取り入れる 全体として better な解になる
55.
Space of Subproblems
出来るだけシンプルに保つ Rod-cutting (Length n) -> Rod-cutting (Length i) Matrices (A1 … Aj) -> (A1 … Ak) , (Ak+1 … Aj)
56.
Optimal Substructure 全体の最適解のために、いくつの部分解を使うか
どの小問題を使うかをどれだけ選択するか RodCut(n) -> 1つの小問題(length n-i) + iの選択(n) Matrices(I,J) -> 2つの小問題 + 選択(j-i)
57.
Runnnig Time 一般的な要因は2つ
全体での小問題の個数 選択の回数 Subproblem graphで解析できる
58.
Graph -> Running
Time 頂点(vertex)の個数 -> 小問題の個数 辺(edge)の個数 -> 選択の回数 N vertices, N edges / vertex. -> O(n^2) 4 3 2 1 0
59.
Cost ボトムアップ 小問題のコスト+それ自身を選ぶコスト
Rod-cuttingの例 小問題 n 個(Length 0,1,….,n-1) Nのどこで切るかを選択 ( nパターン ) 切断しない、というコスト (pn)
60.
Without optimal substructure
最適解を分割して求められない 部分最適解の和が全体の最適解にならない 例はグラフのLongest Simple Path (P381) Independentかどうかが大切(P383) 資源とか情報を使うかどうか・・・
61.
Overlapping Subproblem 小問題は元の問題より小さくなる
同じ問題が何度も出てくる Overlapping Subproblem Divide-and-conqureとの違い
62.
Divide-and-conquer 分割の時に似た問題を作る 同じ問題は出てこないかも(
quick sort ) Tabularが使えない DPでは表に結果を蓄積して高速化
63.
※ Memoize トップダウン用の技術
過去の計算情報を保存 上手く使えば効率的 詳しくは第三版P387-389
64.
例題ラッシュ
65.
§15.4 LCS Longest
Common Subsequence 例えばDNA配列のLCSを求める Sequence X := < x1 , x2 , … , xm > Subsequence Z of X := < z1 , z2 , … , zk > Increasingly <i1 , i2 , … ik >が存在すること
66.
Example X=<A,B,C,B,D,A,B> Z=<B,C,A>
Z は X の Subsequence ( I = < 2 , 3 , 6 >)
67.
Common and Longest
Common Sequence Z of X and Y Z は X と Y の両方のSubsequence Longest Common Subsequence Z of X and Y CS の中でもっとも長いもの
68.
Step of DP
Characterize Recursively define Compute Construct an optimal solutions
69.
Characterize LCS #01
X ( Length m ) -> 2^m パターン X = < x1 , x2 , … , xm > とするとき Xi = < x1 , x2 , … , xi > とする ( I <= m)
70.
Characterize LCS #02
Theorem 15.1 ( P392 ) LCS’s optimal substructure X = < x1 , … , xm > , Y = < y1 , … , yn > Z を X と Y のLCSとする。 Z = < z1 , … , zk >
71.
Theorem 15.1 xm=yn
-> zk=xm=yn で Zk-1 が Xm-1 と Yn-1 の LCS xm != yn zk != xm -> Z は Xm-1 と Y の LCS zk != yn -> Z は X と Yn-1 の LCS 証明はP392
72.
Step of DP
Characterize Recursively define Compute Construct an optimal solutions
73.
C[i][j] : LCS
の 長さ 再帰的に定義する(式15.9) C[0][0] = 0 xi = yi -> c[i][j] = c[i-1][j-1] + 1 xi != yi -> c[i][j-1]とc[i-1][j]の大きい方
74.
Step of DP
Characterize Recursively define Compute Construct an optimal solutions
75.
Compute / Imprement
P394 For for で計算 長さの情報C[i][j]と向きの情報B[i][j]を確保 向きの情報はStep4で使う
76.
Step of DP
Characterize Recursively define Compute Construct an optimal solutions
77.
Constructing 図はP395
78.
§15.5 Optimal binary
search tree 昇順でK=<k1, k2, … , kn>が与えられる 二分探索木を作りたい N個の接点とN+1個のダミーの値を持つ 接点kiに対する確率piが与えられる
79.
Binary Search Tree
k2 n = 5 の例 k1 k3 ダミー(Kに入ってない) d0 d1 k4 k5 kiへの探索確率 pi diへの探索確率 qi d2 d3 d4 d5 i 0 1 2 3 4 5 pi - 0.15 0.10 0.05 0.10 0.20 qi 0.05 0.10 0.05 0.05 0.05 0.10
80.
Problem 二分探索木の形は一意に決まるわけではない kiへの探索が成功、diへの探索が失敗
確率が与えられてるから期待値が出せる n n (depth(ki) 1)pi (depth(di) 1)qi i 1 i 0 n n 1 depth(ki)pi depth(di)qi i 1 i 0
81.
Problem 期待値が最良になる二分探索木を求める Step1.
~ Step4. (P399~404)
82.
問題
83.
Problem. of DP.
#01 Ex15-1 : Longest simple path in a directed acyclic graph Ex15-2 : Longest Palindrome subsequence Ex15-3 : Bitonic euclidean traveling-salesman problem Ex15-4 : Printing neatly
84.
Problem. of DP.
#02 Ex15-5 : Edit distance Ex15-6 : Planning a company party Ex15-7 : Viterbi algorithm Ex15-8 : Image Compression by seam carving
85.
Problem. of DP.
#03 Ex15-9 :Breaking a string Ex15-10 : Planning a investment strategy Ex15-11 : Inventory planning Ex15-12 : Signing free-agent baseball players
86.
問題ラッシュおしまい
87.
History of DP.
1955. R. Bellman (1920-1984) 動的計画法(最適性の原理) 次元の呪い
Baixar agora