设为首页 - 加入收藏
广告 1000x90
您的当前位置:12555主二肖com > 矩描述子 > 正文

0010算法笔记——【动态规划】矩阵连乘问题

来源:未知 编辑:admin 时间:2019-07-30

  是可乘的,i=1,2...,n-1。确定计算矩阵连乘积的计算次序,使得依此次序计算矩阵连乘积需要的数乘次数最少。输入数据为矩阵个数和每个矩阵规模,输出结果为计算矩阵连乘积的计算次序和最少数乘次数。

  问题解析:由于矩阵乘法满足结合律,故计算矩阵的连乘积可以有许多不同的计算次序。这种计算次序可以用加括号的方式来确定。若一个矩阵连乘积的计算次序完全确定,也就是说该连乘积已完全加括号,则可以依此次序反复调用2个矩阵相乘的标准算法计算出矩阵连乘积。

  (2)矩阵连乘积A是完全加括号的,则A可表示为2个完全加括号的矩阵连乘积B和C的乘积并加括号,即A=(BC)

  例:设要计算矩阵连乘乘积A1A2A3A4A5A6,其中各矩阵的维数分别是:

  设计算A[i:j],1≤i≤j≤n,所需要的最少数乘次数m[i,j],则原问题的最优值为m[1,n]。

  列举出所有可能的计算次序,并计算出每一种计算次序相应需要的数乘次数,从中找出一种数乘次数最少的计算次序。

  对于n个矩阵的连乘积,设其不同的计算次序为P(n)。每种加括号方式都可以分解为两个子矩阵的加括号问题:(A1...Ak)(Ak+1…An)可以得到关于P(n)的递推式如下:

  以上递推关系说明,P(n)是随n的增长呈指数增长的。因此,穷举法不是一个多项式时间复杂度算法。

  从以上递推关系和构造最优解思路出发,即可写出有子问题重叠性的递归代码实现:

  从上图可以看出很多子问题被重复运算。可以证明,该算法的计算时间T(n)有指数下界。设算法中判断语句和赋值语句为常数时间,则由算法的递归部分可得关于T(n)的递归不等式:

  备忘录方法用表格保存已解决的子问题答案,在下次需要解决此子问题时,只要简单查看该子问题的解答,而不必重新计算。备忘录方法为每一个子问题建立一个记录项,初始化时,该记录项存入一个特殊的值,表示该子问题尚未求解。在求解的过程中,对每个带求的子问题,首先查看其相应的记录项。若记录项中存储的是初始化时存入的特殊值,则表示该问题是第一次遇到,此时计算出该子问题的解,并将其保存在相应的记录项中,以备以后查看。若记录项中存储的已不是初始化时存入的特殊值,则表示该子问题已被计算过,相应的记录项中存储的是该子问题的解答。此时从记录项中取出该子问题的解答即可,而不必重新计算。

  用动态规划迭代方式解决此问题,可依据其递归式自底向上的方式进行计算。在计算过程中,保存已解决的子问题的答案。每个子问题只计算一次,而在后面需要时只需简单检查一下,从而避免了大量的重复计算,最终得到多项式时间的算法。

  依次类推,根据之前计算的m值,迭代计算最优解。与备忘录方法相比,此方法会将每个子问题计算一遍,而备忘录方法则更灵活,当子问题中的部分子问题不必求解释,用备忘录方法较有利,因为从控制结构可以看出,该方法只解那些确实需要求解的子问题。

  动态规划——Dynamicprogramming,可以说是本人一直没有啃下的骨头,这次我就得好好来学学Dynamicprogramming.OK,出发!动态规划通常是分治算法的一种特殊情况,它一般用于...博文来自:jmhIcoding

  矩阵连乘问题----动态规划(转载):给定n个矩阵{A1,A2,…,An},其中Ai与Ai+1是可乘的,i=1,2…,n-1。如何确定计算矩阵连乘积的计算次序,使得依此次序计算矩阵连乘积需要的数乘次数...博文来自:tmljs1988的专栏

  问题描述:给定n个矩阵:A1,A2,...,An,其中Ai与Ai+1是可乘的,i=1,2...,n-1。确定计算矩阵连乘积的计算次序,使得依此次序计算矩阵连乘积需要的数乘次...博文来自:zhao2018的博客

  给定n个矩阵A1,A2.......An,其中Ai与Ai+1是可乘的。  由于矩阵的乘法满足结合律,故计算矩阵的连乘积可以有许多不同的计算次序。这中计算次序可以用加括号的方式来确定。例如,矩阵连乘积A...博文来自:simmerlee的专栏

  问题描述:给定n个矩阵:A1,A2,...,An,其中Ai与Ai+1是可乘的,i=1,2...,n-1。确定计算矩阵连乘积的计算次序,使得依此次序计算矩阵连乘积需要的数乘次数最少。输入数据为矩阵个数和...博文来自:梁山伯的专栏

  本文转载自【问题描述】给定n个矩阵{A1,A2,…,An},其中Ai与Ai+1是可乘的,i=1,...博文来自:的博客

  0-1背包问题:给定n种物品和一个容量为C的背包,物品i的重量是wi,其价值为vi。问:应该如何选择装入背包的物品,使得装入背包中的物品的总价值最大?...博文来自:并非所有流浪者都迷失了自我

  定义:给定n个矩阵{A1,A2,…,An},其中,Ai与Ai+1是可乘的,i=1,2,….n-1。由于矩阵乘法满足结合律,故计算矩阵的连乘积可以有不同的计算次序。矩阵A和B可乘的条件是矩阵A的列数等于...博文来自:天道酬勤

  给定n个矩阵{A1,A2,...,An},考察这n个矩阵的连乘积A1A2...An。由于矩阵乘法满足结合律,故计算矩阵的连乘积可以有许多不同的计算次序,这种计算次序可以用加括号的方式来确定。 矩阵连乘论坛

  因为矩阵乘法满足结合律不满足交换律,所以矩阵乘法进行的顺序呢不同的相乘次数就有所不同。例如{A1,A2,A2}:A110*100A2 100*5A35*50A1A2A3,有两种加括号形式,即,(A1A...博文来自:L-75的专栏

  一、题目描述解矩阵连乘问题二、样例输入025三、样例输出((A0(A1A2))((A3A4)A5))四、思路分析首先大概说一下样例输入,6代表的是六个矩阵相乘,第二行的数据中每三...博文来自:逐梦极客

  问题描述:给定n个矩阵:A1,A2,...,An,其中Ai与Ai+1是可乘的,i=1,2...,n-1。确定计算矩阵连乘积的计算次序,使得依此次序计算矩阵连乘积需要的数乘次数最少。输入数据为矩阵个数和...博文来自:zzzsdust的博客

  一.问题描述  给定n个矩阵{A1,A2,……,An},其中Ai与Ai+1是可乘的,i=1,2,……,n-1。  例如:   计算三个矩阵连乘{A1,A2,A3};维数分别为10*100,100*5,...博文来自:的博客

  前提:输入矩阵的个数,和各个维度,保证Ai和Ai+1是可乘的(相邻之间可乘),求输出的矩阵相乘顺序,和相乘次数,使相乘次数最小。eg:输入 (存到p[0:5]中)第i个矩阵的行、...博文来自:m0_37579232的博客

  算法之矩阵连乘一.问题描叙  给定n个矩阵{A1,A2,……,An},其中Ai与Ai+1是可乘的,i=1,2,……,n-1。  例如:   计算三个矩阵连乘{A1,A2,A3};维数分别为10*100...博文来自:hz的博客

  动态规划算法——矩阵连乘问题问题描述:给定n个矩阵{A1A2…An},其中Ai和Ai+1是可乘的,考察这n个矩...博文来自:zdy0_2004的专栏

  关于矩阵连乘问题这两天上网搜了很多资料,以下两篇博客帮我弄明白了动态规划中的矩阵连乘问题,首先非常感谢两位博主,下面是两篇博客的地址,加上自己的一点补充。crystal_yi的博客:博文来自:wei009965的博客

  问题描述:给定n个矩阵:A1,A2,...,An,其中Ai与Ai+1是可乘的,i=1,2...,n-1。确定计算矩阵连乘积的计算次序,使得依此次序计算矩阵连乘积需要的数乘次数最少。输入数据为矩阵个数和...博文来自:走在冷风中的博客

  题目描述:         给定n个矩阵{A1,A2,…,An},其中,Ai与Ai+1是可乘的,(i=1,2,…,n-1)。用加括号的方法表示矩阵连乘的次序,不同的计算次序计算量(乘法次数)是不同的,...博文来自:往事随风的博客

  问题描述:给定n个矩阵:A1,A2,...,An,其中Ai与Ai+1是可乘的,i=1,2...,n-1。确定计算矩阵连乘积的计算次序,使得依此次序计算矩阵连乘积需要的数乘次数最少。输入数据为矩阵个数和...博文来自:jingsuwen1的博客

  矩阵连乘问题,,求加括号的位置博文来自:dadaxiongdebaobao的博客

  Description    给定n个矩阵{A1,A2,…,An},其中Ai与Ai+1是可乘的,i=1,2,…,n-1。要算出这n个矩阵的连乘积A1A2…An。由于矩阵乘法满足结合律,故计算矩阵的连乘...博文来自:momo的博客人生

  什么是动态规划看到把原始问题划分成一系列子问题,我们很容易想到分治算法,但是对于分治算法,很可能会遇到子问题被重复使用就像下面这个矩阵连乘,分解为子问题就会出现三个重复子问题,用分治算法时,就会重复计...博文来自:刘剑峰的博客

  【fishing-pan:转载请注明出处】前言    这篇是自己写的第一篇关于算法方面的博客,写他是因为自己今天打开笔记,刚好看到了它,...博文来自:不用先生的博客

  给定n个矩阵{A1,A2,...,An},其中Ai与Ai+1是可乘的,i=1,2...,n-1。如何确定计算矩阵连乘积的计算次序,使得依此次序计算矩阵连乘积需要的数乘次数最少。按设计动态规划算法的步骤...博文来自:的博客

  流水作业调度问题描述:N个作业{1,2,………,n}要在由两台机器M1和M2组成的流水线上完成加工。每个作业加工的顺序都是先在M1上加工,然后在M2上加工。M1和M2加工作业i所需的时间分别为ai和b...博文来自:HAZER644的博客

  1、问题描述:         n个作业{1,2,…,n}要在由2台机器M1和M2组成的流水线上完成加工。每个作业加工的顺序都是先在M1上加工,然后在M2上加工。M1和M2加工作业i所需的时间分别为a...博文来自:huoyahuoya的博客

  问题:给定n个矩阵{A1,A2,A3,……,An},其中Ai和A(i+1)是可乘的,i=1,2,3,……,n-1。考察这n个矩阵的连乘积A1*A2*A3*……*An。由于矩阵乘法满足结合律,故计算矩阵...博文来自:weixin_37139761的博客

  首先我们来看看动态规划的四个步骤: 1.找出最优解的性质,并且刻画其结构特性; 2.递归的定义最优解; 3.以自底向上的方式刻画最优值; 4.根据计算最优值时候得到的信息,构造最优解其中改进的动态规划...博文来自:夜空中最亮的星

  备忘录方法为每个子问题建立一个记录项,初始化时,该记录项存入一个特殊值,表示该子问题尚未解决。在求解过程中,对每个待求子问题,首先查看其相应的记录项。有变化则不算,无则算。代码如下:publiccla...博文来自:SL_World的博客

  矩阵相乘只有在第一个矩阵的列数和第二个矩阵的行数相同时才有定义,设有矩阵M1,M2,M3,M4,其维数分别是30×35,35×15,15×5 和5×10,现要求出这4个矩阵相乘的结果。若矩阵A的维数是...博文来自:wangmengmeng99的博客

  动态规划求解矩阵连乘问题Java实现,并且使用备忘录方法对动态规划算法改进...博文来自:weiweiyixiaocsdn的专栏

  ztwzgl998877:好复杂呀看起来,个人感觉可以先把n个作业的时间排序然后按从大到小分别放入m个机器里,然后剩余的n-m个作业用他所需的时间与m个机器里任务的时间相加每次都得出最小值,放入机器中,这样是不是就可以啦,可能时间复杂度有点高,但感觉是可以的哎

本文链接:http://organikhijau.com/jumiaoshuzi/452.html

相关推荐:

网友评论:

栏目分类

现金彩票 联系QQ:24498872301 邮箱:24498872301@qq.com

Copyright © 2002-2011 DEDECMS. 现金彩票 版权所有 Power by DedeCms

Top