LDL形式的Cholesky分解的时间复杂度

时间:2014-04-16 14:51:58

标签: math matrix big-o time-complexity matrix-decomposition

Cholesky Decomposition有两种不同的形式:

A = M * ctranspose (M)

和LDL表格

A = L * D * ctranspose (L)

其中ctranspose是复杂的转置。

我想知道每个表单的浮点运算次数。维基百科参考了一篇论文Matrix Inversion Using Cholesky Decomposition,其中提到了

  

当有效实施时,LDL分解的复杂性与Cholesky分解相同(原文如此)。

该论文称Cholesky分解需要n^3/6 + O(n^2)次操作。然而,维基百科说浮点运算的数量是n^3/3,我自己的计算也得到了第一种形式。它基本上归结为三角数的总和:

n*(n+1)*(n+2)/6.  

这就是我认为论文得到n^3/6的地方。但对于第一种形式,最内部三重和中的术语是a[i][k]*a[j][k],它基本上是一个点积。这是总和中的2 * n浮点运算。所以浮点指针操作应该是n^3/3 + O(n^2)。如果你看一下LDL形式,最里面的总和是a[i][k]*a[j][k]*d[k]。这是3 * n浮点指针操作(2次乘法和1次加法)。所以浮点运算应该是n^3/2 + O(n^2)

换句话说,LDL表单需要多50%的浮点运算。 我是否正确?我认为论文错了(尽管他们没有定义他们的内容通过操作来表示)。这很重要,因为我正在实现基于LDL格式的Choleksy分解的修改形式,我想估计算法的效率。

也许这个问题更适合https://math.stackexchange.com/

1 个答案:

答案 0 :(得分:2)

该陈述考虑了Cholesky分解的总体复杂性,包括(反向平方根的实现),并且是在DSP上详述整个算法的部分的剩余部分。

 我现在确实看到这种说法不合时宜。因此,要计算括号内的术语(在论文中),LDL需要比Cholesky分解更多的操作(操作是复杂的MAC)。