矩阵链乘法示例17 Mar 2025 | 4 分钟阅读 示例:给定的序列是 {4, 10, 3, 12, 20, 7}。矩阵的尺寸分别为 4 x 10、10 x 3、3 x 12、12 x 20、20 x 7。我们需要计算 M [i,j],其中 0 ≤ i, j≤ 5。我们知道 M [i, i] = 0 对所有 i 都成立。 ![]() 让我们继续处理从对角线开始的计算。我们计算 2 个矩阵相乘的最优解。 ![]() 这里 P0 到 P5 是位置,M1 到 M5 是大小为 (pi 到 pi-1) 的矩阵。 根据序列,我们得到一个公式 ![]() 在动态规划中,所有方法的初始化都由 '0' 完成。所以我们用 '0' 初始化。这将按对角线排序。 我们需要考虑所有的组合,但只考虑输出组合的最小值。 Calculation of Product of 2 matrices: 1. m (1,2) = m1 x m2 = 4 x 10 x 10 x 3 = 4 x 10 x 3 = 120 2. m (2, 3) = m2 x m3 = 10 x 3 x 3 x 12 = 10 x 3 x 12 = 360 3. m (3, 4) = m3 x m4 = 3 x 12 x 12 x 20 = 3 x 12 x 20 = 720 4. m (4,5) = m4 x m5 = 12 x 20 x 20 x 7 = 12 x 20 x 7 = 1680 ![]()
现在,第三个对角线将以相同的方式解决。 现在是 3 个矩阵的乘积 M [1, 3] = M1 M2 M3
![]() M [1, 3] =264 比较两种输出,**264** 是两种情况中的最小值,所以我们将 **264** 插入表中,并选择 ( M1 x M2) + M3 这种组合来生成输出。 M [2, 4] = M2 M3 M4
![]() M [2, 4] = 1320 比较两种输出,**1320** 是两种情况中的最小值,所以我们将 **1320** 插入表中,并选择 M2+(M3 x M4) 这种组合来生成输出。 M [3, 5] = M3 M4 M5
![]() M [3, 5] = 1140 比较两种输出,**1140** 是两种情况中的最小值,所以我们将 **1140** 插入表中,并选择 ( M3 x M4) + M5 这种组合来生成输出。 ![]() 现在是 4 个矩阵的乘积 M [1, 4] = M1 M2 M3 M4 可以通过以下三种情况来解决此乘法
在解决了这些情况后,我们选择输出最小的那一种。 ![]() M [1, 4] =1080 比较不同情况的输出,'**1080**' 是最小输出,所以我们将 1080 插入表中,并选择 (M1 xM2) x (M3 x M4) 组合来生成输出。 M [2, 5] = M2 M3 M4 M5 可以通过以下三种情况来解决此乘法
在解决了这些情况后,我们选择输出最小的那一种。 ![]() M [2, 5] = 1350 比较不同情况的输出,'**1350**' 是最小输出,所以我们将 1350 插入表中,并选择 M2 x( M3 x M4 xM5) 组合来生成输出。 ![]() 现在是 5 个矩阵的乘积 M [1, 5] = M1 M2 M3 M4 M5 可以通过以下五种情况来解决此乘法
在解决了这些情况后,我们选择输出最小的那一种。 ![]() M [1, 5] = 1344 比较不同情况的输出,'**1344**' 是最小输出,所以我们将 1344 插入表中,并选择 M1 x M2 x(M3 x M4 x M5) 组合来生成输出。 最终输出是 ![]() 步骤 3:计算最优成本:假设矩阵 Ai 的维度为 pi-1x pi,对于 i=1, 2, 3....n。输入是一个序列 (p0,p1,......pn),其中 [p] 的长度为 n+1。该过程使用一个辅助表 m [1....n, 1.....n] 来存储 m [i, j] 的成本,以及一个辅助表 s [1.....n, 1.....n],用于记录在计算 m [i, j] 时哪个 k 值实现了最优成本。 算法首先为 i=1, 2, 3.....n 计算 m [i, j] ← 0,这是长度为 1 的链的最小成本。 下一个主题矩阵链乘法算法 |
我们请求您订阅我们的新闻通讯以获取最新更新。