动态规划--矩阵链相乘问题

16 篇文章 1 订阅
订阅专栏

明确原始问题A[1:n]:计算矩阵链

所需的最小乘法次数。

(1)是否满足最优子结构,问题的解是否包含子问题的优化解?

若计算A[1:n]的优化顺序在k处断开矩阵链,即A[1:n]=A[1:k]×A[k+1:n],则在A[1:n]的优化顺序中,对应于子问题A[1:k]的解必须是A[1:k]的优化解,对应A[k+1:n]的解必须是A[k+1:n]的优化解。

(2)是否满足重叠子问题?

如A[1:2]计算了2次,保存下来能够节省计算时间;

递归计算时,很多子问题会被重复计算很多次。这也是应用动态规划的特征之一

1.分析优化解的结构

2.递归定义最优解的代价

3.自底向上计算最优代价

沿对角线的方式填表!!先计算m[1,1]对角线,再计算m[1,2]对角线,以此类推,最后得到m[1,4],这就是一个自底向上的过程!

4.利用最优值的信息构造最优解

取得的k为A[i:j]最优次序中的断开位置,也即是加括号的位置,记录到s[i][j]表中。

原始问题为A[1:n],通过回溯追踪获得A[1:n]最优值时的k值,即可获得所有加括号的位置。

伪代码:

时间复杂度是O(n^3)

例题:

对维数为序列<5, 10, 3, 12, 5, 50, 6>的各矩阵,找出 矩阵链乘积的一个最优加全部括号

关键在于计算出两个表格:m[i,j]和 s[i,j] (本题都是6行6列)

i = j 时,m[i,j] = 0,所以m[1,1] = 0, m[2,2] = 0,m[3,3] = 0,m[4,4] = 0, m[5,5] = 0,                        m[6,6] = 0;


m[1,2] = min{ k=1, m[1,1] + m[2,2] + p0p1p2 = 0+0+5*10*3 } = 150;

m[2,3] = min{ k=2, m[2,2] + m[3,3] + p1p2p3 = 0+0+10*3*12 } = 360;

m[3,4] = min{ k=3, m[3,3] + m[4,4] + p2p3p4 = 0+0+3*12*5 } = 180;

m[4,5] = min{ k=4, m[4,4] + m[5,5] + p3p4p5 = 0+0+12*5*50 } = 3000;

m[5,6] = min{ k=5, m[5,5] + m[6,6] + p4p5p6 = 0+0+5*50*6 } = 1500;

m[1,3] = min{ k=1, m[1,1] + m[2,3] + p0p1p3 = 0+360+600= 960 ;

                      k=2, m[1,2] + m[3,3] + p0p2p3 = 150+0+5*3*12 = 330} = 330;

m[2,4] = min{ k=2, m[2,2] + m[3,4] + p1p2p4 = 0+180+10*3*5 = 330;

                      k=3, m[2,3] + m[4,4] + p1p3p4 = 0+360+0+10*12*5=960} = 330;

m[3,5] = min{ k=3, m[3,3] + m[4,5] + p2p3p5 = 0+3000+3*12*50 = 4800;

                      k=4, m[3,4] + m[5,5] + p2p4p5 = 180+0+3*5*50 = 930} = 930;

m[4,6] = min{ k=4, m[4,4] + m[5,6] + p3p4p6 = 0+1500+12*5*6 = 1860;

                      k=5, m[4,5] + m[6,6] + p3p5p6 = 3000+0+12*50*6 = 6600} = 1860;

后面以此类推:......

m[i, j]:记录子问题最优解的解值,保存下来避免重复计算。即矩阵连乘积A[i, j]的最小值。

i / j

1

2

3

4

5

6

1

0

150

330

405

1655

2010

2

0

360

330

1080

1950

3

0

180

930

1770

4

0

3000

1860

5

0

1500

6

0

s[i, j]:记录A[i, j]最优次序的断开位置,就是 k 的最优值。

i / j

1

2

3

4

5

6

1

0

1

2

2

4

2

2

0

2

2

2

2

3

0

3

4

4

4

0

4

4

5

0

5

6

0

所矩阵A1A2A3A4A5A6, 即矩阵连乘积A[1,6]的最少次数 = 2010;

s[1,6] = 2,A1A2A3A4A5A6 = (A1A2)A3A4A5A6;

s[3,6] = 4,A3A4A5A6 = (A3A4)(A5A6);

综上,A1A2A3A4A5A6 = (A1A2)( (A3A4)(A5A6) );

