免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2017 | 回复: 5
打印 上一主题 下一主题

[算法] 关于一个算法题的思考 [复制链接]

论坛徽章:
13
15-16赛季CBA联赛之八一
日期:2016-07-08 21:00:1415-16赛季CBA联赛之同曦
日期:2017-02-15 14:26:1515-16赛季CBA联赛之佛山
日期:2017-02-20 14:19:2615-16赛季CBA联赛之青岛
日期:2017-05-07 16:49:1115-16赛季CBA联赛之广夏
日期:2017-07-30 09:13:1215-16赛季CBA联赛之广东
日期:2018-07-05 22:34:3615-16赛季CBA联赛之江苏
日期:2018-09-03 12:10:2115-16赛季CBA联赛之上海
日期:2018-09-25 03:49:2215-16赛季CBA联赛之广东
日期:2018-09-25 04:09:12
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-01-14 11:36 |只看该作者 |倒序浏览
题目:多个矩阵相乘,按照什么顺序进行,乘法次数会最少?
相关知识:

① 矩阵可以相乘的条件是:前后两个矩阵的行列数交叉相等。比如必须3x2的矩阵才能和2x3的矩阵相乘,题目给的一组矩阵,每两个相邻矩阵都已经满足这个条件,比如A、B、C,我们不担心AB是否可以相乘、BC是否可以相乘,只需要回答先AB还是先BC。
② PxR与RxQ矩阵相乘的结果是PxQ矩阵,使用乘法的次数为PxRxQ(因为每个元素都使用了R次乘法)。

现假设有5个矩阵:a b c d e。
思路1:
对于a来说,它再不就是和b直接相乘,再不就不是,所以想到用递归解决。
但这种思路是错误的,比如:a x min(bcde),由于min(bcde)将bcde的顺序“固定”了,假设为bx((cd)xe),也就是a对结果的影响,仅仅考虑了它与b的关系,比如(ax(bxc))x(dxe)可能比当前得到的结果还要小呢。

思路2:
1. 将ab相乘,递归计算axb c d e相乘需要的最小乘法次数min1;
2. 将bc相乘,递归计算a bxc d e相乘需要的最小乘法次数min2;
3. 将cd相乘,递归计算a b cxd e相乘需要的最小乘法次数min3;
4. 将de相乘,递归计算a b c dxe相乘需要的最小乘法次数min4;
5. min1 min2 min3 min4中最小的值,即为答案。
但这种递归外面还要套个循环的,可以说效率上存在“bug”,它不只是最外层的递归循环的,里面每一层都会循环,所以问题规模稍微大一点,就解决不了实际问题了:

这个图很直观的看出来,这种思路“一直”在解决重复的问题。

思路3:
将解决子问题的过程“规划”成这样:

这样从最小的问题开始解决,并记录结果,求大问题可以直接使用而不用重复计算。
这种思路里一般不会出现递归,会看到一个二维数组被“滚动”的过程。

思考:
如果希望将思路2“进化”为思路3,需要做什么?
其实思路2中,从最外一层的递归之后,下标信息就开始破坏,“视野”也在变小:比如递归函数处理完第2层子问题bcde后,它实际解决了“1-4”子问题,但却以为解决了一个“0-3”的完整问题。所以,如果如果为递归函数添加“视野的起点”和“当前处理到的位置”参数,按道理就可以“进化”为思路3,并且应该可以很通用,不太需要“规划”哪些子问题应该先求。

论坛徽章:
44
15-16赛季CBA联赛之浙江
日期:2021-10-11 02:03:59程序设计版块每日发帖之星
日期:2016-07-02 06:20:0015-16赛季CBA联赛之新疆
日期:2016-04-25 10:55:452016科比退役纪念章
日期:2016-04-23 00:51:2315-16赛季CBA联赛之山东
日期:2016-04-17 12:00:2815-16赛季CBA联赛之福建
日期:2016-04-12 15:21:2915-16赛季CBA联赛之辽宁
日期:2016-03-24 21:38:2715-16赛季CBA联赛之福建
日期:2016-03-18 12:13:4015-16赛季CBA联赛之佛山
日期:2016-02-05 00:55:2015-16赛季CBA联赛之佛山
日期:2016-02-04 21:11:3615-16赛季CBA联赛之天津
日期:2016-11-02 00:33:1215-16赛季CBA联赛之浙江
日期:2017-01-13 01:31:49
2 [报告]
发表于 2016-01-14 12:40 |只看该作者
errr……这题有意义么?矩阵乘法不满足交换律的说,你随便乱换顺序结果不就不对了么?

