【问题标题】:Why are we using three loops in Matrix Chain Multiplication?为什么我们在矩阵链乘法中使用三个循环?
【发布时间】:2018-05-20 11:16:36
【问题描述】:

我正在学习动态编程。我被困在矩阵链乘法这个问题上。我理解三个循环的需要。但是如何提出这些安排,如 j = i+L-1 和 i 的测试条件。 还有一些其他 DP 问题具有类似的解决方案,我注意到这些循环仅用于填充上三角矩阵。我想知道我们为什么要写这样的循环?

for (int L=2; L<n; L++){
    for (int i=1; i<n-L+1; i++)
    {
        int j = i+L-1; // Why ?
        m[i][j] = INT_MAX;
        for (int k=i; k<=j-1; k++)
        {
            int q = m[i][k] + m[k+1][j] + p[i-1]*p[k]*p[j];
            if (q < m[i][j])
            {
                m[i][j] = q;
            bracket[i][j] = k;
            }
        }
    }
}

【问题讨论】:

    标签: algorithm for-loop matrix dynamic-programming


    【解决方案1】:

    L 是链的长度。 i 代表行号。 j 代表列号。 k 是中间乘法。

    【讨论】:

      猜你喜欢
      • 2019-11-13
      • 2020-07-18
      • 2011-02-21
      • 2018-11-22
      • 1970-01-01
      • 2018-05-25
      • 1970-01-01
      • 1970-01-01
      • 2018-05-25
      相关资源
      最近更新 更多