Почему мы используем три цикла в матричном умножении? - PullRequest
0 голосов
/ 20 мая 2018

Я изучаю динамическое программирование.Я застрял в этом вопросе.Я понимаю необходимость трех петель.Но как придумать такие схемы, как 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;
            }
        }
    }
}

1 Ответ

0 голосов
/ 20 мая 2018

L - длина Цепи.я для номера строки.J для номера столбца.k - промежуточное умножение.

...