Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
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
280
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
1.2k
Engineering LaCAM∗: Towards Real-Time, Large-Scale, and Near-Optimal Multi-Agent Pathfinding
kei18
0
3.5k
Breaking Tradeoffs: Extremely Scalable Multi-Agent Pathfinding Algorithms
kei18
0
520
Remove Assumptions in Multi-Agent Pathfinding
kei18
0
410
Pathfinding for 10k agents
kei18
1
17k
Quick Multi-Robot Motion Planning by Combining Sampling and Search
kei18
0
1.4k
Improving LaCAM for Scalable Eventually Optimal Multi-Agent Pathfinding
kei18
0
4.1k
PhD defense 1/2: Planning, Execution, Representation, and Their Integration for Multiple Moving Agents
kei18
1
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
ソフトウェア設計の課題・原則・実践技法
masuda220
PRO
24
19k
Media Capture and Streams: W3C仕様と現場での知見
nowaki28
0
110
手軽に積ん読を増やすには?/読みたい本と付き合うには?
o0h
PRO
1
120
乱雑なコードの整理から学ぶ設計の初歩
masuda220
PRO
32
15k
全員アーキテクトで挑む、 巨大で高密度なドメインの紐解き方
agatan
8
12k
堅牢なフロントエンドテスト基盤を構築するために行った取り組み
shogo4131
3
960
TypeScriptで設計する 堅牢さとUXを両立した非同期ワークフローの実現
moeka__c
5
2.8k
俺流レスポンシブコーディング 2025
tak_dcxi
1
3.1k
Rails Girls Sapporo 2ndの裏側―準備の日々から見えた、私が得たもの / SAPPORO ENGINEER BASE #11
lemonade_37
2
200
目的で駆動する、AI時代のアーキテクチャ設計 / purpose-driven-architecture
minodriven
11
3.7k
FluorTracer / RayTracingCamp11
kugimasa
0
120
AIコードレビューがチームの"文脈"を 読めるようになるまで
marutaku
0
220
Featured
See All Featured
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.3k
Git: the NoSQL Database
bkeepers
PRO
432
66k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
BBQ
matthewcrist
89
9.9k
The Cult of Friendly URLs
andyhume
79
6.7k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.8k
Building Applications with DynamoDB
mza
96
6.8k
Stop Working from a Prison Cell
hatefulcrawdad
273
21k
Speed Design
sergeychernyshev
33
1.3k
4 Signs Your Business is Dying
shpigford
186
22k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.6k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
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 ボトムアップ方式