论坛徽章:
13
15-16赛季CBA联赛之八一
日期:2016-07-08 21:00:1415-16赛季CBA联赛之同曦
日期:2017-02-15 14:26:1515-16赛季CBA联赛之佛山
日期:2017-02-20 14:19:2615-16赛季CBA联赛之青岛
日期:2017-05-07 16:49:1115-16赛季CBA联赛之广夏
日期:2017-07-30 09:13:1215-16赛季CBA联赛之广东
日期:2018-07-05 22:34:3615-16赛季CBA联赛之江苏
日期:2018-09-03 12:10:2115-16赛季CBA联赛之上海
日期:2018-09-25 03:49:2215-16赛季CBA联赛之广东
日期:2018-09-25 04:09:12
3 [报告]
发表于 2016-01-14 13:20 |只看该作者
windoze 发表于 2016-01-14 12:40
errr……这题有意义么?矩阵乘法不满足交换律的说,你随便乱换顺序结果不就不对了么?


这没有交换,是结合。
ABC != CAB,但(AB)C=A(BC)的。

论坛徽章:
14
水瓶座
日期:2014-06-10 09:51:0215-16赛季CBA联赛之江苏
日期:2017-11-27 11:42:3515-16赛季CBA联赛之八一
日期:2017-04-12 14:26:2815-16赛季CBA联赛之吉林
日期:2016-08-20 10:43:1215-16赛季CBA联赛之广夏
日期:2016-06-23 09:53:58程序设计版块每日发帖之星
日期:2016-02-11 06:20:00程序设计版块每日发帖之星
日期:2016-02-09 06:20:0015-16赛季CBA联赛之上海
日期:2015-12-25 16:40:3515-16赛季CBA联赛之广夏
日期:2015-12-22 09:39:36程序设计版块每日发帖之星
日期:2015-08-24 06:20:002015亚冠之德黑兰石油
日期:2015-08-07 09:57:302015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2016-01-14 14:54 |只看该作者
回复 1# _nosay


    楼主,您这不是就是动态规划吗?算法导论 15.2,矩阵链乘法

论坛徽章:
13
15-16赛季CBA联赛之八一
日期:2016-07-08 21:00:1415-16赛季CBA联赛之同曦
日期:2017-02-15 14:26:1515-16赛季CBA联赛之佛山
日期:2017-02-20 14:19:2615-16赛季CBA联赛之青岛
日期:2017-05-07 16:49:1115-16赛季CBA联赛之广夏
日期:2017-07-30 09:13:1215-16赛季CBA联赛之广东
日期:2018-07-05 22:34:3615-16赛季CBA联赛之江苏
日期:2018-09-03 12:10:2115-16赛季CBA联赛之上海
日期:2018-09-25 03:49:2215-16赛季CBA联赛之广东
日期:2018-09-25 04:09:12
5 [报告]
发表于 2016-01-14 15:14 |只看该作者
lxyscls 发表于 2016-01-14 14:54
回复 1# _nosay


噢,第多少页呀

论坛徽章:
14
水瓶座
日期:2014-06-10 09:51:0215-16赛季CBA联赛之江苏
日期:2017-11-27 11:42:3515-16赛季CBA联赛之八一
日期:2017-04-12 14:26:2815-16赛季CBA联赛之吉林
日期:2016-08-20 10:43:1215-16赛季CBA联赛之广夏
日期:2016-06-23 09:53:58程序设计版块每日发帖之星
日期:2016-02-11 06:20:00程序设计版块每日发帖之星
日期:2016-02-09 06:20:0015-16赛季CBA联赛之上海
日期:2015-12-25 16:40:3515-16赛季CBA联赛之广夏
日期:2015-12-22 09:39:36程序设计版块每日发帖之星
日期:2015-08-24 06:20:002015亚冠之德黑兰石油
日期:2015-08-07 09:57:302015年辞旧岁徽章
日期:2015-03-03 16:54:15
6 [报告]
发表于 2016-01-14 17:32 |只看该作者
回复 5# _nosay


    P197 原书 P331
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP