四个矩阵ABCD相乘 可以先把中间的BC乘出来吗 如A(BC)D


· 来这里与你纸上谈兵

矩阵乘法昰满足结合律的但是不满足交换律!

大佬还在吗   1.2.3这三个结论说法是对的吗 ?对小弟救命问题 谢谢谢谢

  1. 向量个数=秩数线性无关。

  2. 向量个數>秩数线性相关。

  3. 线性无关《=》不满轶《=》|A|=0

第一个第二个都不对。第三个看不明白
  • 前两个是百度里看到的说可以直接用因为平时你經常我的回答感觉很可靠,我不确定对不对寻思问一下大佬你

  • 第三个是 线性无关 可以直接得出  不满轶 可以直接得出 行列式=0,就是互相推这个对吗

你对这个回答的评价是?

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。

给定n个矩阵{A1A2…An}其中Ai和Ai+1是可乘的,考察这n个矩阵的连乘积A1A2…An由于矩阵的乘法满足结合律,故计算矩阵的连乘积有许多不同的计算次序而不同的计算次序,所需要计算嘚连乘次数也是不同的求解连乘次数最少的矩阵连乘最优次序。

举例说明矩阵结合方式对数乘次数的影响:
矩阵连乘积A1A2A33个矩阵的维数汾别为10x100,100x5和5x50,连乘时加括号的方式有:

  • 按照矩阵链长度递增计算最优值
  • 矩阵链长度为1时分别计算出矩阵链A、B、C、D的最优值
  • 矩阵链长度为2时,分别计算出矩阵链AB、BC、CD的最优值
  • 矩阵链长度为3时分别计算出矩阵链ABC、BCD的最优值
  • 矩阵链长度为4时,计算出矩阵链ABCD的最优值

解答:我们按照動态规划的几个步骤来分析:

(1)找出最优解的性质刻画其特征结构

对于矩阵连乘问题,最优解就是找到一种计算顺序使得计算次数最少。

令m[i][j]表示第i个矩阵至第j个矩阵这段的最优解

将矩阵连乘积 简记为A[i:j] ,这里i<=j.假设这个最优解在第k处断开i<=k<j,则A[i:j]是最优的那么A[i,k]和A[k+1:j]也是相应矩陣连乘的最优解。可以用反证法证明之 这就是最优子结构,也是用动态规划法解题的重要特征之一

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

对于1≤i≤j≤n不同的有序对(i,j) 对于不同的子问题,因此不同子问题的个数最多只有o(n*n).但是若采用递归求解的话許多子问题将被重复求解,所以子问题被重复求解这也是适合用动态规划法解题的主要特征之一。

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

当R=2时迭代计算出:
 当R=3时,迭代计算出:

下面代码中后面的k也相当于是从i到j-1递增的,只是单独把第一个(k=i)提了出来.

下面给出动态规划求解最优值的代码:


  
  • 矩阵连乘计算次序问题的最优解包含着其子问题的最优解这种性質称为最优子结构性质。
  • 在分析问题的最优子结构性质时所用的方法具有普遍性:首先假设由问题的最优解导出的子问题的解不是最优嘚,然后再设法说明在这个假设下可构造出比原问题最优解更好的解从而导致矛盾。
  • 利用问题的最优子结构性质以自底向上的方式递歸地从子问题的最优解逐步构造出整个问题的最优解。最优子结构是问题能用动态规划算法求解的前提
  • 递归算法求解问题时,每次产生嘚子问题并不总是新问题有些子问题被反复计算多次。这种性质称为子问题的重叠性质
  • 动态规划算法,对每一个子问题只解一次而後将其解保存在一个表格中,当再次需要解此子问题时只是简单地用常数时间查看一下结果。
  • 通常不同的子问题个数随问题的大小呈多項式增长因此用动态规划算法只需要多项式时间,从而获得较高的解题效率

1、(A(BCD))——>(A(B(CD))),(A((BC)D));
3、((ABC)D)——>((A(BC)D))(((AB)C)D);

对于上面四个矩阵来说,枚举方法是:
1、括号加在A和B之间矩阵链被分为(A)和(BCD);
2、括号加在B和C之間,矩阵链被分为(AB)和(CD);
3、括号加在C和D之间矩阵链被分为(ABC)和(D);
在第一步中分出的(A)已经不能在加括号了,所以结束;
洏(BCD)继续按照上面的步奏把括号依次加在B和C、C和D之间其他情况相同。
加括号的过程是递归的


 
 
 
 
 

备忘录方法是动态规划算法的变形,与動态规划算法一样备忘录算法用表格保存已解决的子问题的答案,在下次需要解此问题时只是简单地查看该问题的答案而不必重新计算。与动态规划算法不同的是备忘录算法的递归方式是自顶向下的,而动态规划算法是自底向上的
备忘录方法为每个子问题建立一个記录项,初始化时该记录项存入一个特殊的值,表示该子问题尚未求解对每个待求的子问题,首先查看其记录项若记录项是原始值,则代表该问题是第一次遇到计算该问题的值并保存;若记录项中存储的不是初始化时的特殊值,则表示子问题已经被计算过此时只偠从记录项中取出该子问题的解答即可,不必重新计算

上图为递归枚举过程,小方块内的1:4代表第1个矩阵至第4个矩阵的完全加括号方式

可鉯看到黄色方块中有很多重复计算所以利用备忘录来保存计算结果,在每次进行计算前
先查表,看是否计算过避免重复计算。

我要回帖

 

随机推荐