【发布时间】:2014-01-10 15:39:44
【问题描述】:
假设我有一个正方形 N X N 对称实数矩阵 A,并且我想计算 A 的 LU 分解。复杂度是多少(例如 O(N^2)、O(N^3) 等... ) 的最佳算法
- 如果 A 是密集矩阵
- 如果 A 是稀疏矩阵?
【问题讨论】:
标签: matrix linear-algebra sparse-matrix matrix-decomposition
假设我有一个正方形 N X N 对称实数矩阵 A,并且我想计算 A 的 LU 分解。复杂度是多少(例如 O(N^2)、O(N^3) 等... ) 的最佳算法
【问题讨论】:
标签: matrix linear-algebra sparse-matrix matrix-decomposition
Wikipedia 声明如下:
如果两个 n 阶矩阵可以在时间 M(n) 内相乘,则 对于某些 a>2,M(n)≥na,则 LU 分解可以计算为 时间 O(M(n))。例如,这意味着 O(n^2.376) 算法 存在基于 Coppersmith-Winograd 算法。
对于稀疏矩阵,没有单一的答案。这取决于稀疏性的性质。
【讨论】:
我会说稀疏矩阵乘法的顺序与密集矩阵相乘的顺序相同,因为 (1) 这些顺序度量仅适用于数据太大以至于顺序效应占主导地位的情况,以及 (2) 稀疏性最多可通过线性因子减少计算与大小 N 无关,因此随着 N 的增长,但稀疏度保持不变,计算应该再次增加为 O(N^3)。与往常一样,在现实世界中,您的数据大小可能不足以让这方面的性能(顺序)占主导地位,而缓存和优化内核的使用将更加重要。
【讨论】: