📜  矩阵链乘法算法

📅  最后修改于: 2020-12-10 06:32:27             🧑  作者: Mango

矩阵链乘法算法

我们将使用table来构建最佳解决方案。

步骤1:构建最佳解决方案:

分析:有三个嵌套循环。每个循环最多执行n次。

  • l,长度,O(n)次迭代。
  • i,开始,O(n)次迭代。
  • k,分割点,O(n)次迭代

主体循环常数复杂度

总复杂度为:O(n 3 )

带有示例的算法

问题:P [7、1、5、4、2}

解决方案:在这里,P是矩阵维的数组。

因此,这里将有4个矩阵:

步骤1:


现在,根据算法的步骤2

for i ← 1 to n
this means: for i ← 1 to 4 (because n =4)
for  i=1
m [i, i]=0
m [1, 1]=0
Similarly for i = 2, 3, 4
m [2, 2] = m [3,3] = m [4,4] = 0
i.e. fill all the diagonal entries "0" in the table m
Now,
l ← 2 to n
l ← 2 to 4    (because n =4 )

情况1:

1.当l-2

2.我仍然是2

3.现在我变成了3

情况2: l变成3

现在,我们比较k = 1和k = 2的值。两个中的最小值将分别放在m [i,j]或s [i,j]中。

现在从上面

在这里,还找到k = 2和k = 3的两个值的m [i,j]的最小值

  But 28 <     ∞
   So m [i,j] ← q
      And q  ← 28
  m [2, 4]  ← 28
  and   s [2, 4]  ← 3
i.e. It means in s table at s [2,4] insert 3 and at m [2,4] insert 28.

情况3: l变为4

因此不会发生任何变化。因此m [1,4]的值保持为42。s [1,4]的值= 1

现在,我们将仅使用s表来获得最佳解决方案。