动态规划实现矩阵连乘-C++.doc
12-02
矩阵断开可以通过动态规划技术来计算。 Knowledge Point 12: 最优断开点(Optimal Breakdown Point) 最优断开点是指矩阵断开的位置,使得计算时间和空间复杂度最小。该断开点可以通过动态规划技术来计算。
软件设计动态规划-矩阵相乘.ppt
05-11
软件设计师考试算法分析设计动态规划矩阵详细讲解
动态规划之——矩阵连乘(全网最详细博文,看这一篇就够了!)
热门推荐
扬俊的小屋
06-30 7万+
动态规划矩阵连乘
动态规划矩阵乘法——算法设计分析
友人帐_的博客
02-09 3634
介绍了矩阵乘法问题及其相关定义。按照动态规划的基本求解策略进行求解,并给出伪代码及算法复杂度分析
矩阵相乘动态规划法)
最新发布
2301_79582459的博客
05-30 637
矩阵相乘问题是一个经典的动态规划问题。给定一系列矩阵,目标是找到一种最优的乘法顺序,使得所有矩阵相乘所需的标量乘法次数最少。矩阵相乘问题的关键在于利用动态规划来避免重复计算子问题
矩阵连乘问题——算法笔记——详解
weixin_44023658的博客
04-24 2万+
1、动态规划问题简述: 给定n个矩阵{A1A2…An},其中Ai和Ai+1是可乘的,考察这n个矩阵的连乘积A1A2…An。由于矩阵的乘法满足结合律,故计算矩阵的连乘积有许多不同的计算次序,而不同的计算次序,所需要计算的连乘次数也是不同的,求解连乘次数最少的矩阵连乘最优次序。 举例说明矩阵结合方式对数乘次数的影响: 矩阵连乘积A1A2A3,3个矩阵的维数分别为10x100,100x5和5x50,...
动态规划矩阵连乘问题(文末附有手写版例题)
m0_47352999的博客
04-06 4230
动态规划矩阵连乘问题(文末附有手写版例题)
算法 动态规划 简单直观理解 矩阵乘法 带图讲解
weixin_51472145的博客
04-04 6582
简单直观理解 矩阵乘法 带图讲解,动态规划算法
动态规划解决矩阵乘法问题
12-05
关于运用动态规划解决矩阵乘法问题的具体步骤
Java矩阵连乘问题(动态规划)算法实例分析
08-28
Java矩阵连乘问题(动态规划)算法实例分析 本文主要介绍了Java矩阵连乘问题动态规划算法实例分析矩阵连乘问题是指给定n个矩阵,确定计算矩阵连乘积的计算次序,使得依此次序计算矩阵连乘积需要的数乘次数最少。 ...
算法 动态规划矩阵乘积问题 C#
12-12
在本案例中,我们关注的是矩阵乘积问题,这是一个经典的动态规划问题。在C#编程环境下,使用Visual Studio 2010,我们可以构建一个应用程序来解决这个问题矩阵乘积问题涉及到多个矩阵相乘,目标是找到一种...
矩阵乘法的动态规划算法
04-23
矩阵乘法的动态规划算法,使用C#实现 50X10,10X40,40X30,30X5 这是示例用的测试数据,输入示例数据可以得到结果
动态规划矩阵相乘问题算法导论)
10-09 707
问题描述: 给定n个矩阵序列,(A1,A2,A3,A4,...,An). 计算他们的乘积:A1A2A3...An. 由于矩阵的乘法运算符合结合律,因而可以通过调整计算顺序,从而降低计算量。 样例分析: 比如有三个矩阵分别为:A1: 10*100,A2: 100*5,A3: 5*50 假如现在按照(A1A2)A3的顺序计算需要的计算量为:10*100*5+10*5...
矩阵相乘问题
03-14 259
问题描述   给定n个矩阵A1,A2 ,...,An,相邻的矩阵是可乘的,如何确定一个最优计算次序,使得以此次序计算需要的数乘次数最少? 计算次序对计算性能的影响:   假设n=3,A1,A2,A3的维数分别为10×100,100×5,5×50。考察A1×A2×A3需要的数乘次数,有以下 两种计算方式:   (1)(A1×A2)×A3:10×100×5+10×5...
动态规划矩阵连乘问题C++版
于建章的博客
10-29 4726
动态规划矩阵连乘
动态规划求解矩阵乘法
On the way
05-05 1290
矩阵乘法是一个求解矩阵相乘问题,给定一个n个矩阵的序列(A1,A2,A3,…,An),我们希望计算它们的乘积。 对于计算机而言,不管这个矩阵相乘的顺序如何,它们的结果都是相同的,但是计算它们所需要的时间却不相同。例如,三个矩阵
3.1 矩阵连乘问题
tang7mj的博客
05-31 3731
简单的说就是括号的定义,为了区分运算顺序所以重新引入这个概念、完全加括号的矩阵连乘积是指在矩阵连乘的乘法表达式中,对每个乘法操作都显式地加上括号,以明确指定运算的顺序。例如,对于三个矩阵 A、B 和 C,完全加括号的矩阵连乘积可以表示为 ((A * B) * C) 或者 (A * (B * C))。这样的表示方法清楚地表明了乘法操作的顺序。完全加括号的矩阵连乘积通常用于避免歧义,确保在进行矩阵乘法时按照所需的顺序进行计算。这样可以避免乘法顺序不明确或引起错误结果的问题
算法动态规划问题一:矩阵连乘时乘法次数最少?
我爱加菲猫
09-27 5848
目录1 问题的描述2 何为动态规划?3 矩阵连乘4 算发的实现 1 问题的描述 给定n个矩阵{A1,A2,…,An},其中Ai与Ai+1是可乘的,i=1,2 ,…,n-1。如何确定计算矩阵连乘积的计算次序,使得依此次序计算矩阵连乘积需要的数乘次数最少。 给定三个矩阵: A1 20 × 100, A2 100 × 10, A3 10 × 50 计算顺序: 方案一: ((A1 × A2) × A3...
矩阵的乘法问题动态规划
ccccduo的博客
03-23 1378
例: P=<30,35,15,5,10,20> 它对应5个矩阵 A1:3035 A2:3515 A3:155 A4:510 A5:10*20 先计算: m[1,1]=0 m[2,2]=0 m[3,3]=0 m[4,4]=0 m[5,5]=0 当r=2表示两个矩阵相乘的运算量: m[1,2]=303515=15750 m[2,3]=35155=2625 m[3,4]=15510=750 m[4,5]=51020=1000 r=3表示3个矩阵相乘的运算量: m[1,3]=
动态规划算法实验----矩阵问题
11-17
矩阵问题是一个经典的动态规划问题,其目标是找到一种最优的方式来计算给定的一组矩阵的连乘积。这个问题可以通过动态规划算法来解决。 动态规划算法的基本思想是将问题分解成更小的子问题,并使用已知的信息来...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 什么是JWT?(细致讲解) 85386
  • Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; 26011
  • Java中的实体类为什么要 implements Serializable? 20397
  • 关于Windows 443端口被占用问题的解决 16601
  • IDEA中maven项目工程中的pom.xml文件变灰且中间有一条横线的处理方法 14928

分类专栏

  • MySQL 5篇
  • 计算机网络 10篇
  • 数据结构与算法 16篇
  • 计算机组成原理 9篇
  • 中间件 6篇
  • 杂项 6篇
  • Vue 7篇
  • 报错记录 6篇
  • Redis 1篇
  • JavaSE 2篇
  • 分布式 1篇
  • Java框架 3篇
  • 操作系统 2篇
  • Linux 2篇
  • Java面经 1篇

最新评论

  • CPU三级缓存技术解析

    qq_37523370: 大哥,你这一篇文章讲的太多了。

  • 配置环境变量时Path单行显示问题

    m0_74439359: 我的为什么不行啊

  • 配置环境变量时Path单行显示问题

    鱼灯几许: 感谢,很有用

  • 关于Windows 443端口被占用问题的解决

    南阿火: 同问,请问解决了么

  • 什么是JWT?(细致讲解)

    aqwmb: jwt 是token的一种,token也不是非要用redis ,其它方式也行,redis只是为了了加速,这个不要把别人带偏

大家在看

  • 用A*算法实现英雄联盟中的自动寻路功能 428
  • 手把手带你写一个精简版 HashMap 的 put 方法
  • 简述MySQL主从复制原理和机制 847
  • Day1Linux学习
  • 【吴恩达 机器学习 学习笔记】多元线性回归模型(1):矢量化及特征缩放 12

最新文章

  • SQL优化
  • SQL性能分析
  • 一篇文章彻底搞懂websocket协议的原理与应用(一)
2024年2篇
2023年9篇
2022年82篇

目录

目录

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

PHP网站源码永湖建站西乡seo优化宝安模板网站建设龙岗模板制作平湖外贸网站建设石岩seo优化坪山SEO按天计费丹竹头网站搭建龙华网站设计坑梓网站排名优化福永百度竞价横岗关键词按天计费大芬百度网站优化排名布吉网站推广系统坪山网站seo优化惠州网站排名优化爱联标王丹竹头建网站坂田网站推广系统大浪网站关键词优化龙岗营销型网站建设福永网站优化按天收费坑梓阿里店铺运营松岗阿里店铺托管石岩网站推广坪山seo排名大芬SEO按天扣费南澳关键词按天收费观澜网站建设福永网站搜索优化歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化