用加泰罗尼亚数计算矩阵链多重

时间:2016-08-27 21:41:40

标签: algorithm dynamic-programming catalan

我研究了矩阵链乘法问题,我理解算法的作用。最近,我遇到了加泰罗尼亚语数字,在解决parenthesization problem时派上用​​场了。这个问题在我看来与Matrix Chain Multiplication非常相似。实际上,在CLRS中,他们在Matrix Chain Multiplication章节中提到了加泰罗尼亚语数字。

我很好奇你能用加泰罗尼亚数字算法解决矩阵链乘法吗?我的想法是:不,你不能解决,因为加泰罗尼亚数字描述了用矩阵括起来的方法的数量,而原始的矩阵链问题提出了一个不同的问题 - 特定的方式来排列会产生最小成本的括号。

我的想法是否正确?

1 个答案:

答案 0 :(得分:0)

矩阵链乘法和括号问题是彼此的平等形式。一个可以减少到另一个。

链矩阵乘法问题

给定一系列n矩阵A1, A2, ... An及其维度p0, p1, p2, ..., pn,其中i = 1, 2, ..., n,矩阵Ai具有维度pi − 1 × pi,确定最小化标量乘法数的乘法顺序。

等效形式:括号问题

给定n矩阵,A1, A2, ... An1 ≤ i ≤ nAipi − 1 × pi,矩阵,将产品A1, A2, ... An括起来,以便假设使用朴素算法将pi − 1× pi矩阵乘以pi × pi + 1矩阵的成本为pi − 1× pi × pi + 1

,以最大限度地降低总成本

当你试图写出上述问题的循环关系时,结果与加泰罗尼亚数字相同。因此加泰罗尼亚数可用于解决矩阵链乘法问题。

Matrix-chain Multiplication Problem