【发布时间】:2021-09-30 05:26:47
【问题描述】:
我很难找到以下问题的直接答案:
如果计算 nxn 正定对称矩阵 A 的 Cholesky 分解,即因子 A=LL^T 且 L 为下三角矩阵,则复杂度为 O(n^3)。 对于稀疏矩阵,显然有更快的算法,但要快多少?
对于这样一个包含 m
编辑:我的矩阵也近似于主对角线(只有对角线和下方和上方的一些相邻对角线是非零的)。
P.S 我最终对 Julia 或 Python 中的实现感兴趣。 Python 有 sksparse.cholmod 模块 (https://scikit-sparse.readthedocs.io/en/latest/cholmod.html) 但我不清楚他们使用的是什么算法以及它的复杂性是什么。不确定 Julia,如果有人可以告诉我。
【问题讨论】:
-
维基百科有一个关于 Cholesky 分解的页面。 “当它适用时,它的效率大约是 LU 分解的两倍。” ——
-
代码可以在不改变复杂性的情况下更快。实际速度通常是某种固定设置代码加上取决于元素数量的每个元素复杂度的混合。但是对于稀疏,时间方式也取决于稀疏性,即相对于总数的非零元素的数量。对于像 python 这样的语言,增加了解释与编译的因素。我希望看到理论论文中讨论的复杂性具有狭义的比较;它在工作代码中的用处不大。
-
稀疏求解器往往不适合复杂性分析,因为它们受到稀疏结构的严重影响。不仅仅是有多少非零,而是它们在哪里。我倾向于通过经验评估性能,例如:dl.acm.org/doi/10.1145/1236463.1236465
标签: python julia sparse-matrix gaussian-process