【发布时间】:2015-03-29 18:32:35
【问题描述】:
我正在阅读 Thoman Cormen 的“算法简介”,但我无法理解下面写的算法。
Matrix-Chain-Order(p)
1 n ← length[p] − 1
2 for i ← 1 to n
3 do m[i, i] ← 0
4 for l ← 2 to n //l is the chain length.
5 do for i ← 1 to n − l + 1 // what is this?
6 do j ← i + l − 1 // what is this?
7 m[i, j] ← ∞
8 for k ← i to j − 1
9 do q ← m[i, k] + m[k + 1, j] + pi−1pkpj
10 if q < m[i, j]
11 then m[i, j] ← q
12 s[i, j] ← k
13 return m and s
现在,我知道算法是如何工作的了。我知道如何继续构建表格和所有这些。换句话说,我知道直到第 4 行会发生什么,我也知道第 9 到 13 行是关于什么的。 我在理解“for”循环的微妙之处时遇到了问题。第 4 到 8 行很难理解。在第 5 行中,为什么 i 上升到 n-l+1,为什么第 6 行中的 j 设置为 i+l-1。在第 7 行,m[i, j] 为第 10 行的比较而初始化,但第 8 行又是一个谜。
【问题讨论】:
标签: algorithm matrix matrix-multiplication