Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Chapter 15 - Dynamic Programming, Introductions...
Search
Keisuke Okumura | 奥村圭祐
November 29, 2020
Programming
1
250
Chapter 15 - Dynamic Programming, Introductions to Algorithms (CLRS)
アルゴリズムイントロダクション 第15章 動的計画法
研究室内の非公式の輪読会で使用した資料です。
内容: 動的計画法の基本的な考え方(トップダウン、ボトムアップ)、ロッド切出し、連鎖行列積
Keisuke Okumura | 奥村圭祐
November 29, 2020
Tweet
Share
More Decks by Keisuke Okumura | 奥村圭祐
See All by Keisuke Okumura | 奥村圭祐
Combinatorial Search with Generators
kei18
0
320
Engineering LaCAM∗: Towards Real-Time, Large-Scale, and Near-Optimal Multi-Agent Pathfinding
kei18
0
2.7k
Breaking Tradeoffs: Extremely Scalable Multi-Agent Pathfinding Algorithms
kei18
0
410
Remove Assumptions in Multi-Agent Pathfinding
kei18
0
360
Pathfinding for 10k agents
kei18
1
14k
Quick Multi-Robot Motion Planning by Combining Sampling and Search
kei18
0
1.3k
Improving LaCAM for Scalable Eventually Optimal Multi-Agent Pathfinding
kei18
0
3.3k
PhD defense 1/2: Planning, Execution, Representation, and Their Integration for Multiple Moving Agents
kei18
2
1.3k
PhD defense 2/2: Planning, Execution, Representation, and Their Integration for Multiple Moving Agents
kei18
1
1.2k
Other Decks in Programming
See All in Programming
Hypervel - A Coroutine Framework for Laravel Artisans
albertcht
1
110
#kanrk08 / 公開版 PicoRubyとマイコンでの自作トレーニング計測装置を用いたワークアウトの理想と現実
bash0c7
1
650
PHP 8.4の新機能「プロパティフック」から学ぶオブジェクト指向設計とリスコフの置換原則
kentaroutakeda
2
680
Quand Symfony, ApiPlatform, OpenAI et LangChain s'allient pour exploiter vos PDF : de la théorie à la production…
ahmedbhs123
0
100
C++20 射影変換
faithandbrave
0
550
High-Level Programming Languages in AI Era -Human Thought and Mind-
hayat01sh1da
PRO
0
640
新メンバーも今日から大活躍!SREが支えるスケールし続ける組織のオンボーディング
honmarkhunt
0
170
PHPでWebSocketサーバーを実装しよう2025
kubotak
0
240
ReadMoreTextView
fornewid
1
490
WebViewの現在地 - SwiftUI時代のWebKit - / The Current State Of WebView
marcy731
0
100
git worktree × Claude Code × MCP ~生成AI時代の並列開発フロー~
hisuzuya
1
520
「Cursor/Devin全社導入の理想と現実」のその後
saitoryc
0
630
Featured
See All Featured
Raft: Consensus for Rubyists
vanstee
140
7k
Side Projects
sachag
455
42k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Why You Should Never Use an ORM
jnunemaker
PRO
58
9.4k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
138
34k
A designer walks into a library…
pauljervisheath
207
24k
4 Signs Your Business is Dying
shpigford
184
22k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
Rails Girls Zürich Keynote
gr2m
94
14k
RailsConf 2023
tenderlove
30
1.1k
Designing Experiences People Love
moore
142
24k
KATA
mclloyd
30
14k
Transcript
blog.pramp.com アルゴリズムイントロダクション 第三版 15章 動的計画法 2020.7.22 奥村圭祐 20年度 東工大Defago研・裏輪行 DYNAMIC
PROGRAMMING
/25 2 公開用の断り書き https://tanukifont.com/ フォントはたぬきフォントを使用させていただいています。 本資料は研究室内の非公式の輪読会で使用したもので、 対象書籍は「アルゴリズム イントロダクション」の第三版(通称CLRS)になります。 スライド中の擬似コード(英語)は英語版のスクリーンショットを使用しています。 厳密性に欠いているところはありますがご容赦ください。
間違い等ございましたら okumura.k[at]coord.c.titech.ac.jp まで、 ご連絡いただけると幸いです。
/25 15.1 ロッド切出し 15.2 連鎖行列積 15.3 動的計画法の基本要素 15.4 最長共通部分列 15.5
最適2分探索木 15章の構成 目標: 動的計画法が適応できそうだ!と見積もりが立てられるようになること 3
/25 Wikipediaより 復習: 分割統治法 部分問題の解を組合わせて元の解を得る 結合 部分問題を再帰的に解く 統治 問題をいくつかの部分問題に分割 分割
/25 5 ケーススタディ1: ロッド切出し問題 1本の金属棒からいくつかの金属棒を切り出すとき 収益最大化を達成するような切断箇所を決定したい 長さ 1 2 3
4 5 6 7 8 9 10 価格 1 5 8 9 10 17 17 20 24 30 i <latexit sha1_base64="hA2BMjcr0btVk5qY1/HOr4xO94Q=">AAAB6HicbVBNS8NAEJ3Ur1q/qh69LBbBU0mqoMeiF48t2FpoQ9lsJ+3azSbsboQS+gu8eFDEqz/Jm//GbZuDtj4YeLw3w8y8IBFcG9f9dgpr6xubW8Xt0s7u3v5B+fCoreNUMWyxWMSqE1CNgktsGW4EdhKFNAoEPgTj25n/8IRK81jem0mCfkSHkoecUWOlJu+XK27VnYOsEi8nFcjR6Je/eoOYpRFKwwTVuuu5ifEzqgxnAqelXqoxoWxMh9i1VNIItZ/ND52SM6sMSBgrW9KQufp7IqOR1pMosJ0RNSO97M3E/7xuasJrP+MySQ1KtlgUpoKYmMy+JgOukBkxsYQyxe2thI2ooszYbEo2BG/55VXSrlW9i2qteVmp3+RxFOEETuEcPLiCOtxBA1rAAOEZXuHNeXRenHfnY9FacPKZY/gD5/MH0MuM8Q==</latexit> pi <latexit sha1_base64="d859ofo0ri5GbQo8/CJ8f1zry30=">AAAB6nicbVBNS8NAEJ3Ur1q/qh69LBbBU0mqoMeiF48V7Qe0oWy2k3bpZhN2N0IJ/QlePCji1V/kzX/jts1BWx8MPN6bYWZekAiujet+O4W19Y3NreJ2aWd3b/+gfHjU0nGqGDZZLGLVCahGwSU2DTcCO4lCGgUC28H4dua3n1BpHstHM0nQj+hQ8pAzaqz0kPR5v1xxq+4cZJV4OalAjka//NUbxCyNUBomqNZdz02Mn1FlOBM4LfVSjQllYzrErqWSRqj9bH7qlJxZZUDCWNmShszV3xMZjbSeRIHtjKgZ6WVvJv7ndVMTXvsZl0lqULLFojAVxMRk9jcZcIXMiIkllClubyVsRBVlxqZTsiF4yy+vklat6l1Ua/eXlfpNHkcRTuAUzsGDK6jDHTSgCQyG8Ayv8OYI58V5dz4WrQUnnzmGP3A+fwBVro3U</latexit> - 棒の長さ n <latexit sha1_base64="2QmInd+nHO60uhS7AYCvgpiU4a8=">AAAB6HicbVBNS8NAEJ3Ur1q/qh69LBbBU0mqoMeiF48t2FpoQ9lsJ+3azSbsboQS+gu8eFDEqz/Jm//GbZuDtj4YeLw3w8y8IBFcG9f9dgpr6xubW8Xt0s7u3v5B+fCoreNUMWyxWMSqE1CNgktsGW4EdhKFNAoEPgTj25n/8IRK81jem0mCfkSHkoecUWOlpuyXK27VnYOsEi8nFcjR6Je/eoOYpRFKwwTVuuu5ifEzqgxnAqelXqoxoWxMh9i1VNIItZ/ND52SM6sMSBgrW9KQufp7IqOR1pMosJ0RNSO97M3E/7xuasJrP+MySQ1KtlgUpoKYmMy+JgOukBkxsYQyxe2thI2ooszYbEo2BG/55VXSrlW9i2qteVmp3+RxFOEETuEcPLiCOtxBA1rAAOEZXuHNeXRenHfnY9FacPKZY/gD5/MH2F+M9g==</latexit> 入力 - 価格表 出力 切り出した棒を価格表に従って販売して得ることのできる収益の最大値 例 n = 4 <latexit sha1_base64="4oLZWzjS5iueWcCbZp2dz20UMJU=">AAAB6nicbVDLSgNBEOyNrxhfUY9eBoPgKezGgF6EoBePEc0DkiXMTmaTIbOzy0yvEEI+wYsHRbz6Rd78GyfJHjSxoKGo6qa7K0ikMOi6305ubX1jcyu/XdjZ3ds/KB4eNU2casYbLJaxbgfUcCkUb6BAyduJ5jQKJG8Fo9uZ33ri2ohYPeI44X5EB0qEglG00oO6rvaKJbfszkFWiZeREmSo94pf3X7M0ogrZJIa0/HcBP0J1SiY5NNCNzU8oWxEB7xjqaIRN/5kfuqUnFmlT8JY21JI5urviQmNjBlHge2MKA7NsjcT//M6KYZX/kSoJEWu2GJRmEqCMZn9TfpCc4ZybAllWthbCRtSTRnadAo2BG/55VXSrJS9i3Llvlqq3WRx5OEETuEcPLiEGtxBHRrAYADP8ApvjnRenHfnY9Gac7KZY/gD5/MHzpWNew==</latexit> 9 1 8 5 5 1 5 1 最適解 1 1 1 1
/25 6 アルゴリズムの設計指針 最適な分割を仮定 n = i1 + i2 +
· · · + ik <latexit sha1_base64="2T77fa2FlFqC1BTs6p2ra15IY7M=">AAACBHicbVDLSgMxFM3UV62vUZfdBIsgCGWmCroRim5cVrAPaIeSSTNtaCYzJHeEMnThxl9x40IRt36EO//GdDoLbT2Qy8m595Dc48eCa3Ccb6uwsrq2vlHcLG1t7+zu2fsHLR0lirImjUSkOj7RTHDJmsBBsE6sGAl9wdr++GbWbz8wpXkk72ESMy8kQ8kDTgkYqW+XJb7CvO/iU1NrpvYGEejsNu7bFafqZMDLxM1JBeVo9O0v46ZJyCRQQbTuuk4MXkoUcCrYtNRLNIsJHZMh6xoqSci0l2ZLTPGxUQY4iJQ5EnCm/nakJNR6EvpmMiQw0ou9mfhfr5tAcOmlXMYJMEnnDwWJwBDhWSJ4wBWjICaGEKq4+SumI6IIBZNbyYTgLq68TFq1qntWrd2dV+rXeRxFVEZH6AS56ALV0S1qoCai6BE9o1f0Zj1ZL9a79TEfLVi55xD9gfX5AwFRlSU=</latexit> 分割された棒の長さ rn = pi1 + pi2 + · · · + pik <latexit sha1_base64="xO9E+n5o2Z3PBRLclx6e+8YRu48=">AAACEnicbZDLSgMxFIbPeK31VnXpJlgERSgzVdCNUHTjsoK9QDsMmTTThmYyQ5IRytBncOOruHGhiFtX7nwbM+0I2vpD4OM/5yQ5vx9zprRtf1kLi0vLK6uFteL6xubWdmlnt6miRBLaIBGPZNvHinImaEMzzWk7lhSHPqctf3id1Vv3VCoWiTs9iqkb4r5gASNYG8srHUtPoEsUeynznDE6mVI1o24v0urHGY69Utmu2BOheXByKEOuulf6NDeQJKRCE46V6jh2rN0US80Ip+NiN1E0xmSI+7RjUOCQKjedrDRGh8bpoSCS5giNJu7viRSHSo1C33SGWA/UbC0z/6t1Eh1cuCkTcaKpINOHgoQjHaEsH9RjkhLNRwYwkcz8FZEBlphok2LRhODMrjwPzWrFOa1Ub8/Ktas8jgLswwEcgQPnUIMbqEMDCDzAE7zAq/VoPVtv1vu0dcHKZ/bgj6yPbwt3m9c=</latexit> 最適な収益 個に分割 k <latexit sha1_base64="S3l8nnBLDerjgmOsR9KRP3N3+lk=">AAAB6HicbVBNS8NAEJ3Ur1q/qh69LBbBU0mqoMeiF48t2FpoQ9lsJ+3azSbsboQS+gu8eFDEqz/Jm//GbZuDtj4YeLw3w8y8IBFcG9f9dgpr6xubW8Xt0s7u3v5B+fCoreNUMWyxWMSqE1CNgktsGW4EdhKFNAoEPgTj25n/8IRK81jem0mCfkSHkoecUWOl5rhfrrhVdw6ySrycVCBHo1/+6g1ilkYoDRNU667nJsbPqDKcCZyWeqnGhLIxHWLXUkkj1H42P3RKzqwyIGGsbElD5urviYxGWk+iwHZG1Iz0sjcT//O6qQmv/YzLJDUo2WJRmApiYjL7mgy4QmbExBLKFLe3EjaiijJjsynZELzll1dJu1b1Lqq15mWlfpPHUYQTOIVz8OAK6nAHDWgBA4RneIU359F5cd6dj0VrwclnjuEPnM8f09OM8w==</latexit> rn = max (pn, r1 + rn 1, r2 + rn 2, . . . , rn 1 + r1) <latexit sha1_base64="VF5YgItC26ZaRlklvBN81eSkKj8=">AAACOHicbVBNSwMxEM36WetX1aOXYFEqatmtgl6EohdvVrC20C1LNs22odnsksyKZenP8uLP8CZePCji1V9g+iFodSDhzXszk8zzY8E12PaTNTU9Mzs3n1nILi4tr6zm1tZvdJQoyqo0EpGq+0QzwSWrAgfB6rFiJPQFq/nd84Feu2VK80heQy9mzZC0JQ84JWAoL3epPIl3TrEbkjtXsAAKsSf3sfIcvGfuVB44/UFa+k5LJnVbEej9b3moOK7i7Q7serm8XbSHgf8CZwzyaBwVL/doptEkZBKoIFo3HDuGZkoUcCpYP+smmsWEdkmbNQyUJGS6mQ4X7+Ntw7RwEClzJOAh+7MjJaHWvdA3lSGBjp7UBuR/WiOB4KSZchknwCQdPRQkAkOEBy7iFleMgugZQKji5q+YdogiFIzXWWOCM7nyX3BTKjqHxdLVUb58NrYjgzbRFiogBx2jMrpAFVRFFN2jZ/SK3qwH68V6tz5GpVPWuGcD/Qrr8wuFtKim</latexit> 部分構造最適性に着目 長さが と の2つの金属棒に切断, それぞれの金属棒を最適に 分割することで得られる総収入 n i <latexit sha1_base64="AMTEmYgqxguyFb26Fa9BmJlDjkI=">AAAB6nicbVBNS8NAEJ34WetX1aOXxSJ4sSRV0GPRi8eK9gPaUDbbTbt0swm7E6GE/gQvHhTx6i/y5r9x2+agrQ8GHu/NMDMvSKQw6Lrfzsrq2vrGZmGruL2zu7dfOjhsmjjVjDdYLGPdDqjhUijeQIGStxPNaRRI3gpGt1O/9cS1EbF6xHHC/YgOlAgFo2ilB3UueqWyW3FnIMvEy0kZctR7pa9uP2ZpxBUySY3peG6CfkY1Cib5pNhNDU8oG9EB71iqaMSNn81OnZBTq/RJGGtbCslM/T2R0ciYcRTYzoji0Cx6U/E/r5NieO1nQiUpcsXmi8JUEozJ9G/SF5ozlGNLKNPC3krYkGrK0KZTtCF4iy8vk2a14l1UqveX5dpNHkcBjuEEzsCDK6jBHdShAQwG8Ayv8OZI58V5dz7mrStOPnMEf+B8/gAGqI2g</latexit> i <latexit sha1_base64="hA2BMjcr0btVk5qY1/HOr4xO94Q=">AAAB6HicbVBNS8NAEJ3Ur1q/qh69LBbBU0mqoMeiF48t2FpoQ9lsJ+3azSbsboQS+gu8eFDEqz/Jm//GbZuDtj4YeLw3w8y8IBFcG9f9dgpr6xubW8Xt0s7u3v5B+fCoreNUMWyxWMSqE1CNgktsGW4EdhKFNAoEPgTj25n/8IRK81jem0mCfkSHkoecUWOlJu+XK27VnYOsEi8nFcjR6Je/eoOYpRFKwwTVuuu5ifEzqgxnAqelXqoxoWxMh9i1VNIItZ/ND52SM6sMSBgrW9KQufp7IqOR1pMosJ0RNSO97M3E/7xuasJrP+MySQ1KtlgUpoKYmMy+JgOukBkxsYQyxe2thI2ooszYbEo2BG/55VXSrlW9i2qteVmp3+RxFOEETuEcPLiCOtxBA1rAAOEZXuHNeXRenHfnY9FacPKZY/gD5/MH0MuM8Q==</latexit> 切断なし 上式をもっと簡略化 rn = max 1in (pi + rn i) <latexit sha1_base64="6RTdfevw2pAJ9wQarvRglSTkhQM=">AAACHnicbVDLSgMxFM3UV62vqks3wSJUxDJTFd0IRTcuK9gHdMqQSTNtaCYzJnfEMvRL3PgrblwoIrjSvzF9LLR6INzDOfdyc48fC67Btr+szNz8wuJSdjm3srq2vpHf3KrrKFGU1WgkItX0iWaCS1YDDoI1Y8VI6AvW8PuXI79xx5TmkbyBQczaIelKHnBKwEhe/kR5Ep9jNyT3Xuq4gt1ijsdFDk0JoBh7HB9g5aXykA9dxbs92PfyBbtkj4H/EmdKCmiKqpf/cDsRTUImgQqidcuxY2inRAGngg1zbqJZTGifdFnLUElCptvp+Lwh3jNKBweRMk8CHqs/J1ISaj0IfdMZEujpWW8k/ue1EgjO2imXcQJM0smiIBEYIjzKCne4YhTEwBBCFTd/xbRHFKFgEs2ZEJzZk/+SernkHJXK18eFysU0jizaQbuoiBx0iiroClVRDVH0gJ7QC3q1Hq1n6816n7RmrOnMNvoF6/MbSKqhXA==</latexit> 分割を左端から切り出された長さ の金属棒と 右側に残る長さ の部分とみなす i <latexit sha1_base64="hA2BMjcr0btVk5qY1/HOr4xO94Q=">AAAB6HicbVBNS8NAEJ3Ur1q/qh69LBbBU0mqoMeiF48t2FpoQ9lsJ+3azSbsboQS+gu8eFDEqz/Jm//GbZuDtj4YeLw3w8y8IBFcG9f9dgpr6xubW8Xt0s7u3v5B+fCoreNUMWyxWMSqE1CNgktsGW4EdhKFNAoEPgTj25n/8IRK81jem0mCfkSHkoecUWOlJu+XK27VnYOsEi8nFcjR6Je/eoOYpRFKwwTVuuu5ifEzqgxnAqelXqoxoWxMh9i1VNIItZ/ND52SM6sMSBgrW9KQufp7IqOR1pMosJ0RNSO97M3E/7xuasJrP+MySQ1KtlgUpoKYmMy+JgOukBkxsYQyxe2thI2ooszYbEo2BG/55VXSrlW9i2qteVmp3+RxFOEETuEcPLiCOtxBA1rAAOEZXuHNeXRenHfnY9FacPKZY/gD5/MH0MuM8Q==</latexit> n i <latexit sha1_base64="AMTEmYgqxguyFb26Fa9BmJlDjkI=">AAAB6nicbVBNS8NAEJ34WetX1aOXxSJ4sSRV0GPRi8eK9gPaUDbbTbt0swm7E6GE/gQvHhTx6i/y5r9x2+agrQ8GHu/NMDMvSKQw6Lrfzsrq2vrGZmGruL2zu7dfOjhsmjjVjDdYLGPdDqjhUijeQIGStxPNaRRI3gpGt1O/9cS1EbF6xHHC/YgOlAgFo2ilB3UueqWyW3FnIMvEy0kZctR7pa9uP2ZpxBUySY3peG6CfkY1Cib5pNhNDU8oG9EB71iqaMSNn81OnZBTq/RJGGtbCslM/T2R0ciYcRTYzoji0Cx6U/E/r5NieO1nQiUpcsXmi8JUEozJ9G/SF5ozlGNLKNPC3krYkGrK0KZTtCF4iy8vk2a14l1UqveX5dpNHkcBjuEEzsCDK6jBHdShAQwG8Ayv8OZI58V5dz7mrStOPnMEf+B8/gAGqI2g</latexit>
/25 7 再帰的トップダウン型実現 rn = max 1in (pi + rn
i) <latexit sha1_base64="6RTdfevw2pAJ9wQarvRglSTkhQM=">AAACHnicbVDLSgMxFM3UV62vqks3wSJUxDJTFd0IRTcuK9gHdMqQSTNtaCYzJnfEMvRL3PgrblwoIrjSvzF9LLR6INzDOfdyc48fC67Btr+szNz8wuJSdjm3srq2vpHf3KrrKFGU1WgkItX0iWaCS1YDDoI1Y8VI6AvW8PuXI79xx5TmkbyBQczaIelKHnBKwEhe/kR5Ep9jNyT3Xuq4gt1ijsdFDk0JoBh7HB9g5aXykA9dxbs92PfyBbtkj4H/EmdKCmiKqpf/cDsRTUImgQqidcuxY2inRAGngg1zbqJZTGifdFnLUElCptvp+Lwh3jNKBweRMk8CHqs/J1ISaj0IfdMZEujpWW8k/ue1EgjO2imXcQJM0smiIBEYIjzKCne4YhTEwBBCFTd/xbRHFKFgEs2ZEJzZk/+SernkHJXK18eFysU0jizaQbuoiBx0iiroClVRDVH0gJ7QC3q1Hq1n6816n7RmrOnMNvoF6/MbSKqhXA==</latexit> 棒の長さがゼロであれば最適解はゼロ このアルゴリズムは効率的だろうか? 価格表 棒の長さ を返す rn = pi1 + pi2 + · · · + pik <latexit sha1_base64="xO9E+n5o2Z3PBRLclx6e+8YRu48=">AAACEnicbZDLSgMxFIbPeK31VnXpJlgERSgzVdCNUHTjsoK9QDsMmTTThmYyQ5IRytBncOOruHGhiFtX7nwbM+0I2vpD4OM/5yQ5vx9zprRtf1kLi0vLK6uFteL6xubWdmlnt6miRBLaIBGPZNvHinImaEMzzWk7lhSHPqctf3id1Vv3VCoWiTs9iqkb4r5gASNYG8srHUtPoEsUeynznDE6mVI1o24v0urHGY69Utmu2BOheXByKEOuulf6NDeQJKRCE46V6jh2rN0US80Ip+NiN1E0xmSI+7RjUOCQKjedrDRGh8bpoSCS5giNJu7viRSHSo1C33SGWA/UbC0z/6t1Eh1cuCkTcaKpINOHgoQjHaEsH9RjkhLNRwYwkcz8FZEBlphok2LRhODMrjwPzWrFOa1Ub8/Ktas8jgLswwEcgQPnUIMbqEMDCDzAE7zAq/VoPVtv1vu0dcHKZ/bgj6yPbwt3m9c=</latexit>
/25 8 4 Cut-Rod(p, 4) <latexit sha1_base64="VXW9NeIZVP5wdRHbBH6CItNX4HI=">AAACAXicbVDLSgNBEJyNrxhfq14EL4NBiKBhNwb0GMzFYxTzgCSE2dnZZMjsg5leMSzx4q948aCIV//Cm3/jJNmDJhY0FFXddHc5keAKLOvbyCwtr6yuZddzG5tb2zvm7l5DhbGkrE5DEcqWQxQTPGB14CBYK5KM+I5gTWdYnfjNeyYVD4M7GEWs65N+wD1OCWipZx50gD1A0lEUV2M4uw3dcSE6xeWTnpm3itYUeJHYKcmjFLWe+dVxQxr7LAAqiFJt24qgmxAJnAo2znVixSJCh6TP2poGxGeqm0w/GONjrbjYC6WuAPBU/T2REF+pke/oTp/AQM17E/E/rx2Dd9lNeBDFwAI6W+TFAkOIJ3Fgl0tGQYw0IVRyfSumAyIJBR1aTodgz7+8SBqlon1eLN2U85WrNI4sOkRHqIBsdIEq6BrVUB1R9Iie0St6M56MF+Pd+Ji1Zox0Zh/9gfH5A8amlck=</latexit> 3 0 2
1 0 0 1 0 1 0 0 n = 4 <latexit sha1_base64="4oLZWzjS5iueWcCbZp2dz20UMJU=">AAAB6nicbVDLSgNBEOyNrxhfUY9eBoPgKezGgF6EoBePEc0DkiXMTmaTIbOzy0yvEEI+wYsHRbz6Rd78GyfJHjSxoKGo6qa7K0ikMOi6305ubX1jcyu/XdjZ3ds/KB4eNU2casYbLJaxbgfUcCkUb6BAyduJ5jQKJG8Fo9uZ33ri2ohYPeI44X5EB0qEglG00oO6rvaKJbfszkFWiZeREmSo94pf3X7M0ogrZJIa0/HcBP0J1SiY5NNCNzU8oWxEB7xjqaIRN/5kfuqUnFmlT8JY21JI5urviQmNjBlHge2MKA7NsjcT//M6KYZX/kSoJEWu2GJRmEqCMZn9TfpCc4ZybAllWthbCRtSTRnadAo2BG/55VXSrJS9i3Llvlqq3WRx5OEETuEcPLiEGtxBHRrAYADP8ApvjnRenHfnY9Gac7KZY/gD5/MHzpWNew==</latexit> の場合 2 1 0 0 葉の数: 2n 1 <latexit sha1_base64="XbIHs5xrBIKTkV3UijySlIVcn7I=">AAAB7nicbVBNS8NAEJ34WetX1aOXxSJ4sSRV0GPRi8cK9gPaWDbbTbt0swm7E6GE/ggvHhTx6u/x5r9x2+agrQ8GHu/NMDMvSKQw6Lrfzsrq2vrGZmGruL2zu7dfOjhsmjjVjDdYLGPdDqjhUijeQIGStxPNaRRI3gpGt1O/9cS1EbF6wHHC/YgOlAgFo2ilVvUxU+fepFcquxV3BrJMvJyUIUe9V/rq9mOWRlwhk9SYjucm6GdUo2CST4rd1PCEshEd8I6likbc+Nns3Ak5tUqfhLG2pZDM1N8TGY2MGUeB7YwoDs2iNxX/8zophtd+JlSSIldsvihMJcGYTH8nfaE5Qzm2hDIt7K2EDammDG1CRRuCt/jyMmlWK95FpXp/Wa7d5HEU4BhO4Aw8uIIa3EEdGsBgBM/wCm9O4rw4787HvHXFyWeO4A+czx+dbI8Y</latexit> 問題を解くのに に関して 指数時間必要とする n <latexit sha1_base64="2QmInd+nHO60uhS7AYCvgpiU4a8=">AAAB6HicbVBNS8NAEJ3Ur1q/qh69LBbBU0mqoMeiF48t2FpoQ9lsJ+3azSbsboQS+gu8eFDEqz/Jm//GbZuDtj4YeLw3w8y8IBFcG9f9dgpr6xubW8Xt0s7u3v5B+fCoreNUMWyxWMSqE1CNgktsGW4EdhKFNAoEPgTj25n/8IRK81jem0mCfkSHkoecUWOlpuyXK27VnYOsEi8nFcjR6Je/eoOYpRFKwwTVuuu5ifEzqgxnAqelXqoxoWxMh9i1VNIItZ/ND52SM6sMSBgrW9KQufp7IqOR1pMosJ0RNSO97M3E/7xuasJrP+MySQ1KtlgUpoKYmMy+JgOukBkxsYQyxe2thI2ooszYbEo2BG/55VXSrlW9i2qteVmp3+RxFOEETuEcPLiCOtxBA1rAAOEZXuHNeXRenHfnY9FacPKZY/gD5/MH2F+M9g==</latexit> 何度も同じ部分問題を解くのは無駄 各部分問題を”一度だけ”解くようにすれば効率的なはず!
/25 9 履歴管理を用いるトップダウン方式 保存された結果を利用 部分問題の解を保存 rn = max 1in (pi
+ rn i) <latexit sha1_base64="6RTdfevw2pAJ9wQarvRglSTkhQM=">AAACHnicbVDLSgMxFM3UV62vqks3wSJUxDJTFd0IRTcuK9gHdMqQSTNtaCYzJnfEMvRL3PgrblwoIrjSvzF9LLR6INzDOfdyc48fC67Btr+szNz8wuJSdjm3srq2vpHf3KrrKFGU1WgkItX0iWaCS1YDDoI1Y8VI6AvW8PuXI79xx5TmkbyBQczaIelKHnBKwEhe/kR5Ep9jNyT3Xuq4gt1ijsdFDk0JoBh7HB9g5aXykA9dxbs92PfyBbtkj4H/EmdKCmiKqpf/cDsRTUImgQqidcuxY2inRAGngg1zbqJZTGifdFnLUElCptvp+Lwh3jNKBweRMk8CHqs/J1ISaj0IfdMZEujpWW8k/ue1EgjO2imXcQJM0smiIBEYIjzKCne4YhTEwBBCFTd/xbRHFKFgEs2ZEJzZk/+SernkHJXK18eFysU0jizaQbuoiBx0iiroClVRDVH0gJ7QC3q1Hq1n6816n7RmrOnMNvoF6/MbSKqhXA==</latexit> 履歴表を初期化 4 3 0 2 1 0 0 1 1 0 2 ⇥ n2 <latexit sha1_base64="HgiBb1IwoGeFkFQot3wSnD2hmNc=">AAAB/3icbVDLSgNBEJyNrxhfq4IXL4tBiJewGwU9Br14jJAXZGOYnfQmQ2Znl5leIcQc/BUvHhTx6m9482+cPA6aWNBQVHXT3RUkgmt03W8rs7K6tr6R3cxtbe/s7tn7B3Udp4pBjcUiVs2AahBcQg05CmgmCmgUCGgEg5uJ33gApXksqzhMoB3RnuQhZxSN1LGP/GofkPoCQizI+5KveK+PZx077xbdKZxl4s1JnsxR6dhffjdmaQQSmaBatzw3wfaIKuRMwDjnpxoSyga0By1DJY1At0fT+8fOqVG6ThgrUxKdqfp7YkQjrYdRYDojin296E3E/7xWiuFVe8RlkiJINlsUpsLB2JmE4XS5AoZiaAhliptbHdanijI0keVMCN7iy8ukXip658XS3UW+fD2PI0uOyQkpEI9ckjK5JRVSI4w8kmfySt6sJ+vFerc+Zq0Zaz5zSP7A+vwBXiOVrQ==</latexit> 計算量:
/25 10 ボトムアップ方式 履歴表を初期化 3 2 0 1 4 ⇥
n2 <latexit sha1_base64="HgiBb1IwoGeFkFQot3wSnD2hmNc=">AAAB/3icbVDLSgNBEJyNrxhfq4IXL4tBiJewGwU9Br14jJAXZGOYnfQmQ2Znl5leIcQc/BUvHhTx6m9482+cPA6aWNBQVHXT3RUkgmt03W8rs7K6tr6R3cxtbe/s7tn7B3Udp4pBjcUiVs2AahBcQg05CmgmCmgUCGgEg5uJ33gApXksqzhMoB3RnuQhZxSN1LGP/GofkPoCQizI+5KveK+PZx077xbdKZxl4s1JnsxR6dhffjdmaQQSmaBatzw3wfaIKuRMwDjnpxoSyga0By1DJY1At0fT+8fOqVG6ThgrUxKdqfp7YkQjrYdRYDojin296E3E/7xWiuFVe8RlkiJINlsUpsLB2JmE4XS5AoZiaAhliptbHdanijI0keVMCN7iy8ukXip658XS3UW+fD2PI0uOyQkpEI9ckjK5JRVSI4w8kmfySt6sJ+vFerc+Zq0Zaz5zSP7A+vwBXiOVrQ==</latexit> 計算量: 部分問題グラフ と呼ばれる を計算 rj <latexit sha1_base64="5phcDxLPvTMs4BrLH+U90NbRX7c=">AAAB6nicbVBNS8NAEJ34WetX1aOXxSJ4KkkV9Fj04rGi/YA2lM12067dbMLuRCihP8GLB0W8+ou8+W/ctjlo64OBx3szzMwLEikMuu63s7K6tr6xWdgqbu/s7u2XDg6bJk414w0Wy1i3A2q4FIo3UKDk7URzGgWSt4LRzdRvPXFtRKwecJxwP6IDJULBKFrpXvcee6WyW3FnIMvEy0kZctR7pa9uP2ZpxBUySY3peG6CfkY1Cib5pNhNDU8oG9EB71iqaMSNn81OnZBTq/RJGGtbCslM/T2R0ciYcRTYzoji0Cx6U/E/r5NieOVnQiUpcsXmi8JUEozJ9G/SF5ozlGNLKNPC3krYkGrK0KZTtCF4iy8vk2a14p1XqncX5dp1HkcBjuEEzsCDS6jBLdShAQwG8Ayv8OZI58V5dz7mrStOPnMEf+B8/gBaPo3X</latexit> 小さい問題から 順に解く
/25 11 解の再構成 もともとのモチベーション 1本の金属棒からいくつかの金属棒を切り出すとき 収益最大化を達成するような切断箇所を決定したい 左端からの切出し位置 切出し位置の保存 長さ 1
2 3 4 5 6 7 価格 1 5 8 9 10 17 17 i <latexit sha1_base64="hA2BMjcr0btVk5qY1/HOr4xO94Q=">AAAB6HicbVBNS8NAEJ3Ur1q/qh69LBbBU0mqoMeiF48t2FpoQ9lsJ+3azSbsboQS+gu8eFDEqz/Jm//GbZuDtj4YeLw3w8y8IBFcG9f9dgpr6xubW8Xt0s7u3v5B+fCoreNUMWyxWMSqE1CNgktsGW4EdhKFNAoEPgTj25n/8IRK81jem0mCfkSHkoecUWOlJu+XK27VnYOsEi8nFcjR6Je/eoOYpRFKwwTVuuu5ifEzqgxnAqelXqoxoWxMh9i1VNIItZ/ND52SM6sMSBgrW9KQufp7IqOR1pMosJ0RNSO97M3E/7xuasJrP+MySQ1KtlgUpoKYmMy+JgOukBkxsYQyxe2thI2ooszYbEo2BG/55VXSrlW9i2qteVmp3+RxFOEETuEcPLiCOtxBA1rAAOEZXuHNeXRenHfnY9FacPKZY/gD5/MH0MuM8Q==</latexit> pi <latexit sha1_base64="d859ofo0ri5GbQo8/CJ8f1zry30=">AAAB6nicbVBNS8NAEJ3Ur1q/qh69LBbBU0mqoMeiF48V7Qe0oWy2k3bpZhN2N0IJ/QlePCji1V/kzX/jts1BWx8MPN6bYWZekAiujet+O4W19Y3NreJ2aWd3b/+gfHjU0nGqGDZZLGLVCahGwSU2DTcCO4lCGgUC28H4dua3n1BpHstHM0nQj+hQ8pAzaqz0kPR5v1xxq+4cZJV4OalAjka//NUbxCyNUBomqNZdz02Mn1FlOBM4LfVSjQllYzrErqWSRqj9bH7qlJxZZUDCWNmShszV3xMZjbSeRIHtjKgZ6WVvJv7ndVMTXvsZl0lqULLFojAVxMRk9jcZcIXMiIkllClubyVsRBVlxqZTsiF4yy+vklat6l1Ua/eXlfpNHkcRTuAUzsGDK6jDHTSgCQyG8Ayv8OYI58V5dz4WrQUnnzmGP3A+fwBVro3U</latexit> 練習. 下の価格表に対し の場合の 最適な切分けを求めよ n = 7 <latexit sha1_base64="uOVCHv/GHlxDxnmLqcZixtu+GXo=">AAAB6nicbVDLSgNBEOyNrxhfUY9eBoPgKexGIV6EoBePEc0DkiXMTnqTIbOzy8ysEEI+wYsHRbz6Rd78GyfJHjSxoKGo6qa7K0gE18Z1v53c2vrG5lZ+u7Czu7d/UDw8auo4VQwbLBaxagdUo+ASG4Ybge1EIY0Cga1gdDvzW0+oNI/loxkn6Ed0IHnIGTVWepDX1V6x5JbdOcgq8TJSggz1XvGr249ZGqE0TFCtO56bGH9CleFM4LTQTTUmlI3oADuWShqh9ifzU6fkzCp9EsbKljRkrv6emNBI63EU2M6ImqFe9mbif14nNeGVP+EySQ1KtlgUpoKYmMz+Jn2ukBkxtoQyxe2thA2poszYdAo2BG/55VXSrJS9i3Ll/rJUu8niyMMJnMI5eFCFGtxBHRrAYADP8ApvjnBenHfnY9Gac7KZY/gD5/MH0yGNfg==</latexit> 答え: i1 = 1, i2 = 6 <latexit sha1_base64="gTecf2SyGBStgt0axZz3KCN1+NM=">AAAB+XicbZDLSsNAFIZP6q3WW9Slm8EiuJCStKJuhKIblxXsBdoQJtNJO3QyCTOTQgl9EzcuFHHrm7jzbZy2WWjrDwMf/zmHc+YPEs6Udpxvq7C2vrG5Vdwu7ezu7R/Yh0ctFaeS0CaJeSw7AVaUM0GbmmlOO4mkOAo4bQej+1m9PaZSsVg86UlCvQgPBAsZwdpYvm0z30W3yL1AzK8auPLtslNx5kKr4OZQhlwN3/7q9WOSRlRowrFSXddJtJdhqRnhdFrqpYommIzwgHYNChxR5WXzy6fozDh9FMbSPKHR3P09keFIqUkUmM4I66Fars3M/2rdVIc3XsZEkmoqyGJRmHKkYzSLAfWZpETziQFMJDO3IjLEEhNtwiqZENzlL69Cq1pxa5Xq42W5fpfHUYQTOIVzcOEa6vAADWgCgTE8wyu8WZn1Yr1bH4vWgpXPHMMfWZ8/b+KQ7w==</latexit>
/25 12 分割統治法っぽい手法で問題を解こうとするときに, 何度も同じ部分問題に遭遇する場合, その部分問題の解を保存しておき適宜利用すれば効率的 ここまでのハイライト
/25 13 ケーススタディ2: 連鎖行列積 個の行列が与えられたとき を求めたい. A1A2 · · ·
An <latexit sha1_base64="UyNC00PT78D/svO/N5YRdIsZfXQ=">AAAB+3icbZDLSgMxFIYzXmu91bp0EyyCqzJTBV22unFZwV6gHYZMJtOGZpIhOSOW0ldx40IRt76IO9/GtJ2Ftv4Q+PjPOZyTP0wFN+C6387a+sbm1nZhp7i7t39wWDoqt43KNGUtqoTS3ZAYJrhkLeAgWDfVjCShYJ1wdDurdx6ZNlzJBxinzE/IQPKYUwLWCkrlRuDhRlDDfRopMBatWXGr7lx4FbwcKihXMyh99SNFs4RJoIIY0/PcFPwJ0cCpYNNiPzMsJXREBqxnUZKEGX8yv32Kz6wT4Vhp+yTguft7YkISY8ZJaDsTAkOzXJuZ/9V6GcTX/oTLNAMm6WJRnAkMCs+CwBHXjIIYWyBUc3srpkOiCQUbV9GG4C1/eRXatap3Ua3dX1bqN3kcBXSCTtE58tAVqqM71EQtRNETekav6M2ZOi/Ou/OxaF1z8plj9EfO5w+uvJLt</latexit> n <latexit sha1_base64="2QmInd+nHO60uhS7AYCvgpiU4a8=">AAAB6HicbVBNS8NAEJ3Ur1q/qh69LBbBU0mqoMeiF48t2FpoQ9lsJ+3azSbsboQS+gu8eFDEqz/Jm//GbZuDtj4YeLw3w8y8IBFcG9f9dgpr6xubW8Xt0s7u3v5B+fCoreNUMWyxWMSqE1CNgktsGW4EdhKFNAoEPgTj25n/8IRK81jem0mCfkSHkoecUWOlpuyXK27VnYOsEi8nFcjR6Je/eoOYpRFKwwTVuuu5ifEzqgxnAqelXqoxoWxMh9i1VNIItZ/ND52SM6sMSBgrW9KQufp7IqOR1pMosJ0RNSO97M3E/7xuasJrP+MySQ1KtlgUpoKYmMy+JgOukBkxsYQyxe2thI2ooszYbEo2BG/55VXSrlW9i2qteVmp3+RxFOEETuEcPLiCOtxBA1rAAOEZXuHNeXRenHfnY9FacPKZY/gD5/MH2F+M9g==</latexit> (単純に)行列積を実行するのに必要なスカラー積の回数: 例 に対して の2通りの計算順序がある hA1, A2, A3 i <latexit sha1_base64="TTs6ndWGIyX4K/CVNCfBWzULGB4=">AAACA3icbVDLSgMxFM3UV62vUXe6CRbBhZSZVtCFSKsblxXsA9oyZNJMG5rJDMkdoZSCG3/FjQtF3PoT7vwbM20X2nrgXg7n3Etyjx8LrsFxvq3M0vLK6lp2PbexubW9Y+/u1XWUKMpqNBKRavpEM8ElqwEHwZqxYiT0BWv4g5vUbzwwpXkk72EYs05IepIHnBIwkmcftAUL4LLiuae44hXTVmor3uvDlWfnnYIzAV4k7ozk0QxVz/5qdyOahEwCFUTrluvE0BkRBZwKNs61E81iQgekx1qGShIy3RlNbhjjY6N0cRApUxLwRP29MSKh1sPQN5Mhgb6e91LxP6+VQHDRGXEZJ8AknT4UJAJDhNNAcJcrRkEMDSFUcfNXTPtEEQomtpwJwZ0/eZHUiwW3VCjeneXL17M4sugQHaET5KJzVEa3qIpqiKJH9Ixe0Zv1ZL1Y79bHdDRjzXb20R9Ynz/ZbJW8</latexit> (A1(A2A3)) <latexit sha1_base64="eBWXN76IhyTf1r7Z9lkep43RPoY=">AAAB+HicbVDLSgMxFL3js9ZHR126CRah3ZSZVtBlqxuXFewD2mHIpJk2NJMZkoxQh36JGxeKuPVT3Pk3po+Fth64l8M595KbEyScKe0439bG5tb2zm5uL79/cHhUsI9P2ipOJaEtEvNYdgOsKGeCtjTTnHYTSXEUcNoJxrczv/NIpWKxeNCThHoRHgoWMoK1kXy7UGr4LjKtihp+rVz27aJTceZA68RdkiIs0fTtr/4gJmlEhSYcK9VznUR7GZaaEU6n+X6qaILJGA9pz1CBI6q8bH74FF0YZYDCWJoSGs3V3xsZjpSaRIGZjLAeqVVvJv7n9VIdXnsZE0mqqSCLh8KUIx2jWQpowCQlmk8MwUQycysiIywx0SarvAnBXf3yOmlXK26tUr2/LNZvlnHk4AzOoQQuXEEd7qAJLSCQwjO8wpv1ZL1Y79bHYnTDWu6cwh9Ynz/YJJCd</latexit> ((A1A2)A3) <latexit sha1_base64="NmmJcp9OveOg5+3uYB5HWejcZSI=">AAAB+HicbVDLTgIxFL3jE/HBqEs3jcQENmQGTHQJunGJiTwSmEw6pUBDpzNpOyY44UvcuNAYt36KO//GArNQ8CT35uSce9PbE8ScKe0439bG5tb2zm5uL79/cHhUsI9P2ipKJKEtEvFIdgOsKGeCtjTTnHZjSXEYcNoJJrdzv/NIpWKReNDTmHohHgk2ZARrI/l2oVRq+C5q+NWyabWybxedirMAWiduRoqQoenbX/1BRJKQCk04VqrnOrH2Uiw1I5zO8v1E0RiTCR7RnqECh1R56eLwGbowygANI2lKaLRQf2+kOFRqGgZmMsR6rFa9ufif10v08NpLmYgTTQVZPjRMONIRmqeABkxSovnUEEwkM7ciMsYSE22yypsQ3NUvr5N2teLWKtX7y2L9JosjB2dwDiVw4QrqcAdNaAGBBJ7hFd6sJ+vFerc+lqMbVrZzCn9gff4A14SQnQ==</latexit> , C <latexit sha1_base64="re76Zkt0iSC9uIARbCEdpPGTKdg=">AAAB6HicbVDLTgJBEOzFF+IL9ehlIjHxRHbRRI9ELh4hkUcCGzI79MLI7OxmZtaEEL7AiweN8eonefNvHGAPClbSSaWqO91dQSK4Nq777eQ2Nre2d/K7hb39g8Oj4vFJS8epYthksYhVJ6AaBZfYNNwI7CQKaRQIbAfj2txvP6HSPJYPZpKgH9Gh5CFn1FipUesXS27ZXYCsEy8jJchQ7xe/eoOYpRFKwwTVuuu5ifGnVBnOBM4KvVRjQtmYDrFrqaQRan+6OHRGLqwyIGGsbElDFurviSmNtJ5Ege2MqBnpVW8u/ud1UxPe+lMuk9SgZMtFYSqIicn8azLgCpkRE0soU9zeStiIKsqMzaZgQ/BWX14nrUrZuypXGtel6l0WRx7O4BwuwYMbqMI91KEJDBCe4RXenEfnxXl3PpatOSebOYU/cD5/AJczjMs=</latexit> A <latexit sha1_base64="Lihtv2jYSe0RaYbwwPdS8141boc=">AAAB6HicbVDLTgJBEOzFF+IL9ehlIjHxRHbRRI+oF4+QyCOBDZkdemFkdnYzM2tCCF/gxYPGePWTvPk3DrAHBSvppFLVne6uIBFcG9f9dnJr6xubW/ntws7u3v5B8fCoqeNUMWywWMSqHVCNgktsGG4EthOFNAoEtoLR3cxvPaHSPJYPZpygH9GB5CFn1FipftMrltyyOwdZJV5GSpCh1it+dfsxSyOUhgmqdcdzE+NPqDKcCZwWuqnGhLIRHWDHUkkj1P5kfuiUnFmlT8JY2ZKGzNXfExMaaT2OAtsZUTPUy95M/M/rpCa89idcJqlByRaLwlQQE5PZ16TPFTIjxpZQpri9lbAhVZQZm03BhuAtv7xKmpWyd1Gu1C9L1dssjjycwCmcgwdXUIV7qEEDGCA8wyu8OY/Oi/PufCxac042cwx/4Hz+AJQrjMk=</latexit> B <latexit sha1_base64="wW6OXYFoJg3RvlrYIdlxqPzQzSE=">AAAB6HicbVDLTgJBEOzFF+IL9ehlIjHxRHbRRI8ELx4hkUcCGzI79MLI7OxmZtaEEL7AiweN8eonefNvHGAPClbSSaWqO91dQSK4Nq777eQ2Nre2d/K7hb39g8Oj4vFJS8epYthksYhVJ6AaBZfYNNwI7CQKaRQIbAfju7nffkKleSwfzCRBP6JDyUPOqLFSo9YvltyyuwBZJ15GSpCh3i9+9QYxSyOUhgmqdddzE+NPqTKcCZwVeqnGhLIxHWLXUkkj1P50ceiMXFhlQMJY2ZKGLNTfE1MaaT2JAtsZUTPSq95c/M/rpia89adcJqlByZaLwlQQE5P512TAFTIjJpZQpri9lbARVZQZm03BhuCtvrxOWpWyd1WuNK5L1VoWRx7O4BwuwYMbqMI91KEJDBCe4RXenEfnxXl3PpatOSebOYU/cD5/AJWvjMo=</latexit> C <latexit sha1_base64="re76Zkt0iSC9uIARbCEdpPGTKdg=">AAAB6HicbVDLTgJBEOzFF+IL9ehlIjHxRHbRRI9ELh4hkUcCGzI79MLI7OxmZtaEEL7AiweN8eonefNvHGAPClbSSaWqO91dQSK4Nq777eQ2Nre2d/K7hb39g8Oj4vFJS8epYthksYhVJ6AaBZfYNNwI7CQKaRQIbAfj2txvP6HSPJYPZpKgH9Gh5CFn1FipUesXS27ZXYCsEy8jJchQ7xe/eoOYpRFKwwTVuuu5ifGnVBnOBM4KvVRjQtmYDrFrqaQRan+6OHRGLqwyIGGsbElDFurviSmNtJ5Ege2MqBnpVW8u/ud1UxPe+lMuk9SgZMtFYSqIicn8azLgCpkRE0soU9zeStiIKsqMzaZgQ/BWX14nrUrZuypXGtel6l0WRx7O4BwuwYMbqMI91KEJDBCe4RXenEfnxXl3PpatOSebOYU/cD5/AJczjMs=</latexit> A.columns <latexit sha1_base64="9YLEa9C8sPOGS0rejJCUWgb5KgY=">AAAB+3icbVC7TsMwFHXKq5RXKCOLRYXEFCUFCcYCC2OR6ENqo8px3daq40T2DaKK8issDCDEyo+w8Tc4bQZoOZKlo3PutY9PEAuuwXW/rdLa+sbmVnm7srO7t39gH1bbOkoUZS0aiUh1A6KZ4JK1gINg3VgxEgaCdYLpbe53HpnSPJIPMIuZH5Kx5CNOCRhpYFf7IYEJh/TaMZclodTZwK65jjsHXiVeQWqoQHNgf/WHEU1CJoEKonXPc2PwU6KAU8GySj/RLCZ0SsasZ6gkIdN+Os+e4VOjDPEoUuZIwHP190ZKQq1nYWAm86R62cvF/7xeAqMrP+UyToBJunholAgMEc6LwEOuGAUxM4RQxU1WTCdEEQqmroopwVv+8ipp1x3v3KnfX9QaN0UdZXSMTtAZ8tAlaqA71EQtRNETekav6M3KrBfr3fpYjJasYucI/YH1+QNo6pSu</latexit> A.rows B.columns <latexit sha1_base64="vr/cq1LJaYeMLATSHP9LD+h/Z1M=">AAAB+3icbVC7TsMwFL0pr1JeoYwsFhUSU5QUJBirsjAWiT6kNqoc12mtOk5kO4gq6q+wMIAQKz/Cxt/gtBmg5UiWjs651z4+QcKZ0q77bZU2Nre2d8q7lb39g8Mj+7jaUXEqCW2TmMeyF2BFORO0rZnmtJdIiqOA024wvc397iOVisXiQc8S6kd4LFjICNZGGtrVQYT1hOms6ZjL0kio+dCuuY67AFonXkFqUKA1tL8Go5ikERWacKxU33MT7WdYakY4nVcGqaIJJlM8pn1DBY6o8rNF9jk6N8oIhbE0R2i0UH9vZDhSahYFZjJPqla9XPzP66c6vPEzJpJUU0GWD4UpRzpGeRFoxCQlms8MwUQykxWRCZaYaFNXxZTgrX55nXTqjnfp1O+vao1mUUcZTuEMLsCDa2jAHbSgDQSe4Ble4c2aWy/Wu/WxHC1Zxc4J/IH1+QNqd5Sv</latexit> (A1(A2A3)) <latexit sha1_base64="eBWXN76IhyTf1r7Z9lkep43RPoY=">AAAB+HicbVDLSgMxFL3js9ZHR126CRah3ZSZVtBlqxuXFewD2mHIpJk2NJMZkoxQh36JGxeKuPVT3Pk3po+Fth64l8M595KbEyScKe0439bG5tb2zm5uL79/cHhUsI9P2ipOJaEtEvNYdgOsKGeCtjTTnHYTSXEUcNoJxrczv/NIpWKxeNCThHoRHgoWMoK1kXy7UGr4LjKtihp+rVz27aJTceZA68RdkiIs0fTtr/4gJmlEhSYcK9VznUR7GZaaEU6n+X6qaILJGA9pz1CBI6q8bH74FF0YZYDCWJoSGs3V3xsZjpSaRIGZjLAeqVVvJv7n9VIdXnsZE0mqqSCLh8KUIx2jWQpowCQlmk8MwUQycysiIywx0SarvAnBXf3yOmlXK26tUr2/LNZvlnHk4AzOoQQuXEEd7qAJLSCQwjO8wpv1ZL1Y79bHYnTDWu6cwh9Ynz/YJJCd</latexit> ((A1A2)A3) <latexit sha1_base64="NmmJcp9OveOg5+3uYB5HWejcZSI=">AAAB+HicbVDLTgIxFL3jE/HBqEs3jcQENmQGTHQJunGJiTwSmEw6pUBDpzNpOyY44UvcuNAYt36KO//GArNQ8CT35uSce9PbE8ScKe0439bG5tb2zm5uL79/cHhUsI9P2ipKJKEtEvFIdgOsKGeCtjTTnHZjSXEYcNoJJrdzv/NIpWKReNDTmHohHgk2ZARrI/l2oVRq+C5q+NWyabWybxedirMAWiduRoqQoenbX/1BRJKQCk04VqrnOrH2Uiw1I5zO8v1E0RiTCR7RnqECh1R56eLwGbowygANI2lKaLRQf2+kOFRqGgZmMsR6rFa9ufif10v08NpLmYgTTQVZPjRMONIRmqeABkxSovnUEEwkM7ciMsYSE22yypsQ3NUvr5N2teLWKtX7y2L9JosjB2dwDiVw4QrqcAdNaAGBBJ7hFd6sJ+vFerc+lqMbVrZzCn9gff4A14SQnQ==</latexit> とすると 10 ⇥ 100 <latexit sha1_base64="oogigaoiv4AhIYZm3mefTUoi2U8=">AAAB83icbVDLSgNBEOz1GeMr6tHLYBA8hdko6DHoxWME84DsEmYns8mQ2QczvUJY8htePCji1Z/x5t84SfagiQUNRVU33V1BqqRBSr+dtfWNza3t0k55d2//4LBydNw2Saa5aPFEJbobMCOUjEULJSrRTbVgUaBEJxjfzfzOk9BGJvEjTlLhR2wYy1ByhlbyXOqhjIQhLqX9SpXW6BxklbgFqUKBZr/y5Q0SnkUiRq6YMT2XpujnTKPkSkzLXmZEyviYDUXP0pjZRX4+v3lKzq0yIGGibcVI5urviZxFxkyiwHZGDEdm2ZuJ/3m9DMMbP5dxmqGI+WJRmCmCCZkFQAZSC45qYgnjWtpbCR8xzTjamMo2BHf55VXSrtfcy1r94arauC3iKMEpnMEFuHANDbiHJrSAQwrP8ApvTua8OO/Ox6J1zSlmTuAPnM8fQ4WQhg==</latexit> A1 <latexit sha1_base64="1F4OlKPns/30nPpm+xW/QfYxQvs=">AAAB6nicbVBNS8NAEJ34WetX1aOXxSJ4KkkV9Fj14rGi/YA2lM120i7dbMLuRiihP8GLB0W8+ou8+W/ctjlo64OBx3szzMwLEsG1cd1vZ2V1bX1js7BV3N7Z3dsvHRw2dZwqhg0Wi1i1A6pRcIkNw43AdqKQRoHAVjC6nfqtJ1Sax/LRjBP0IzqQPOSMGis9XPe8XqnsVtwZyDLxclKGHPVe6avbj1kaoTRMUK07npsYP6PKcCZwUuymGhPKRnSAHUsljVD72ezUCTm1Sp+EsbIlDZmpvycyGmk9jgLbGVEz1IveVPzP66QmvPIzLpPUoGTzRWEqiInJ9G/S5wqZEWNLKFPc3krYkCrKjE2naEPwFl9eJs1qxTuvVO8vyrWbPI4CHMMJnIEHl1CDO6hDAxgM4Ble4c0Rzovz7nzMW1ecfOYI/sD5/AG5JY1t</latexit> : 100 ⇥ 5 <latexit sha1_base64="uN2BCbAug4movO8AvPwwpnOanXo=">AAAB8nicbVBNSwMxEJ2tX7V+VT16CRbBU9mtih6LXjxWsB/QLiWbZtvQ7GZJZoWy9Gd48aCIV3+NN/+NabsHbX0QeLw3k5l5QSKFQdf9dgpr6xubW8Xt0s7u3v5B+fCoZVSqGW8yJZXuBNRwKWLeRIGSdxLNaRRI3g7GdzO//cS1ESp+xEnC/YgOYxEKRtFKXc91eygibshVv1xxq+4cZJV4OalAjka//NUbKJZGPEYmqTH2swT9jGoUTPJpqZcanlA2pkPetTSmdoyfzVeekjOrDEiotH0xkrn6uyOjkTGTKLCVEcWRWfZm4n9eN8Xwxs9EnKTIY7YYFKaSoCKz+8lAaM5QTiyhTAu7K2EjqilDm1LJhuAtn7xKWrWqd1GtPVxW6rd5HEU4gVM4Bw+uoQ730IAmMFDwDK/w5qDz4rw7H4vSgpP3HMMfOJ8/1x+QUA==</latexit> A2 <latexit sha1_base64="fRO/sQlVWHh1j7Za7usQh7tlwZk=">AAAB6nicbVBNS8NAEJ34WetX1aOXxSJ4KkkV9Fj14rGi/YA2lM120y7dbMLuRCihP8GLB0W8+ou8+W/ctjlo64OBx3szzMwLEikMuu63s7K6tr6xWdgqbu/s7u2XDg6bJk414w0Wy1i3A2q4FIo3UKDk7URzGgWSt4LR7dRvPXFtRKwecZxwP6IDJULBKFrp4bpX7ZXKbsWdgSwTLydlyFHvlb66/ZilEVfIJDWm47kJ+hnVKJjkk2I3NTyhbEQHvGOpohE3fjY7dUJOrdInYaxtKSQz9fdERiNjxlFgOyOKQ7PoTcX/vE6K4ZWfCZWkyBWbLwpTSTAm079JX2jOUI4toUwLeythQ6opQ5tO0YbgLb68TJrVindeqd5flGs3eRwFOIYTOAMPLqEGd1CHBjAYwDO8wpsjnRfn3fmYt644+cwR/IHz+QO6qY1u</latexit> : 5 ⇥ 50 <latexit sha1_base64="u/jUN5Swp6OJHLBmJ1+sqtkqKTM=">AAAB8XicbVDLTgJBEOzFF+IL9ehlIjHxRHZRokeiF4+YyCPChswOszBhdnYz02tCCH/hxYPGePVvvPk3DrAHBSvppFLVne6uIJHCoOt+O7m19Y3Nrfx2YWd3b/+geHjUNHGqGW+wWMa6HVDDpVC8gQIlbyea0yiQvBWMbmd+64lrI2L1gOOE+xEdKBEKRtFKj9UuiogbUnV7xZJbducgq8TLSAky1HvFr24/ZmnEFTJJjel4boL+hGoUTPJpoZsanlA2ogPesVRRu8efzC+ekjOr9EkYa1sKyVz9PTGhkTHjKLCdEcWhWfZm4n9eJ8Xw2p8IlaTIFVssClNJMCaz90lfaM5Qji2hTAt7K2FDqilDG1LBhuAtv7xKmpWyd1Gu3F+WajdZHHk4gVM4Bw+uoAZ3UIcGMFDwDK/w5hjnxXl3PhatOSebOYY/cD5/AG8PkBo=</latexit> A3 <latexit sha1_base64="w07XpCbZAwClDXImoqTbR/jXysU=">AAAB6nicbVDLTgJBEOzFF+IL9ehlIjHxRHbBRI+oF48Y5ZHAhswOszBhdnYz02tCCJ/gxYPGePWLvPk3DrAHBSvppFLVne6uIJHCoOt+O7m19Y3Nrfx2YWd3b/+geHjUNHGqGW+wWMa6HVDDpVC8gQIlbyea0yiQvBWMbmd+64lrI2L1iOOE+xEdKBEKRtFKD9e9aq9YcsvuHGSVeBkpQYZ6r/jV7ccsjbhCJqkxHc9N0J9QjYJJPi10U8MTykZ0wDuWKhpx40/mp07JmVX6JIy1LYVkrv6emNDImHEU2M6I4tAsezPxP6+TYnjlT4RKUuSKLRaFqSQYk9nfpC80ZyjHllCmhb2VsCHVlKFNp2BD8JZfXiXNStmrliv3F6XaTRZHHk7gFM7Bg0uowR3UoQEMBvAMr/DmSOfFeXc+Fq05J5s5hj9wPn8AvC2Nbw==</latexit> : , , 10 ⇥ 100 ⇥ 5 <latexit sha1_base64="1picEZ/nH3a84GLsjzoDY8dBDUs=">AAAB/XicbZDJSgNBEIZr4hbjNi43L41B8BRmoqLHoBePEcwCyRB6Oj1Jk56F7hohhuCrePGgiFffw5tvYycZQRN/aPj4q4qq/v1ECo2O82XllpZXVtfy64WNza3tHXt3r67jVDFeY7GMVdOnmksR8RoKlLyZKE5DX/KGP7ie1Bv3XGkRR3c4TLgX0l4kAsEoGqtjH7hOG0XINXGdHzrv2EWn5ExFFsHNoAiZqh37s92NWRryCJmkWrdcJ0FvRBUKJvm40E41Tygb0B5vGYyoWeONptePybFxuiSIlXkRkqn7e2JEQ62HoW86Q4p9PV+bmP/VWikGl95IREmKPGKzRUEqCcZkEgXpCsUZyqEBypQwtxLWp4oyNIEVTAju/JcXoV4uuael8u1ZsXKVxZGHQziCE3DhAipwA1WoAYMHeIIXeLUerWfrzXqfteasbGYf/sj6+AZTtZPa</latexit> 100 ⇥ 5 ⇥ 50 <latexit sha1_base64="hbxPMXvdOO8j0tavunDeivqKP1g=">AAAB/nicbVDLSgMxFL3js9bXqLhyEyyCq5Kpii6LblxWsA9oh5JJM21oJjMkGaEMBX/FjQtF3Pod7vwb03YEbT0QcjjnXu69J0gE1wbjL2dpeWV1bb2wUdzc2t7Zdff2GzpOFWV1GotYtQKimeCS1Q03grUSxUgUCNYMhjcTv/nAlOaxvDejhPkR6UseckqMlbruoYcx6hgeMY0ufn7cdUu4jKdAi8TLSQly1LruZ6cX0zRi0lBBtG57ODF+RpThVLBxsZNqlhA6JH3WtlQSO8fPpuuP0YlVeiiMlX3SoKn6uyMjkdajKLCVETEDPe9NxP+8dmrCKz/jMkkNk3Q2KEwFMjGaZIF6XDFqxMgSQhW3uyI6IIpQYxMr2hC8+ZMXSaNS9s7KlbvzUvU6j6MAR3AMp+DBJVThFmpQBwoZPMELvDqPzrPz5rzPSpecvOcA/sD5+AayR5QI</latexit> 10 ⇥ 100 ⇥ 50 <latexit sha1_base64="ZCPVaAxAdPnYafwOZYf/9Ju+Hk0=">AAACAHicbZDLSgMxFIYzXmu9jbpw4SZYBFclUxVdFt24rGAv0A4lk2ba0ExmSM4IZejGV3HjQhG3PoY738a0HURbfwh8/OccTs4fJFIYIOTLWVpeWV1bL2wUN7e2d3bdvf2GiVPNeJ3FMtatgBouheJ1ECB5K9GcRoHkzWB4M6k3H7g2Ilb3MEq4H9G+EqFgFKzVdQ89gjsgIm6wR37wgnTdEimTqfAieDmUUK5a1/3s9GKWRlwBk9SYtkcS8DOqQTDJx8VOanhC2ZD2eduionaPn00PGOMT6/RwGGv7FOCp+3sio5ExoyiwnRGFgZmvTcz/au0Uwis/EypJgSs2WxSmEkOMJ2ngntCcgRxZoEwL+1fMBlRTBjazog3Bmz95ERqVsndWrtydl6rXeRwFdISO0Sny0CWqoltUQ3XE0Bg9oRf06jw6z86b8z5rXXLymQP0R87HN3r5lGg=</latexit> 10 ⇥ 5 ⇥ 50 <latexit sha1_base64="9Rjr0kckWHme1tSiWr+H1gtsZzg=">AAAB/HicbVDLSgNBEOz1GeNrNUcvg0HwFHajosegF48RzAOSJcxOJsmQ2QczvcKyxF/x4kERr36IN//GSbKCJhYMU1R1093lx1JodJwva2V1bX1js7BV3N7Z3du3Dw6bOkoU4w0WyUi1faq5FCFvoEDJ27HiNPAlb/njm6nfeuBKiyi8xzTmXkCHoRgIRtFIPbvkOl0UAdfk4ud3enbZqTgzkGXi5qQMOeo9+7Pbj1gS8BCZpFp3XCdGL6MKBZN8UuwmmseUjemQdwwNqZnjZbPlJ+TEKH0yiJR5IZKZ+rsjo4HWaeCbyoDiSC96U/E/r5Pg4MrLRBgnyEM2HzRIJMGITJMgfaE4Q5kaQpkSZlfCRlRRhiavognBXTx5mTSrFfesUr07L9eu8zgKcATHcAouXEINbqEODWCQwhO8wKv1aD1bb9b7vHTFyntK8AfWxzfoZpOk</latexit> A.rows ⇥ A.columns ⇥ B.columns <latexit sha1_base64="O5V6ASu3+uMMtDEM0iMa847uwMY=">AAACLHicbVBdSwJBFJ21L7OvrR57GZKgJ9m1oB5NX3o0SA1UZHYcdXB2Zpm5W8jiD+qlvxJED0n02u9oVqUP7cKFwzn3cu49QSS4Ac+bOJmV1bX1jexmbmt7Z3fP3T+oGxVrympUCaXvAmKY4JLVgINgd5FmJAwEawTDSqo37pk2XMlbGEWsHZK+5D1OCViq41ZaIYEBh+SqoNWDGeMW8JAZ/ENbjziUy0r5W+m4ea/gTQsvA38O8mhe1Y770uoqGodMAhXEmKbvRdBOiAZOBRvnWrFhEaFD0mdNCyWxvu1k+uwYn1imi3tK25aAp+zvjYSExozCwE6ml5pFLSX/05ox9C7bCZdRDEzSmVEvFhgUTpPDXa4ZBTGygFDN7a2YDogmFGy+ORuCv/jyMqgXC/5ZoXhzni+V53Fk0RE6RqfIRxeohK5RFdUQRY/oGb2hifPkvDrvzsdsNOPMdw7Rn3I+vwBEe6l1</latexit> 7500 <latexit sha1_base64="L2DgauvEnVHlq4VE5JGZaxQm9sA=">AAAB63icbVBNSwMxEJ2tX7V+VT16CRbBU9mtlXosevFYwX5Au5Rsmm1Dk+ySZIWy9C948aCIV/+QN/+N2XYP2vpg4PHeDDPzgpgzbVz32ylsbG5t7xR3S3v7B4dH5eOTjo4SRWibRDxSvQBrypmkbcMMp71YUSwCTrvB9C7zu09UaRbJRzOLqS/wWLKQEWwyqXHtusNyxa26C6B14uWkAjlaw/LXYBSRRFBpCMda9z03Nn6KlWGE03lpkGgaYzLFY9q3VGJBtZ8ubp2jC6uMUBgpW9Kghfp7IsVC65kIbKfAZqJXvUz8z+snJrzxUybjxFBJlovChCMToexxNGKKEsNnlmCimL0VkQlWmBgbT8mG4K2+vE46tap3Va091CvN2zyOIpzBOVyCBw1owj20oA0EJvAMr/DmCOfFeXc+lq0FJ585hT9wPn8A1teNcg==</latexit> 回 75000 <latexit sha1_base64="PyFLqLOiWbmQFW6/04vHYHL/BC8=">AAAB7HicbVBNTwIxEJ3FL8Qv1KOXRmLiiXQRg0eiF4+YuEACG9ItXWjodjdt14Rs+A1ePGiMV3+QN/+NBfag4EsmeXlvJjPzgkRwbTD+dgobm1vbO8Xd0t7+weFR+fikreNUUebRWMSqGxDNBJfMM9wI1k0UI1EgWCeY3M39zhNTmsfy0UwT5kdkJHnIKTFW8hrXGONBuYKreAG0TtycVCBHa1D+6g9jmkZMGiqI1j0XJ8bPiDKcCjYr9VPNEkInZMR6lkoSMe1ni2Nn6MIqQxTGypY0aKH+nshIpPU0CmxnRMxYr3pz8T+vl5rwxs+4TFLDJF0uClOBTIzmn6MhV4waMbWEUMXtrYiOiSLU2HxKNgR39eV10q5V3atq7aFead7mcRThDM7hElxoQBPuoQUeUODwDK/w5kjnxXl3PpatBSefOYU/cD5/AEVcjaw=</latexit> 回 10倍の差! 問題: スカラー乗算回数を最小化するよう積 を括弧付けせよ A1A2 · · · An <latexit sha1_base64="UyNC00PT78D/svO/N5YRdIsZfXQ=">AAAB+3icbZDLSgMxFIYzXmu91bp0EyyCqzJTBV22unFZwV6gHYZMJtOGZpIhOSOW0ldx40IRt76IO9/GtJ2Ftv4Q+PjPOZyTP0wFN+C6387a+sbm1nZhp7i7t39wWDoqt43KNGUtqoTS3ZAYJrhkLeAgWDfVjCShYJ1wdDurdx6ZNlzJBxinzE/IQPKYUwLWCkrlRuDhRlDDfRopMBatWXGr7lx4FbwcKihXMyh99SNFs4RJoIIY0/PcFPwJ0cCpYNNiPzMsJXREBqxnUZKEGX8yv32Kz6wT4Vhp+yTguft7YkISY8ZJaDsTAkOzXJuZ/9V6GcTX/oTLNAMm6WJRnAkMCs+CwBHXjIIYWyBUc3srpkOiCQUbV9GG4C1/eRXatap3Ua3dX1bqN3kcBXSCTtE58tAVqqM71EQtRNETekav6M2ZOi/Ou/OxaF1z8plj9EfO5w+uvJLt</latexit>
/25 14 シラミツブシに調べる方法 個の行列の列に対する異なる括弧付けの個数 n <latexit sha1_base64="2QmInd+nHO60uhS7AYCvgpiU4a8=">AAAB6HicbVBNS8NAEJ3Ur1q/qh69LBbBU0mqoMeiF48t2FpoQ9lsJ+3azSbsboQS+gu8eFDEqz/Jm//GbZuDtj4YeLw3w8y8IBFcG9f9dgpr6xubW8Xt0s7u3v5B+fCoreNUMWyxWMSqE1CNgktsGW4EdhKFNAoEPgTj25n/8IRK81jem0mCfkSHkoecUWOlpuyXK27VnYOsEi8nFcjR6Je/eoOYpRFKwwTVuuu5ifEzqgxnAqelXqoxoWxMh9i1VNIItZ/ND52SM6sMSBgrW9KQufp7IqOR1pMosJ0RNSO97M3E/7xuasJrP+MySQ1KtlgUpoKYmMy+JgOukBkxsYQyxe2thI2ooszYbEo2BG/55VXSrlW9i2qteVmp3+RxFOEETuEcPLiCOtxBA1rAAOEZXuHNeXRenHfnY9FacPKZY/gD5/MH2F+M9g==</latexit> P(n) <latexit sha1_base64="HchU+tX/rCiKb9jre2IN2GPF2gc=">AAAB63icbVBNSwMxEJ2tX7V+VT16CRahXspuK+ix6MVjBfsB7VKyabYNTbJLkhXK0r/gxYMiXv1D3vw3Zts9aOuDgcd7M8zMC2LOtHHdb6ewsbm1vVPcLe3tHxwelY9POjpKFKFtEvFI9QKsKWeStg0znPZiRbEIOO0G07vM7z5RpVkkH80spr7AY8lCRrDJpFZVXg7LFbfmLoDWiZeTCuRoDctfg1FEEkGlIRxr3ffc2PgpVoYRTuelQaJpjMkUj2nfUokF1X66uHWOLqwyQmGkbEmDFurviRQLrWcisJ0Cm4le9TLxP6+fmPDGT5mME0MlWS4KE45MhLLH0YgpSgyfWYKJYvZWRCZYYWJsPCUbgrf68jrp1Gteo1Z/uKo0b/M4inAG51AFD66hCffQgjYQmMAzvMKbI5wX5935WLYWnHzmFP7A+fwBPOGNtQ==</latexit>
: P(n) = ( 1 if n = 1 Pn 1 k=1 P(k)P(n k) otherwise <latexit sha1_base64="8dr+RPWc/nTfvki0ha267cc4nls=">AAACSnicbVDPb9MwGHVKYSMbUODIxaJiag+r4jJpu1Sa4MKxSHSb1HSV435prThOZH/ZqKLw73HhxI0/gssOQ4gLbhuk/eBJlp7e+75n+0W5khaD4IfXeNB8+Ghr+7G/s/vk6bPW8xcnNiuMgJHIVGbOIm5BSQ0jlKjgLDfA00jBaZS8X/mnF2CszPQnXOYwSflcy1gKjk6atviwo7t0QMMI5lKXwkXZymf+XojwGUsZV1/0gPlh6Ie2SKdlMmDVean3WTXsJF23vJ90/w1nuABzKS1Ufgh6VodNW+2gF6xB7xNWkzapMZy2voezTBQpaBSKWztmQY6TkhuUQq2yCws5Fwmfw9hRzVOwk3JdRUXfOGVG48y4o5Gu1ZsbJU+tXaaRm0w5LuxdbyX+zxsXGB9NSqnzAkGLzUVxoShmdNUrnUkDAtXSES6MdG+lYsENF+ja910J7O6X75OTfo+97fU/HrSP39V1bJNX5DXpEEYOyTH5QIZkRAT5Sn6Sa/LL++Zdeb+9P5vRhlfvvCS30Gj+BS/2sWQ=</latexit> どこで分割するか それぞれの部分積の括弧付けが とりうるパターンの組合せ ⌦ ⇣ 4n/n3/2 ⌘ <latexit sha1_base64="MrcjM09jcWAjadDUiuaBjuQIuz4=">AAACC3icbVA9SwNBEN3zM8avU0ubxSDEJrlLBC1FGzsVjAr5Ym8zlyzZ2zt254RwpLfxr9hYKGLrH7Dz37iJKTTxwcDjvZndmRckUhj0vC9nbn5hcWk5t5JfXVvf2HS3tm9MnGoONR7LWN8FzIAUCmooUMJdooFFgYTboH828m/vQRsRq2scJNCMWFeJUHCGVmq7e42LCLqsISHEYv6wpWiZqlZWLVeG+YYW3R4etN2CV/LGoLPEn5ACmeCy7X42OjFPI1DIJTOm7nsJNjOmUXAJ9t3UQMJ4n3WhbqliEZhmNr5lSPet0qFhrG0ppGP190TGImMGUWA7I4Y9M+2NxP+8eorhcTMTKkkRFP/5KEwlxZiOgqEdoYGjHFjCuBZ2V8p7TDOONr68DcGfPnmW3FRKfrVUuTosnJxO4siRXbJHisQnR+SEnJNLUiOcPJAn8kJenUfn2Xlz3n9a55zJzA75A+fjG8HMmPU=</latexit> この数列は の速さで増加 シラミツブシに調べる戦略は連鎖行列の最適括弧付けには適さない. 部分問題の構造を利用する.
/25 15 アルゴリズムの設計指針 最適な括弧付けを仮定 AiAi+1 · · · Aj <latexit
sha1_base64="d4BgiSep36myJr90VrduqqMWnMo=">AAACAHicbVDLSgMxFM3UV62vURcu3ASLIAhlpgq6bHXjsoJ9QDsMmUymjc0kQ5IRyjAbf8WNC0Xc+hnu/BvTdhZaPXDh5Jx7yb0nSBhV2nG+rNLS8srqWnm9srG5tb1j7+51lEglJm0smJC9ACnCKCdtTTUjvUQSFAeMdIPx9dTvPhCpqOB3epIQL0ZDTiOKkTaSbx80fQqbfkZP3RzCAQ6FVuZ979tVp+bMAP8StyBVUKDl25+DUOA0JlxjhpTqu06ivQxJTTEjeWWQKpIgPEZD0jeUo5goL5sdkMNjo4QwEtIU13Cm/pzIUKzUJA5MZ4z0SC16U/E/r5/q6NLLKE9STTiefxSlDGoBp2nAkEqCNZsYgrCkZleIR0girE1mFROCu3jyX9Kp19yzWv32vNq4KuIog0NwBE6ACy5AA9yAFmgDDHLwBF7Aq/VoPVtv1vu8tWQVM/vgF6yPb2K6lP4=</latexit> を と分割 ((Ai · · · Ak)(Ak+1 · · · Aj)) <latexit sha1_base64="k59hsmDFzcxNMr0EB3JZmtHTbi8=">AAACEHicbZDLSsNAFIYn9VbrLerSzWARW4SSVEGXrW5cVrAXaEOYTKbtmMkkzEyEEvoIbnwVNy4UcevSnW/jtA2orT8M/HznHM6c34sZlcqyvozc0vLK6lp+vbCxubW9Y+7utWSUCEyaOGKR6HhIEkY5aSqqGOnEgqDQY6TtBVeTevueCEkjfqtGMXFCNOC0TzFSGrnmcalUdynsYT9SEtbdoAw1SIMTe/wD78pl1yxaFWsquGjszBRBpoZrfvb8CCch4QozJGXXtmLlpEgoihkZF3qJJDHCARqQrrYchUQ66fSgMTzSxIf9SOjHFZzS3xMpCqUchZ7uDJEayvnaBP5X6yaqf+GklMeJIhzPFvUTBlUEJ+lAnwqCFRtpg7Cg+q8QD5FAWOkMCzoEe/7kRdOqVuzTSvXmrFi7zOLIgwNwCErABuegBq5BAzQBBg/gCbyAV+PReDbejPdZa87IZvbBHxkf30HTmjc=</latexit> どちらも最適な括弧付けになっていなければならない 必要なスカラー積の回数 m[i, j] = m[i, k] + m[k + 1, j] + pi 1pkpj <latexit sha1_base64="yJO/ZMC8To04j95kfl2Mt+uSk+o=">AAACFnicbZDLSsNAFIYnXmu9RV26GSyCUFuSKuhGKLpxWcFeIA1hMp2200ySYWYilNCncOOruHGhiFtx59s4TbPQ1h8GPv5zDmfO73NGpbKsb2NpeWV1bb2wUdzc2t7ZNff2WzJOBCZNHLNYdHwkCaMRaSqqGOlwQVDoM9L2g5tpvf1AhKRxdK/GnLghGkS0TzFS2vLMSujQUzhy4RXMKHBhWVNQtjO3DLmX0oo94V7AvZFnlqyqlQkugp1DCeRqeOZXtxfjJCSRwgxJ6dgWV26KhKKYkUmxm0jCEQ7QgDgaIxQS6abZWRN4rJ0e7MdCv0jBzP09kaJQynHo684QqaGcr03N/2pOovqXbkojnigS4dmifsKgiuE0I9ijgmDFxhoQFlT/FeIhEggrnWRRh2DPn7wIrVrVPqvW7s5L9es8jgI4BEfgBNjgAtTBLWiAJsDgETyDV/BmPBkvxrvxMWtdMvKZA/BHxucPmu6b8A==</latexit> pk 1 ⇥ pk <latexit sha1_base64="kSUt0xeUN/eWfaoVaQLGX5HFi5U=">AAAB/HicbVDLSsNAFJ3UV62vaJduBovgxpJUQZdFNy4r2Ae0IUymk3bo5MHMjRBC/BU3LhRx64e482+ctFlo64GBc8+5l3vneLHgCizr26isrW9sblW3azu7e/sH5uFRT0WJpKxLIxHJgUcUEzxkXeAg2CCWjASeYH1vdlv4/UcmFY/CB0hj5gRkEnKfUwJacs167GazczsfAQ+YwkWVu2bDalpz4FVil6SBSnRc82s0jmgSsBCoIEoNbSsGJyMSOBUsr40SxWJCZ2TChpqGRK9ysvnxOT7Vyhj7kdQvBDxXf09kJFAqDTzdGRCYqmWvEP/zhgn4107GwzgBFtLFIj8RGCJcJIHHXDIKItWEUMn1rZhOiSQUdF41HYK9/OVV0ms17Ytm6/6y0b4p46iiY3SCzpCNrlAb3aEO6iKKUvSMXtGb8WS8GO/Gx6K1YpQzdfQHxucPsj+UzQ==</latexit> Ak <latexit sha1_base64="IYPFBkzwjFJTlXwYkgB5XiRCgJE=">AAAB6nicbVBNS8NAEJ34WetX1aOXxSJ4KkkV9Fj14rGi/YA2lM120y7dbMLuRCihP8GLB0W8+ou8+W/ctjlo64OBx3szzMwLEikMuu63s7K6tr6xWdgqbu/s7u2XDg6bJk414w0Wy1i3A2q4FIo3UKDk7URzGgWSt4LR7dRvPXFtRKwecZxwP6IDJULBKFrp4bo36pXKbsWdgSwTLydlyFHvlb66/ZilEVfIJDWm47kJ+hnVKJjkk2I3NTyhbEQHvGOpohE3fjY7dUJOrdInYaxtKSQz9fdERiNjxlFgOyOKQ7PoTcX/vE6K4ZWfCZWkyBWbLwpTSTAm079JX2jOUI4toUwLeythQ6opQ5tO0YbgLb68TJrVindeqd5flGs3eRwFOIYTOAMPLqEGd1CHBjAYwDO8wpsjnRfn3fmYt644+cwR/IHz+QMRHI2n</latexit> として のサイズを 部分問題のコストの和 に新規で必要なスカラー積の回数 ((Ai · · · Ak)(Ak+1 · · · Aj)) <latexit sha1_base64="k59hsmDFzcxNMr0EB3JZmtHTbi8=">AAACEHicbZDLSsNAFIYn9VbrLerSzWARW4SSVEGXrW5cVrAXaEOYTKbtmMkkzEyEEvoIbnwVNy4UcevSnW/jtA2orT8M/HznHM6c34sZlcqyvozc0vLK6lp+vbCxubW9Y+7utWSUCEyaOGKR6HhIEkY5aSqqGOnEgqDQY6TtBVeTevueCEkjfqtGMXFCNOC0TzFSGrnmcalUdynsYT9SEtbdoAw1SIMTe/wD78pl1yxaFWsquGjszBRBpoZrfvb8CCch4QozJGXXtmLlpEgoihkZF3qJJDHCARqQrrYchUQ66fSgMTzSxIf9SOjHFZzS3xMpCqUchZ7uDJEayvnaBP5X6yaqf+GklMeJIhzPFvUTBlUEJ+lAnwqCFRtpg7Cg+q8QD5FAWOkMCzoEe/7kRdOqVuzTSvXmrFi7zOLIgwNwCErABuegBq5BAzQBBg/gCbyAV+PReDbejPdZa87IZvbBHxkf30HTmjc=</latexit> m[i, j] = ( 0 i = j minik<j {m[i, k] + m[k + 1, j] + pi 1pkpj } i < j <latexit sha1_base64="RGC7YO2yAVsDzNpaX+1PX9wH2uw=">AAACZnicbVFNb9QwFHTCVxugbFshDlyeWFEhLaySFgkOVKrgwrFIbFspjiLH6+x6YzvGdpBWUf4kN85c+Bk4aQ7Q8iRLo3lv5tnjQgtuXRz/DMI7d+/df7CzGz189HjvyWT/4MLWjaFsQWtRm6uCWCa4YgvHnWBX2jAiC8Eui+pT37/8zozltfrqtpplkqwULzklzlP5pJMpfw2bDE4BF2zFVUu9m+2i+Aj46SbCOMKSq7zlgAX7BhV8gE3X49LhNhrUVQYzkGk1SwanGWg//ibpdF7p3FsYvlo73EVHvBdHmKnluCWfTON5PBTcBskIpmis83zyAy9r2kimHBXE2jSJtctaYhyngnURbizThFZkxVIPFZHMZu0QUwcvPbOEsjb+KAcD+7eiJdLarSz8pCRubW/2evJ/vbRx5fus5Uo3jil6vahsBLga+sxhyQ2jTmw9INRwf1ega2IIdf5nIh9CcvPJt8HF8Tw5mR9/eTs9+zjGsYOeoxfoFUrQO3SGPqNztEAU/Qp2g4PgMPgd7oVPw2fXo2Ewag7RPxXCH7iFsvI=</latexit> 再帰的定義
/25 16 履歴管理を用いるトップダウン方式 初期化 既知の値であれば結果を再利用 O(n 3) <latexit sha1_base64="s1YvWRMWwySboD4m9GsP4RT+J10=">AAAB7XicbVBNSwMxEJ31s9avqkcvwSLUS9ltBT0WvXizgv2Adi3ZNNvGZpMlyQpl6X/w4kERr/4fb/4b03YP2vpg4PHeDDPzgpgzbVz321lZXVvf2Mxt5bd3dvf2CweHTS0TRWiDSC5VO8CaciZowzDDaTtWFEcBp61gdD31W09UaSbFvRnH1I/wQLCQEWys1LwtiYfqWa9QdMvuDGiZeBkpQoZ6r/DV7UuSRFQYwrHWHc+NjZ9iZRjhdJLvJprGmIzwgHYsFTii2k9n107QqVX6KJTKljBopv6eSHGk9TgKbGeEzVAvelPxP6+TmPDST5mIE0MFmS8KE46MRNPXUZ8pSgwfW4KJYvZWRIZYYWJsQHkbgrf48jJpVspetVy5Oy/WrrI4cnAMJ1ACDy6gBjdQhwYQeIRneIU3RzovzrvzMW9dcbKZI/gD5/MHY7yOWQ==</latexit> 計算量:
m[i, j] = ( 0 minik<j {m[i, k] + m[k + 1, j] + pi 1pkpj <latexit sha1_base64="RGC7YO2yAVsDzNpaX+1PX9wH2uw=">AAACZnicbVFNb9QwFHTCVxugbFshDlyeWFEhLaySFgkOVKrgwrFIbFspjiLH6+x6YzvGdpBWUf4kN85c+Bk4aQ7Q8iRLo3lv5tnjQgtuXRz/DMI7d+/df7CzGz189HjvyWT/4MLWjaFsQWtRm6uCWCa4YgvHnWBX2jAiC8Eui+pT37/8zozltfrqtpplkqwULzklzlP5pJMpfw2bDE4BF2zFVUu9m+2i+Aj46SbCOMKSq7zlgAX7BhV8gE3X49LhNhrUVQYzkGk1SwanGWg//ibpdF7p3FsYvlo73EVHvBdHmKnluCWfTON5PBTcBskIpmis83zyAy9r2kimHBXE2jSJtctaYhyngnURbizThFZkxVIPFZHMZu0QUwcvPbOEsjb+KAcD+7eiJdLarSz8pCRubW/2evJ/vbRx5fus5Uo3jil6vahsBLga+sxhyQ2jTmw9INRwf1ega2IIdf5nIh9CcvPJt8HF8Tw5mR9/eTs9+zjGsYOeoxfoFUrQO3SGPqNztEAU/Qp2g4PgMPgd7oVPw2fXo2Ewag7RPxXCH7iFsvI=</latexit> m[i, j] = ( 0 i = j minik<j {m[i, k] + m[k + 1, j] + pi 1pkpj } i < j <latexit sha1_base64="RGC7YO2yAVsDzNpaX+1PX9wH2uw=">AAACZnicbVFNb9QwFHTCVxugbFshDlyeWFEhLaySFgkOVKrgwrFIbFspjiLH6+x6YzvGdpBWUf4kN85c+Bk4aQ7Q8iRLo3lv5tnjQgtuXRz/DMI7d+/df7CzGz189HjvyWT/4MLWjaFsQWtRm6uCWCa4YgvHnWBX2jAiC8Eui+pT37/8zozltfrqtpplkqwULzklzlP5pJMpfw2bDE4BF2zFVUu9m+2i+Aj46SbCOMKSq7zlgAX7BhV8gE3X49LhNhrUVQYzkGk1SwanGWg//ibpdF7p3FsYvlo73EVHvBdHmKnluCWfTON5PBTcBskIpmis83zyAy9r2kimHBXE2jSJtctaYhyngnURbizThFZkxVIPFZHMZu0QUwcvPbOEsjb+KAcD+7eiJdLarSz8pCRubW/2evJ/vbRx5fus5Uo3jil6vahsBLga+sxhyQ2jTmw9INRwf1ega2IIdf5nIh9CcvPJt8HF8Tw5mR9/eTs9+zjGsYOeoxfoFUrQO3SGPqNztEAU/Qp2g4PgMPgd7oVPw2fXo2Ewag7RPxXCH7iFsvI=</latexit>
/25 17 ボトムアップ方式 l <latexit sha1_base64="0C8sfUJYbrjC43r1LRBZ8OgM3fg=">AAAB6HicbVBNS8NAEJ3Ur1q/qh69LBbBU0mqoMeiF48t2FpoQ9lsJ+3azSbsboQS+gu8eFDEqz/Jm//GbZuDtj4YeLw3w8y8IBFcG9f9dgpr6xubW8Xt0s7u3v5B+fCoreNUMWyxWMSqE1CNgktsGW4EdhKFNAoEPgTj25n/8IRK81jem0mCfkSHkoecUWOlpuiXK27VnYOsEi8nFcjR6Je/eoOYpRFKwwTVuuu5ifEzqgxnAqelXqoxoWxMh9i1VNIItZ/ND52SM6sMSBgrW9KQufp7IqOR1pMosJ0RNSO97M3E/7xuasJrP+MySQ1KtlgUpoKYmMy+JgOukBkxsYQyxe2thI2ooszYbEo2BG/55VXSrlW9i2qteVmp3+RxFOEETuEcPLiCOtxBA1rAAOEZXuHNeXRenHfnY9FacPKZY/gD5/MH1VeM9A==</latexit> i <latexit sha1_base64="hA2BMjcr0btVk5qY1/HOr4xO94Q=">AAAB6HicbVBNS8NAEJ3Ur1q/qh69LBbBU0mqoMeiF48t2FpoQ9lsJ+3azSbsboQS+gu8eFDEqz/Jm//GbZuDtj4YeLw3w8y8IBFcG9f9dgpr6xubW8Xt0s7u3v5B+fCoreNUMWyxWMSqE1CNgktsGW4EdhKFNAoEPgTj25n/8IRK81jem0mCfkSHkoecUWOlJu+XK27VnYOsEi8nFcjR6Je/eoOYpRFKwwTVuuu5ifEzqgxnAqelXqoxoWxMh9i1VNIItZ/ND52SM6sMSBgrW9KQufp7IqOR1pMosJ0RNSO97M3E/7xuasJrP+MySQ1KtlgUpoKYmMy+JgOukBkxsYQyxe2thI2ooszYbEo2BG/55VXSrlW9i2qteVmp3+RxFOEETuEcPLiCOtxBA1rAAOEZXuHNeXRenHfnY9FacPKZY/gD5/MH0MuM8Q==</latexit> j
<latexit sha1_base64="sezUAcifLCsPU4ANWRbU4nmBeg4=">AAAB6HicbVDLTgJBEOzFF+IL9ehlIjHxRHbRRI9ELx4hkUcCGzI79MLA7OxmZtaEEL7AiweN8eonefNvHGAPClbSSaWqO91dQSK4Nq777eQ2Nre2d/K7hb39g8Oj4vFJU8epYthgsYhVO6AaBZfYMNwIbCcKaRQIbAXj+7nfekKleSwfzSRBP6IDyUPOqLFSfdQrltyyuwBZJ15GSpCh1it+dfsxSyOUhgmqdcdzE+NPqTKcCZwVuqnGhLIxHWDHUkkj1P50ceiMXFilT8JY2ZKGLNTfE1MaaT2JAtsZUTPUq95c/M/rpCa89adcJqlByZaLwlQQE5P516TPFTIjJpZQpri9lbAhVZQZm03BhuCtvrxOmpWyd1Wu1K9L1bssjjycwTlcggc3UIUHqEEDGCA8wyu8OSPnxXl3PpatOSebOYU/cD5/ANJPjPI=</latexit> k <latexit sha1_base64="S3l8nnBLDerjgmOsR9KRP3N3+lk=">AAAB6HicbVBNS8NAEJ3Ur1q/qh69LBbBU0mqoMeiF48t2FpoQ9lsJ+3azSbsboQS+gu8eFDEqz/Jm//GbZuDtj4YeLw3w8y8IBFcG9f9dgpr6xubW8Xt0s7u3v5B+fCoreNUMWyxWMSqE1CNgktsGW4EdhKFNAoEPgTj25n/8IRK81jem0mCfkSHkoecUWOl5rhfrrhVdw6ySrycVCBHo1/+6g1ilkYoDRNU667nJsbPqDKcCZyWeqnGhLIxHWLXUkkj1H42P3RKzqwyIGGsbElD5urviYxGWk+iwHZG1Iz0sjcT//O6qQmv/YzLJDUo2WJRmApiYjL7mgy4QmbExBLKFLe3EjaiijJjsynZELzll1dJu1b1Lqq15mWlfpPHUYQTOIVz8OAK6nAHDWgBA4RneIU359F5cd6dj0VrwclnjuEPnM8f09OM8w==</latexit> A1A2 · · · An <latexit sha1_base64="UyNC00PT78D/svO/N5YRdIsZfXQ=">AAAB+3icbZDLSgMxFIYzXmu91bp0EyyCqzJTBV22unFZwV6gHYZMJtOGZpIhOSOW0ldx40IRt76IO9/GtJ2Ftv4Q+PjPOZyTP0wFN+C6387a+sbm1nZhp7i7t39wWDoqt43KNGUtqoTS3ZAYJrhkLeAgWDfVjCShYJ1wdDurdx6ZNlzJBxinzE/IQPKYUwLWCkrlRuDhRlDDfRopMBatWXGr7lx4FbwcKihXMyh99SNFs4RJoIIY0/PcFPwJ0cCpYNNiPzMsJXREBqxnUZKEGX8yv32Kz6wT4Vhp+yTguft7YkISY8ZJaDsTAkOzXJuZ/9V6GcTX/oTLNAMm6WJRnAkMCs+CwBHXjIIYWyBUc3srpkOiCQUbV9GG4C1/eRXatap3Ua3dX1bqN3kcBXSCTtE58tAVqqM71EQtRNETekav6M2ZOi/Ou/OxaF1z8plj9EfO5w+uvJLt</latexit> 小さい問題から順に解く m[i, j] = ( 0 i = j minik<j {m[i, k] + m[k + 1, j] + pi 1pkpj } i < j <latexit sha1_base64="RGC7YO2yAVsDzNpaX+1PX9wH2uw=">AAACZnicbVFNb9QwFHTCVxugbFshDlyeWFEhLaySFgkOVKrgwrFIbFspjiLH6+x6YzvGdpBWUf4kN85c+Bk4aQ7Q8iRLo3lv5tnjQgtuXRz/DMI7d+/df7CzGz189HjvyWT/4MLWjaFsQWtRm6uCWCa4YgvHnWBX2jAiC8Eui+pT37/8zozltfrqtpplkqwULzklzlP5pJMpfw2bDE4BF2zFVUu9m+2i+Aj46SbCOMKSq7zlgAX7BhV8gE3X49LhNhrUVQYzkGk1SwanGWg//ibpdF7p3FsYvlo73EVHvBdHmKnluCWfTON5PBTcBskIpmis83zyAy9r2kimHBXE2jSJtctaYhyngnURbizThFZkxVIPFZHMZu0QUwcvPbOEsjb+KAcD+7eiJdLarSz8pCRubW/2evJ/vbRx5fus5Uo3jil6vahsBLga+sxhyQ2jTmw9INRwf1ega2IIdf5nIh9CcvPJt8HF8Tw5mR9/eTs9+zjGsYOeoxfoFUrQO3SGPqNztEAU/Qp2g4PgMPgd7oVPw2fXo2Ewag7RPxXCH7iFsvI=</latexit> 括弧付けの位置 計算量: ⇥(n3) <latexit sha1_base64="G8WRpL5exN/uz8BAetuwevHrbn8=">AAAB8nicbVBNSwMxEM3Wr1q/qh69BItQL2W3FfRY9OKxQr+gXUs2zbah2WRJZoWy9Gd48aCIV3+NN/+NabsHbX0w8Hhvhpl5QSy4Adf9dnIbm1vbO/ndwt7+weFR8fikbVSiKWtRJZTuBsQwwSVrAQfBurFmJAoE6wSTu7nfeWLacCWbMI2ZH5GR5CGnBKzU6zfHDEhZPtYuB8WSW3EXwOvEy0gJZWgMil/9oaJJxCRQQYzpeW4Mfko0cCrYrNBPDIsJnZAR61kqScSMny5OnuELqwxxqLQtCXih/p5ISWTMNApsZ0RgbFa9ufif10sgvPFTLuMEmKTLRWEiMCg8/x8PuWYUxNQSQjW3t2I6JppQsCkVbAje6svrpF2teLVK9eGqVL/N4sijM3SOyshD16iO7lEDtRBFCj2jV/TmgPPivDsfy9ack82coj9wPn8AON+Qjg==</latexit>
/25 18 行列 次元 A1 <latexit sha1_base64="1F4OlKPns/30nPpm+xW/QfYxQvs=">AAAB6nicbVBNS8NAEJ34WetX1aOXxSJ4KkkV9Fj14rGi/YA2lM120i7dbMLuRiihP8GLB0W8+ou8+W/ctjlo64OBx3szzMwLEsG1cd1vZ2V1bX1js7BV3N7Z3dsvHRw2dZwqhg0Wi1i1A6pRcIkNw43AdqKQRoHAVjC6nfqtJ1Sax/LRjBP0IzqQPOSMGis9XPe8XqnsVtwZyDLxclKGHPVe6avbj1kaoTRMUK07npsYP6PKcCZwUuymGhPKRnSAHUsljVD72ezUCTm1Sp+EsbIlDZmpvycyGmk9jgLbGVEz1IveVPzP66QmvPIzLpPUoGTzRWEqiInJ9G/S5wqZEWNLKFPc3krYkCrKjE2naEPwFl9eJs1qxTuvVO8vyrWbPI4CHMMJnIEHl1CDO6hDAxgM4Ble4c0Rzovz7nzMW1ecfOYI/sD5/AG5JY1t</latexit> A2 <latexit sha1_base64="fRO/sQlVWHh1j7Za7usQh7tlwZk=">AAAB6nicbVBNS8NAEJ34WetX1aOXxSJ4KkkV9Fj14rGi/YA2lM120y7dbMLuRCihP8GLB0W8+ou8+W/ctjlo64OBx3szzMwLEikMuu63s7K6tr6xWdgqbu/s7u2XDg6bJk414w0Wy1i3A2q4FIo3UKDk7URzGgWSt4LR7dRvPXFtRKwecZxwP6IDJULBKFrp4bpX7ZXKbsWdgSwTLydlyFHvlb66/ZilEVfIJDWm47kJ+hnVKJjkk2I3NTyhbEQHvGOpohE3fjY7dUJOrdInYaxtKSQz9fdERiNjxlFgOyOKQ7PoTcX/vE6K4ZWfCZWkyBWbLwpTSTAm079JX2jOUI4toUwLeythQ6opQ5tO0YbgLb68TJrVindeqd5flGs3eRwFOIYTOAMPLqEGd1CHBjAYwDO8wpsjnRfn3fmYt644+cwR/IHz+QO6qY1u</latexit>
A3 <latexit sha1_base64="w07XpCbZAwClDXImoqTbR/jXysU=">AAAB6nicbVDLTgJBEOzFF+IL9ehlIjHxRHbBRI+oF48Y5ZHAhswOszBhdnYz02tCCJ/gxYPGePWLvPk3DrAHBSvppFLVne6uIJHCoOt+O7m19Y3Nrfx2YWd3b/+geHjUNHGqGW+wWMa6HVDDpVC8gQIlbyea0yiQvBWMbmd+64lrI2L1iOOE+xEdKBEKRtFKD9e9aq9YcsvuHGSVeBkpQYZ6r/jV7ccsjbhCJqkxHc9N0J9QjYJJPi10U8MTykZ0wDuWKhpx40/mp07JmVX6JIy1LYVkrv6emNDImHEU2M6I4tAsezPxP6+TYnjlT4RKUuSKLRaFqSQYk9nfpC80ZyjHllCmhb2VsCHVlKFNp2BD8JZfXiXNStmrliv3F6XaTRZHHk7gFM7Bg0uowR3UoQEMBvAMr/DmSOfFeXc+Fq05J5s5hj9wPn8AvC2Nbw==</latexit> A4 <latexit sha1_base64="6DMGRA1A+D8Bnse3NNvBuLvna/c=">AAAB6nicbVDLTgJBEOzFF+IL9ehlIjHxRHaRRI+oF48Y5ZHAhswOvTBhdnYzM2tCCJ/gxYPGePWLvPk3DrAHBSvppFLVne6uIBFcG9f9dnJr6xubW/ntws7u3v5B8fCoqeNUMWywWMSqHVCNgktsGG4EthOFNAoEtoLR7cxvPaHSPJaPZpygH9GB5CFn1Fjp4bpX7RVLbtmdg6wSLyMlyFDvFb+6/ZilEUrDBNW647mJ8SdUGc4ETgvdVGNC2YgOsGOppBFqfzI/dUrOrNInYaxsSUPm6u+JCY20HkeB7YyoGeplbyb+53VSE175Ey6T1KBki0VhKoiJyexv0ucKmRFjSyhT3N5K2JAqyoxNp2BD8JZfXiXNStm7KFfuq6XaTRZHHk7gFM7Bg0uowR3UoQEMBvAMr/DmCOfFeXc+Fq05J5s5hj9wPn8AvbGNcA==</latexit> A5 <latexit sha1_base64="TPMsjSTTafOtR66j4AU6U989MnY=">AAAB6nicbVDLTgJBEOzFF+IL9ehlIjHxRHZRo0fUi0eM8khgQ2aHBibMzm5mZk3Ihk/w4kFjvPpF3vwbB9iDgpV0UqnqTndXEAuujet+O7mV1bX1jfxmYWt7Z3evuH/Q0FGiGNZZJCLVCqhGwSXWDTcCW7FCGgYCm8Hoduo3n1BpHslHM47RD+lA8j5n1Fjp4bp70S2W3LI7A1kmXkZKkKHWLX51ehFLQpSGCap123Nj46dUGc4ETgqdRGNM2YgOsG2ppCFqP52dOiEnVumRfqRsSUNm6u+JlIZaj8PAdobUDPWiNxX/89qJ6V/5KZdxYlCy+aJ+IoiJyPRv0uMKmRFjSyhT3N5K2JAqyoxNp2BD8BZfXiaNStk7K1fuz0vVmyyOPBzBMZyCB5dQhTuoQR0YDOAZXuHNEc6L8+58zFtzTjZzCH/gfP4AvzWNcQ==</latexit> A6 <latexit sha1_base64="OYaxnqCZ0pQVt+U44TcWNsQ/bcQ=">AAAB6nicbVDLTgJBEOzFF+IL9ehlIjHxRHbRqEfUi0eM8khgQ2aHBibMzm5mZk3Ihk/w4kFjvPpF3vwbB9iDgpV0UqnqTndXEAuujet+O7mV1bX1jfxmYWt7Z3evuH/Q0FGiGNZZJCLVCqhGwSXWDTcCW7FCGgYCm8Hoduo3n1BpHslHM47RD+lA8j5n1Fjp4bp70S2W3LI7A1kmXkZKkKHWLX51ehFLQpSGCap123Nj46dUGc4ETgqdRGNM2YgOsG2ppCFqP52dOiEnVumRfqRsSUNm6u+JlIZaj8PAdobUDPWiNxX/89qJ6V/5KZdxYlCy+aJ+IoiJyPRv0uMKmRFjSyhT3N5K2JAqyoxNp2BD8BZfXiaNStk7K1fuz0vVmyyOPBzBMZyCB5dQhTuoQR0YDOAZXuHNEc6L8+58zFtzTjZzCH/gfP4AwLmNcg==</latexit> 30 ⇥ 35 <latexit sha1_base64="ZSMGmUxUiK/jEkvLCh5vXJiRfJE=">AAAB8nicbVBNS8NAEJ3Ur1q/qh69LBbBU0laRY9FLx4r2FpIQ9lsN+3SzSbsToRS+jO8eFDEq7/Gm//GbZuDtj4YeLw3w8y8MJXCoOt+O4W19Y3NreJ2aWd3b/+gfHjUNkmmGW+xRCa6E1LDpVC8hQIl76Sa0ziU/DEc3c78xyeujUjUA45THsR0oEQkGEUr+XW3iyLmhtQve+WKW3XnIKvEy0kFcjR75a9uP2FZzBUySY3xPTfFYEI1Cib5tNTNDE8pG9EB9y1V1O4JJvOTp+TMKn0SJdqWQjJXf09MaGzMOA5tZ0xxaJa9mfif52cYXQcTodIMuWKLRVEmCSZk9j/pC80ZyrEllGlhbyVsSDVlaFMq2RC85ZdXSbtW9erV2v1FpXGTx1GEEziFc/DgChpwB01oAYMEnuEV3hx0Xpx352PRWnDymWP4A+fzB+AYkFU=</latexit> 35 ⇥ 15 <latexit sha1_base64="8qzJmU236MTNtUaO+kTbjBm+C0M=">AAAB8nicbVBNSwMxEM3Wr1q/qh69BIvgqey2Fj0WvXisYD9gu5Rsmm1Ds8mSzApl6c/w4kERr/4ab/4b03YP2vpg4PHeDDPzwkRwA6777RQ2Nre2d4q7pb39g8Oj8vFJx6hUU9amSijdC4lhgkvWBg6C9RLNSBwK1g0nd3O/+8S04Uo+wjRhQUxGkkecErCSX2/0gcfMYK8xKFfcqrsAXideTiooR2tQ/uoPFU1jJoEKYozvuQkEGdHAqWCzUj81LCF0QkbMt1QSuyfIFifP8IVVhjhS2pYEvFB/T2QkNmYah7YzJjA2q95c/M/zU4hugozLJAUm6XJRlAoMCs//x0OuGQUxtYRQze2tmI6JJhRsSiUbgrf68jrp1KpevVp7uKo0b/M4iugMnaNL5KFr1ET3qIXaiCKFntErenPAeXHenY9la8HJZ07RHzifP+TPkFg=</latexit> 15 ⇥ 5 <latexit sha1_base64="om7IZStXiaYRLkM4SOKkNUrmEUA=">AAAB8XicbVDLTgJBEOzFF+IL9ehlIjHxRHZRokeiF4+YyCPChswOszBhdnYz02tCCH/hxYPGePVvvPk3DrAHBSvppFLVne6uIJHCoOt+O7m19Y3Nrfx2YWd3b/+geHjUNHGqGW+wWMa6HVDDpVC8gQIlbyea0yiQvBWMbmd+64lrI2L1gOOE+xEdKBEKRtFKj161iyLihlR7xZJbducgq8TLSAky1HvFr24/ZmnEFTJJjel4boL+hGoUTPJpoZsanlA2ogPesVRRu8afzC+ekjOr9EkYa1sKyVz9PTGhkTHjKLCdEcWhWfZm4n9eJ8Xw2p8IlaTIFVssClNJMCaz90lfaM5Qji2hTAt7K2FDqilDG1LBhuAtv7xKmpWyd1Gu3F+WajdZHHk4gVM4Bw+uoAZ3UIcGMFDwDK/w5hjnxXl3PhatOSebOYY/cD5/AG9EkBs=</latexit> 5 ⇥ 10 <latexit sha1_base64="M832D+cU5bS2YPd8n6K4SAVEgq8=">AAAB8XicbVBNS8NAEJ34WetX1aOXxSJ4KklV9Fj04rGC/cA2lM120y7dbMLuRCih/8KLB0W8+m+8+W/ctjlo64OBx3szzMwLEikMuu63s7K6tr6xWdgqbu/s7u2XDg6bJk414w0Wy1i3A2q4FIo3UKDk7URzGgWSt4LR7dRvPXFtRKwecJxwP6IDJULBKFrp8bKLIuKGeG6vVHYr7gxkmXg5KUOOeq/01e3HLI24QiapMR3PTdDPqEbBJJ8Uu6nhCWUjOuAdSxW1e/xsdvGEnFqlT8JY21JIZurviYxGxoyjwHZGFIdm0ZuK/3mdFMNrPxMqSZErNl8UppJgTKbvk77QnKEcW0KZFvZWwoZUU4Y2pKINwVt8eZk0qxXvvFK9vyjXbvI4CnAMJ3AGHlxBDe6gDg1goOAZXuHNMc6L8+58zFtXnHzmCP7A+fwBaPuQFg==</latexit> 10 ⇥ 20 <latexit sha1_base64="036pzEsZVnookaOw2Mr1Y+9sd5s=">AAAB8nicbVBNSwMxEJ31s9avqkcvwSJ4KrtV0GPRi8cK9gPapWTTbBuaTZZkViilP8OLB0W8+mu8+W9M2z1o64PA472ZzMyLUiks+v63t7a+sbm1Xdgp7u7tHxyWjo6bVmeG8QbTUpt2RC2XQvEGCpS8nRpOk0jyVjS6m/mtJ26s0OoRxykPEzpQIhaMopM6gd9FkXBLqn6vVPYr/hxklQQ5KUOOeq/01e1rliVcIZPUWvdZiuGEGhRM8mmxm1meUjaiA95xVFE3J5zMV56Sc6f0SayNewrJXP3dMaGJteMkcpUJxaFd9mbif14nw/gmnAiVZsgVWwyKM0lQk9n9pC8MZyjHjlBmhNuVsCE1lKFLqehCCJZPXiXNaiW4rFQfrsq12zyOApzCGVxAANdQg3uoQwMYaHiGV3jz0Hvx3r2PRemal/ecwB94nz/T45BN</latexit> 20 ⇥ 25 <latexit sha1_base64="1uWsCmvOMxw8F0pY5HIA3FWsaQI=">AAAB8nicbVBNS8NAEN3Ur1q/qh69LBbBU0mioseiF48V7AekoWy2m3bpZjfsToQS+jO8eFDEq7/Gm//GbZuDtj4YeLw3w8y8KBXcgOt+O6W19Y3NrfJ2ZWd3b/+genjUNirTlLWoEkp3I2KY4JK1gINg3VQzkkSCdaLx3czvPDFtuJKPMElZmJCh5DGnBKwU+G4PeMIM9q/61Zpbd+fAq8QrSA0VaParX72BolnCJFBBjAk8N4UwJxo4FWxa6WWGpYSOyZAFlkpi94T5/OQpPrPKAMdK25KA5+rviZwkxkySyHYmBEZm2ZuJ/3lBBvFNmHOZZsAkXSyKM4FB4dn/eMA1oyAmlhCqub0V0xHRhIJNqWJD8JZfXiVtv+5d1P2Hy1rjtoijjE7QKTpHHrpGDXSPmqiFKFLoGb2iNwecF+fd+Vi0lpxi5hj9gfP5A90FkFM=</latexit> i <latexit sha1_base64="hA2BMjcr0btVk5qY1/HOr4xO94Q=">AAAB6HicbVBNS8NAEJ3Ur1q/qh69LBbBU0mqoMeiF48t2FpoQ9lsJ+3azSbsboQS+gu8eFDEqz/Jm//GbZuDtj4YeLw3w8y8IBFcG9f9dgpr6xubW8Xt0s7u3v5B+fCoreNUMWyxWMSqE1CNgktsGW4EdhKFNAoEPgTj25n/8IRK81jem0mCfkSHkoecUWOlJu+XK27VnYOsEi8nFcjR6Je/eoOYpRFKwwTVuuu5ifEzqgxnAqelXqoxoWxMh9i1VNIItZ/ND52SM6sMSBgrW9KQufp7IqOR1pMosJ0RNSO97M3E/7xuasJrP+MySQ1KtlgUpoKYmMy+JgOukBkxsYQyxe2thI2ooszYbEo2BG/55VXSrlW9i2qteVmp3+RxFOEETuEcPLiCOtxBA1rAAOEZXuHNeXRenHfnY9FacPKZY/gD5/MH0MuM8Q==</latexit> m <latexit sha1_base64="hgrbGyfUs1b/Mr5+M32Ck4D9zmA=">AAAB6HicbVBNS8NAEJ3Ur1q/qh69LBbBU0mqoMeiF48t2FpoQ9lsJ+3a3STsboQS+gu8eFDEqz/Jm//GbZuDtj4YeLw3w8y8IBFcG9f9dgpr6xubW8Xt0s7u3v5B+fCoreNUMWyxWMSqE1CNgkfYMtwI7CQKqQwEPgTj25n/8IRK8zi6N5MEfUmHEQ85o8ZKTdkvV9yqOwdZJV5OKpCj0S9/9QYxSyVGhgmqdddzE+NnVBnOBE5LvVRjQtmYDrFraUQlaj+bHzolZ1YZkDBWtiJD5urviYxKrScysJ2SmpFe9mbif143NeG1n/EoSQ1GbLEoTAUxMZl9TQZcITNiYgllittbCRtRRZmx2ZRsCN7yy6ukXat6F9Va87JSv8njKMIJnMI5eHAFdbiDBrSAAcIzvMKb8+i8OO/Ox6K14OQzx/AHzucP1tuM9Q==</latexit> スカラー積の回数 1 2 3 4 5 6 1 0 15750 7875 9375 11875 15125 2 0 2625 4375 7125 10500 3 0 750 2500 5375 4 0 1000 3500 5 0 5000 6 0 j <latexit sha1_base64="sezUAcifLCsPU4ANWRbU4nmBeg4=">AAAB6HicbVDLTgJBEOzFF+IL9ehlIjHxRHbRRI9ELx4hkUcCGzI79MLA7OxmZtaEEL7AiweN8eonefNvHGAPClbSSaWqO91dQSK4Nq777eQ2Nre2d/K7hb39g8Oj4vFJU8epYthgsYhVO6AaBZfYMNwIbCcKaRQIbAXj+7nfekKleSwfzSRBP6IDyUPOqLFSfdQrltyyuwBZJ15GSpCh1it+dfsxSyOUhgmqdcdzE+NPqTKcCZwVuqnGhLIxHWDHUkkj1P50ceiMXFilT8JY2ZKGLNTfE1MaaT2JAtsZUTPUq95c/M/rpCa89adcJqlByZaLwlQQE5P516TPFTIjJpZQpri9lbAhVZQZm03BhuCtvrxOmpWyd1Wu1K9L1bssjjycwTlcggc3UIUHqEEDGCA8wyu8OSPnxXl3PpatOSebOYU/cD5/ANJPjPI=</latexit> i <latexit sha1_base64="hA2BMjcr0btVk5qY1/HOr4xO94Q=">AAAB6HicbVBNS8NAEJ3Ur1q/qh69LBbBU0mqoMeiF48t2FpoQ9lsJ+3azSbsboQS+gu8eFDEqz/Jm//GbZuDtj4YeLw3w8y8IBFcG9f9dgpr6xubW8Xt0s7u3v5B+fCoreNUMWyxWMSqE1CNgktsGW4EdhKFNAoEPgTj25n/8IRK81jem0mCfkSHkoecUWOlJu+XK27VnYOsEi8nFcjR6Je/eoOYpRFKwwTVuuu5ifEzqgxnAqelXqoxoWxMh9i1VNIItZ/ND52SM6sMSBgrW9KQufp7IqOR1pMosJ0RNSO97M3E/7xuasJrP+MySQ1KtlgUpoKYmMy+JgOukBkxsYQyxe2thI2ooszYbEo2BG/55VXSrlW9i2qteVmp3+RxFOEETuEcPLiCOtxBA1rAAOEZXuHNeXRenHfnY9FacPKZY/gD5/MH0MuM8Q==</latexit> 1 2 3 4 5 6 1 1 1 3 3 3 2 2 3 3 3 3 3 3 3 4 4 5 5 5 6 j <latexit sha1_base64="sezUAcifLCsPU4ANWRbU4nmBeg4=">AAAB6HicbVDLTgJBEOzFF+IL9ehlIjHxRHbRRI9ELx4hkUcCGzI79MLA7OxmZtaEEL7AiweN8eonefNvHGAPClbSSaWqO91dQSK4Nq777eQ2Nre2d/K7hb39g8Oj4vFJU8epYthgsYhVO6AaBZfYMNwIbCcKaRQIbAXj+7nfekKleSwfzSRBP6IDyUPOqLFSfdQrltyyuwBZJ15GSpCh1it+dfsxSyOUhgmqdcdzE+NPqTKcCZwVuqnGhLIxHWDHUkkj1P50ceiMXFilT8JY2ZKGLNTfE1MaaT2JAtsZUTPUq95c/M/rpCa89adcJqlByZaLwlQQE5P516TPFTIjJpZQpri9lbAhVZQZm03BhuCtvrxOmpWyd1Wu1K9L1bssjjycwTlcggc3UIUHqEEDGCA8wyu8OSPnxXl3PpatOSebOYU/cD5/ANJPjPI=</latexit> s <latexit sha1_base64="8r6dWOvdyfgmPOHEanDSQrmgcis=">AAAB6HicbVBNS8NAEJ3Ur1q/qh69LBbBU0mqoMeiF48t2FpoQ9lsJ+3azSbsboQS+gu8eFDEqz/Jm//GbZuDtj4YeLw3w8y8IBFcG9f9dgpr6xubW8Xt0s7u3v5B+fCoreNUMWyxWMSqE1CNgktsGW4EdhKFNAoEPgTj25n/8IRK81jem0mCfkSHkoecUWOlpu6XK27VnYOsEi8nFcjR6Je/eoOYpRFKwwTVuuu5ifEzqgxnAqelXqoxoWxMh9i1VNIItZ/ND52SM6sMSBgrW9KQufp7IqOR1pMosJ0RNSO97M3E/7xuasJrP+MySQ1KtlgUpoKYmMy+JgOukBkxsYQyxe2thI2ooszYbEo2BG/55VXSrlW9i2qteVmp3+RxFOEETuEcPLiCOtxBA1rAAOEZXuHNeXRenHfnY9FacPKZY/gD5/MH3/OM+w==</latexit> 括弧付の位置 m[1, 2] + m[3, 3] + p0p2p3 =15750 + 0 + 30 · 15 · 5 =18000 <latexit sha1_base64="EQRDOm5SM0LAYObsWWAGh12UCFk=">AAACMXicbVBPS8MwHE39b/039eglOBRhMtLWoRdB9OJRwemgLSXNMg1L2pCkwih+JS9+E/HiQRGvfgmzrQedPvjB4733I/m9VHKmDUKvztT0zOzc/MKiu7S8srpWW9+41nmhCG2TnOeqk2JNOcto2zDDaUcqikXK6U3aPxv6N/dUaZZnV2YgaSzwbcZ6jGBjpaR2vitCb9+PGyIM9oO4IRMkE18mAXSj6Bjueq3DFoINOJwARaSbG+i14Ji0qswRQiip1VETjQD/Eq8idVDhIqk9R92cFIJmhnCsdeghaeISK8MIpw9uVGgqMenjWxpammFBdVyOLn6AO1bpwl6u7GQGjtSfGyUWWg9EapMCmzs96Q3F/7ywML2juGSZLAzNyPihXsGhyeGwPthlihLDB5Zgopj9KyR3WGFibMmuLcGbPPkvufabXtD0Lw/qJ6dVHQtgC2yDPeCBQ3ACzsEFaAMCHsELeAPvzpPz6nw4n+PolFPtbIJfcL6+AdcloX0=</latexit> m[1, 1] + m[2, 3] + p0p1p3 =0 + 2625 + 30 · 35 · 5 =7875 <latexit sha1_base64="goRi8AeV4kDLjmSPq1gUUtTM/zw=">AAACL3icbVBLSwMxGMz6rPVV9eglWCxCS9mHtb0IRUE8VrBW2F2WbJpqMNkNSVYopf/Ii3+lFxFFvPovTB8HtQ6EDDPzkXwTC0aVtu1Xa2FxaXllNbeWX9/Y3Nou7OzeqDSTmLRxylJ5GyNFGE1IW1PNyK2QBPGYkU78cD72O49EKpom17ovSMjRXUJ7FCNtpKhwUeK+U3HCMvfdiheWRWSLyBGRB/NBcApLNixD98StmcuzA9xNNfRqcEpq00i9Ua9FhaJdtSeA88SZkSKYoRUVRkE3xRknicYMKeU7ttDhAElNMSPDfJApIhB+QHfENzRBnKhwMNl3CA+N0oW9VJqTaDhRf04MEFeqz2OT5Ejfq7/eWPzP8zPda4QDmohMkwRPH+plDOoUjsuDXSoJ1qxvCMKSmr9CfI8kwtpUnDclOH9Xnic3btXxqu7VcbF5NqsjB/bBATgCDqiDJrgELdAGGDyBEXgD79az9WJ9WJ/T6II1m9kDv2B9fQPss6EX</latexit> ((A1(A2A3))((A4A5)A6)) <latexit sha1_base64="bf9jgUFhG9RjRShPJCXQ5ZAZHcU=">AAACCHicbVC7TsMwFHXKq5RXgJEBiwqpWaqkLY+xhYWxSLRUaqPIcd3WquNEtoNURR1Z+BUWBhBi5RPY+BucNgO0HOlax+fcK/seP2JUKtv+NnIrq2vrG/nNwtb2zu6euX/QlmEsMGnhkIWi4yNJGOWkpahipBMJggKfkXt/fJ369w9ESBryOzWJiBugIacDipHSkmcel0oNz9FVgQ2valnptabpmaWPc8vyzKJdtmeAy8TJSBFkaHrmV68f4jggXGGGpOw6dqTcBAlFMSPTQi+WJEJ4jIakqylHAZFuMltkCk+10oeDUOjiCs7U3xMJCqScBL7uDJAayUUvFf/zurEaXLoJ5VGsCMfzhwYxgyqEaSqwTwXBik00QVhQ/VeIR0ggrHR2BR2Cs7jyMmlXyk61XLmtFetXWRx5cAROQAk44ALUwQ1oghbA4BE8g1fwZjwZL8a78TFvzRnZzCH4A+PzB+WAlM8=</latexit> Q. 最適な括弧付けは?:
/25 19 何度も同じ部分問題を解くのは無駄 各部分問題を一度だけ解くようにすれば効率的なはず! 2つのケーススタディで共通している観点
/25 20 動的計画法は分割統治法と同様, 部分問題の解を統合することによって問題を解く方法である. 計算結果を保存しておくことで, 部分部分問題を再計算する労を避ける. 部分構造最適性 (optimal substructure) 部分問題重複性
(overlapping subproblems) どんなときに適応できるのか? and ボトムアップ方式 (bottom-up method) 履歴管理を用いるトップダウン方式 (top-down with memorization) どのように実現するのか? or
/25 21 部分構造最適性 連鎖行列積 AiAi+1 · · · Aj <latexit
sha1_base64="d4BgiSep36myJr90VrduqqMWnMo=">AAACAHicbVDLSgMxFM3UV62vURcu3ASLIAhlpgq6bHXjsoJ9QDsMmUymjc0kQ5IRyjAbf8WNC0Xc+hnu/BvTdhZaPXDh5Jx7yb0nSBhV2nG+rNLS8srqWnm9srG5tb1j7+51lEglJm0smJC9ACnCKCdtTTUjvUQSFAeMdIPx9dTvPhCpqOB3epIQL0ZDTiOKkTaSbx80fQqbfkZP3RzCAQ6FVuZ979tVp+bMAP8StyBVUKDl25+DUOA0JlxjhpTqu06ivQxJTTEjeWWQKpIgPEZD0jeUo5goL5sdkMNjo4QwEtIU13Cm/pzIUKzUJA5MZ4z0SC16U/E/r5/q6NLLKE9STTiefxSlDGoBp2nAkEqCNZsYgrCkZleIR0girE1mFROCu3jyX9Kp19yzWv32vNq4KuIog0NwBE6ACy5AA9yAFmgDDHLwBF7Aq/VoPVtv1vu8tWQVM/vgF6yPb2K6lP4=</latexit> を と分割 ((Ai · · · Ak)(Ak+1 · · · Aj)) <latexit sha1_base64="k59hsmDFzcxNMr0EB3JZmtHTbi8=">AAACEHicbZDLSsNAFIYn9VbrLerSzWARW4SSVEGXrW5cVrAXaEOYTKbtmMkkzEyEEvoIbnwVNy4UcevSnW/jtA2orT8M/HznHM6c34sZlcqyvozc0vLK6lp+vbCxubW9Y+7utWSUCEyaOGKR6HhIEkY5aSqqGOnEgqDQY6TtBVeTevueCEkjfqtGMXFCNOC0TzFSGrnmcalUdynsYT9SEtbdoAw1SIMTe/wD78pl1yxaFWsquGjszBRBpoZrfvb8CCch4QozJGXXtmLlpEgoihkZF3qJJDHCARqQrrYchUQ66fSgMTzSxIf9SOjHFZzS3xMpCqUchZ7uDJEayvnaBP5X6yaqf+GklMeJIhzPFvUTBlUEJ+lAnwqCFRtpg7Cg+q8QD5FAWOkMCzoEe/7kRdOqVuzTSvXmrFi7zOLIgwNwCErABuegBq5BAzQBBg/gCbyAV+PReDbejPdZa87IZvbBHxkf30HTmjc=</latexit> どちらも最適な括弧付けになっていなければならない rn = max (pn, r1 + rn 1, r2 + rn 2, . . . , rn 1 + r1) <latexit sha1_base64="VF5YgItC26ZaRlklvBN81eSkKj8=">AAACOHicbVBNSwMxEM36WetX1aOXYFEqatmtgl6EohdvVrC20C1LNs22odnsksyKZenP8uLP8CZePCji1V9g+iFodSDhzXszk8zzY8E12PaTNTU9Mzs3n1nILi4tr6zm1tZvdJQoyqo0EpGq+0QzwSWrAgfB6rFiJPQFq/nd84Feu2VK80heQy9mzZC0JQ84JWAoL3epPIl3TrEbkjtXsAAKsSf3sfIcvGfuVB44/UFa+k5LJnVbEej9b3moOK7i7Q7serm8XbSHgf8CZwzyaBwVL/doptEkZBKoIFo3HDuGZkoUcCpYP+smmsWEdkmbNQyUJGS6mQ4X7+Ntw7RwEClzJOAh+7MjJaHWvdA3lSGBjp7UBuR/WiOB4KSZchknwCQdPRQkAkOEBy7iFleMgugZQKji5q+YdogiFIzXWWOCM7nyX3BTKjqHxdLVUb58NrYjgzbRFiogBx2jMrpAFVRFFN2jZ/SK3qwH68V6tz5GpVPWuGcD/Qrr8wuFtKim</latexit> ロッド切出し問題 長さが と の2つの金属棒に切断, それぞれの金属棒を最適に 分割することで得られる総収入 n i <latexit sha1_base64="AMTEmYgqxguyFb26Fa9BmJlDjkI=">AAAB6nicbVBNS8NAEJ34WetX1aOXxSJ4sSRV0GPRi8eK9gPaUDbbTbt0swm7E6GE/gQvHhTx6i/y5r9x2+agrQ8GHu/NMDMvSKQw6Lrfzsrq2vrGZmGruL2zu7dfOjhsmjjVjDdYLGPdDqjhUijeQIGStxPNaRRI3gpGt1O/9cS1EbF6xHHC/YgOlAgFo2ilB3UueqWyW3FnIMvEy0kZctR7pa9uP2ZpxBUySY3peG6CfkY1Cib5pNhNDU8oG9EB71iqaMSNn81OnZBTq/RJGGtbCslM/T2R0ciYcRTYzoji0Cx6U/E/r5NieO1nQiUpcsXmi8JUEozJ9G/SF5ozlGNLKNPC3krYkGrK0KZTtCF4iy8vk2a14l1UqveX5dpNHkcBjuEEzsCDK6jBHdShAQwG8Ayv8OZI58V5dz7mrStOPnMEf+B8/gAGqI2g</latexit> i <latexit sha1_base64="hA2BMjcr0btVk5qY1/HOr4xO94Q=">AAAB6HicbVBNS8NAEJ3Ur1q/qh69LBbBU0mqoMeiF48t2FpoQ9lsJ+3azSbsboQS+gu8eFDEqz/Jm//GbZuDtj4YeLw3w8y8IBFcG9f9dgpr6xubW8Xt0s7u3v5B+fCoreNUMWyxWMSqE1CNgktsGW4EdhKFNAoEPgTj25n/8IRK81jem0mCfkSHkoecUWOlJu+XK27VnYOsEi8nFcjR6Je/eoOYpRFKwwTVuuu5ifEzqgxnAqelXqoxoWxMh9i1VNIItZ/ND52SM6sMSBgrW9KQufp7IqOR1pMosJ0RNSO97M3E/7xuasJrP+MySQ1KtlgUpoKYmMy+JgOukBkxsYQyxe2thI2ooszYbEo2BG/55VXSrlW9i2qteVmp3+RxFOEETuEcPLiCOtxBA1rAAOEZXuHNeXRenHfnY9FacPKZY/gD5/MH0MuM8Q==</latexit> 切断なし 問題の最適解をその部分問題の最適解から構成できるか? 1. ある部分問題の解が最適でないと仮定 2. その部分問題の最適解に貼替える 3. 元の問題に対するよりよい解を得ることができる -> 矛盾 切貼り法(cut-and-paste)を用いて妥当性を確認
/25 22 あるグラフと2点 u, v が与えられたとき u->v への最短路を求めよ u->v への最長単純道を求めよ
部分構造最適性: YES 部分構造最適性: NO 解 u->w->v に対して 切出し法によるチェック 1. u->w への最短路を p とする 2. p より短い道 q が存在すると仮定 3. p を q に貼替える 4. 元の解より短い道が完成 -> 矛盾 u w v x uからvへの最長路: u->w->v uからwへの最長路: u->x->v->w wからvへの最長路: w->u->x->v 組合せても解にならない 部分問題が独立ではない
/25 23 部分問題重複性 再帰アルゴリズムが同じ問題を繰返し訪れているか? 4 Cut-Rod(p, 4) <latexit sha1_base64="VXW9NeIZVP5wdRHbBH6CItNX4HI=">AAACAXicbVDLSgNBEJyNrxhfq14EL4NBiKBhNwb0GMzFYxTzgCSE2dnZZMjsg5leMSzx4q948aCIV//Cm3/jJNmDJhY0FFXddHc5keAKLOvbyCwtr6yuZddzG5tb2zvm7l5DhbGkrE5DEcqWQxQTPGB14CBYK5KM+I5gTWdYnfjNeyYVD4M7GEWs65N+wD1OCWipZx50gD1A0lEUV2M4uw3dcSE6xeWTnpm3itYUeJHYKcmjFLWe+dVxQxr7LAAqiFJt24qgmxAJnAo2znVixSJCh6TP2poGxGeqm0w/GONjrbjYC6WuAPBU/T2REF+pke/oTp/AQM17E/E/rx2Dd9lNeBDFwAI6W+TFAkOIJ3Fgl0tGQYw0IVRyfSumAyIJBR1aTodgz7+8SBqlon1eLN2U85WrNI4sOkRHqIBsdIEq6BrVUB1R9Iie0St6M56MF+Pd+Ji1Zox0Zh/9gfH5A8amlck=</latexit> 3
0 2 1 0 0 1 0 1 0 0 2 1 0 0 ロッド切出し問題 4 3 0 2 1 0 0 1 1 0 2 Memorized-Cut-Rod-Aux(p, 4, r) <latexit sha1_base64="QfpOujYtrp8AIhkz+GJXWLhPbh4=">AAACEnicbVDLSgNBEJz1bXxFPXoZDIKCCbsa0KOPixdBxSRCEsLsbCcZnN1ZZnolcck3ePFXvHhQxKsnb/6Nk8dBowUNRVU33V1+LIVB1/1yJianpmdm5+YzC4tLyyvZ1bWyUYnmUOJKKn3jMwNSRFBCgRJuYg0s9CVU/NvTvl+5A22Eiq6xG0M9ZK1INAVnaKVGdqeG0MG0Zjg9h1BpcQ9B/jTB/JUK8sdJp7cd79LiLtU7jWzOLbgD0L/EG5EcGeGikf2sBYonIUTIJTOm6rkx1lOmUXAJvUwtMRAzfstaULU0YiGYejp4qUe3rBLQptK2IqQD9edEykJjuqFvO0OGbTPu9cX/vGqCzcN6KqI4QYj4cFEzkRQV7edDA6GBo+xawrgW9lbK20wzjjbFjA3BG3/5LynvFbz9wt5lMXd0MopjjmyQTbJNPHJAjsgZuSAlwskDeSIv5NV5dJ6dN+d92DrhjGbWyS84H98PfJxl</latexit>
/25 24 動的計画法の応用例 遺伝子コードの比較, 系統樹の作成など 配列アラインメント (The Needleman Wunsch algorithm)
時系列データの比較, 音声認識など 動的時間伸縮法 (dynamic time warping) グラフィカルモデルにおける推論手法 max-sum アルゴリズム
/25 25 まとめ 大きい問題を分割, 部分問題を解いて得られた解を結合して 元の問題の答えを得る. 部分問題の解を保存しておき適宜利用する. 動的計画法 適用可能かの判断 解に部分構造最適性と部分問題重複性があるかどうか
実現方法 履歴管理を用いるトップダウン方式 or ボトムアップ方式