欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    动态规划法解矩阵连乘问题(5页).doc

    • 资源ID:35413981       资源大小:84KB        全文页数:5页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    动态规划法解矩阵连乘问题(5页).doc

    -动态规划法解矩阵连乘问题实验内容给定n个矩阵A1,A2,.An,其中Ai与Ai+1是可乘的,i=1,2,3。,n-1。我们要计算这n个矩阵的连乘积。由于矩阵乘法满足结合性,故计算矩阵连乘积可以有许多不同的计算次序。这种计算次序可以用加括号的方式确定。若一个矩阵连乘积的计算次序完全确定,也就是说该连乘积已完全加括号,则我们可依此次序反复调用2个矩阵相乘的标准算法计算出矩阵连乘积。解题思路将矩阵连乘积A(i)A(i+1)A(j)简记为Ai:j,这里 i <= j。考察计算Ai:j的最优计算次序。设这个计算次序在矩阵A(k)和A(k+1)之间将矩阵链断开,i <= k < j, 则其相应完全加括号方式为(A(i)A(i+1)A(k) * (A(k+1)A(k+2)A(j)。特征:计算Ai:j的最优次序所包含的计算矩阵子链 Ai:k和Ak+1:j的次序也是最优的。矩阵连乘计算次序问题的最优解包含着其子问题的最优解。设计算Ai:j,1 <= i <= j <= n,所需要的最少数乘次数mi,j,则原问题的最优值为m1,n 当i = j时,Ai:j=Ai,因此,mi,i = 0,i = 1,2,n当i < j时,mi,j = mi,k + mk+1,j + p(i-1)p(k)p(j)这里A(i)的维数为p(i-1)*(i)(注:p(i-1)为矩阵A(i)的行数,p(i)为矩阵Ai的列数)实验实验代码#include <iostream>#include <vector>using namespace std ;class matrix_chainpublic: matrix_chain(const vector<int> & c) cols = c ; count = cols.size () ; mc.resize (count) ; s.resize (count) ; for (int i = 0; i < count; +i) mci.resize (count) ; si.resize (count) ; for (i = 0; i < count; +i) for (int j = 0; j < count; +j) mcij = 0 ; sij = 0 ; / 记录每次子问题的结果 void lookup_chain () _lookup_chain (1, count - 1) ; min_count = mc1count - 1 ; cout << "min_multi_count = "<< min_count << endl ; / 输出最优计算次序 _trackback (1, count - 1) ; / 使用普通方法进行计算 void calculate () int n = count - 1; / 矩阵的个数 / r 表示每次宽度 / i,j表示从从矩阵i到矩阵j / k 表示切割位置 for (int r = 2; r <= n; + r) for (int i = 1; i <= n - r + 1; + i) int j = i + r - 1 ; / 从矩阵i到矩阵j连乘,从i的位置切割,前半部分为0 mcij = mci+1j + colsi-1 * colsi * colsj ; sij = i ; for (int k = i + 1; k < j; + k) int temp = mcik + mck + 1j + colsi-1 * colsk * colsj ; if (temp < mcij) mcij = temp ; sij = k ; / for k / for i / for r min_count = mc1n ; cout << "min_multi_count = "<< min_count << endl ; / 输出最优计算次序 _trackback (1, n) ; private: int _lookup_chain (int i, int j) / 该最优解已求出,直接返回 if (mcij > 0) return mcij ; if (i = j) return 0 ; / 不需要计算,直接返回 / 下面两行计算从i到j按照顺序计算的情况 int u = _lookup_chain (i, i) + _lookup_chain (i + 1, j) + colsi-1 * colsi * colsj ; sij = i ; for (int k = i + 1; k < j; + k) int temp = _lookup_chain(i, k) + _lookup_chain(k + 1, j) + colsi - 1 * colsk * colsj ; if (temp < u) u = temp ; sij = k ; mcij = u ; return u ; void _trackback (int i, int j) if (i = j) return ; _trackback (i, sij) ; _trackback (sij + 1, j) ; cout <<i << "," << sij << " " << sij + 1 << "," << j << endl; private: vector<int> cols ; / 列数 int count ; / 矩阵个数 + 1 vector<vector<int> > mc; / 从第i个矩阵乘到第j个矩阵最小数乘次数 vector<vector<int> > s; / 最小数乘的切分位置 int min_count ; / 最小数乘次数 ;int main() / 初始化 const int MATRIX_COUNT = 6 ; vector<int> c(MATRIX_COUNT + 1) ; c0 = 30 ; c1 = 35 ; c2 = 15 ; c3 = 5 ; c4 = 10 ; c5 = 20 ; c6 = 25 ; matrix_chain mc (c) ; / mc.calculate () ; mc.lookup_chain () ; return 0 ;实验结果实验验证连乘矩阵假如为:计算过程为:从m可知最小连乘次数为m16 = 15125从s可知计算顺序为(A1(A2A3)(A4A5)A6)实验总结在这次实验中懂得了动态规划法运用方法和解题思路的重要性 ,在这个程序中如何建立动态规划的过程建立递归过程保存已解决的子问题答案。每个子问题只计算一次,而在后面需要时只要简单查一下,从而避免大量的重复计算,最终得到多项式时间的算法。-第 5 页-

    注意事项

    本文(动态规划法解矩阵连乘问题(5页).doc)为本站会员(1595****071)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开