寻找矩阵特征分解的复杂性


40

我的问题很简单:

计算矩阵的本征分解的最著名算法的最坏情况下的运行时间是多少?n×n

本征分解是减少到矩阵乘法还是在最坏的情况下是最著名的算法(通过SVD)?O(n3)

请注意,我要求的是最坏情况的分析(仅就),而不是要求与问题相关的常数(如条件编号)的范围。n

编辑:给出以下一些答案,让我调整一下问题:我会对近似感到满意。近似值可以是乘法,加法,逐项输入或任何您想要的合理定义。我感兴趣的是,是否存在一种比对依赖性更好的算法?ϵnO(poly(1/ϵ)n3)

编辑2:请参见对称矩阵上的相关问题


您是否看过CLRS算法教科书中从矩阵求逆到矩阵乘法的减少?我将从研究这些想法开始,看看它们是否扩展到本征分解。
沃伦·舒迪

是的-他们似乎扩展到找到LU分解,但是我不知道如何使它用于本征分解。
列夫·雷津

您是否知道是计算SVD的最知名算法?O(n3)
罗宾·科塔里

1
据我所知,是最著名的SVD,但我不确定。但是本征分解似乎不太普遍,仅适用于满足特定属性的 ×矩阵,因此对于这种情况,似乎存在更好的算法。我根本不是这个领域的专家,所以我希望有人知道这些事情的最新水平。O(min(mn2,m2n))n×n
列夫·雷津

好的。我对这方面也不是很了解,但是也许可以将SVD计算简化为本征分解,因为如果可以对AA *和A * A进行本征分解,您将获得SVD的左右矩阵。
罗宾·科塔里

Answers:


18

Ryan在mathoverflow上回答了类似的问题。这是链接:mathoverflow-answer

基本上,您可以通过计算符号行列式将特征值计算简化为矩阵乘法。这给出了O()的运行时间,以获取位特征值。当前最好的运行时是O(),其近似值在。nω+1mmn3+n2log2nlogb2b

Ryan的参考是``Victor Y.Pan,Zhao Q.Chen:矩阵特征问题的复杂性。STOC 1999:507-516''。

(我相信在较老的Aho,Hopcroft和Ullman的书《计算机算法的设计和分析》中也讨论了特征值的复杂度与矩阵乘法之间的关系,但是,我没有这本书在我的面前,我无法给您确切的页码。)


13

查找特征值本质上是一个迭代过程:查找特征值等同于找到多项式的根。此外,Abel-Ruffini定理指出,一般而言,您不能以简单的封闭形式(即,带有如二次方程式这样的部首)来表达任意多项式的根。因此,您不能希望“精确地”计算特征值。

这意味着频谱分解算法必须是近似的。任何通用算法的运行时间都必须取决于所需的精度。它不能仅仅取决于尺寸。

我不是这方面的专家。我猜想对n的三次依赖性很好。我见过的所有算法都使用矩阵矢量乘法,而不是矩阵矩阵乘法。因此,如果全部归结为矩阵矩阵乘法,我会有些惊讶。

看看 http://en.wikipedia.org/wiki/List_of_numerical_analysis_topics#Eigenvalue_algorithms


感谢您的回答-我将需要一些时间来消化它!但是,如果使用矩阵矢量乘法,则对n的依赖性可能会好于n ^ 3。
列夫·雷津

6

我只会给出与矩阵特征值有关的部分答案。

如前所述,有很多迭代方法可以找到矩阵的特征值(例如幂迭代),但是总的来说,找到特征值会减少找到特征多项式的根。可以在找到特征多项式,其中是位乘法的代价,是最大条目的位大小,乘以用Bareiss算法计算符号行列式。请参阅Yap关于“算法代数基础”的书,特别是Chap。10,“线性系统”O(n3MB[n(logn+L)])MB(s)sL

一旦找到特征多项式,就可以通过使用隔离区间找到所需的任何精确度的根。参见Yap的书,第二章。有关详细信息,请参见“ 6多项式的根”。我忘记了确切的运行时间,但忘记了它的多项式,即特征多项式的阶数和所需精度的位数。

我怀疑计算本征向量的精确度也是多项式,但是我看不到简单的算法。当然,前面已经提到过一些标准的技巧,但是据我所知,它们都不能保证多项式运行时间达到所需的精度。


有趣,但这似乎比n ^ 3还差。我们知道这是最好的吗?
列夫·雷津

这种性质的算法的运行时间与矩阵乘法的复杂度有关,后者约为O(n ^ 3)。我知道Strassen的算法,但是如果您不忽略数值稳定性问题,那么我相信您会得到O(n ^ 3)进行矩阵乘法。在“平均”情况下,迭代方法可能收敛得更快,但我相信,通常,大约O(n ^ 3)是您可以做的最好的事情。
user834 2010年

因此,您是说如果我不在乎数值稳定性问题,我们可以将其降至O(n ^ 2.376)吗?
列夫·雷津

5

您可以查看Commandur和Kale的新论文,其中提供了Max-Cut的组合算法。从粗略的阅读看,他们的算法似乎是基于组合找到与最大特征值相对应的特征向量,然后在他们拥有该特征向量后使用Luca Trevisan的算法。

看来他们正在使用Lanczos算法的替代方法来找到这样的特征向量,因此可能引起人们的兴趣。我不确定他们寻找特征向量的方法所声称的复杂性是什么,但是可能值得研究。同样,由于他们感兴趣的是近似比率而不是时间本身,因此,他们给出的任何时间边界可能都不是最佳的。


1

这是一个古老的问题,但似乎遗漏了一些重要的文献。

我们为某些算法提供了更强的理论支持。例如,存在基于矩阵符号函数的迭代,请参见Demmel,Dumitriu和Holtz的“快速线性代数是稳定的”。该论文表明,特征值问题可以及时解决,其中是矩阵乘法的指数,是任何。(Oω+η)ωη>0

是的,有Pan + Chen + Zheng的论文建议在BigFloat中组装特征多项式并进行计算,因为最后会损失很多精度,但是没有多少人会认为这是一种实用的方法。

我还提到最广泛使用的算法,即Francis QR迭代,无法证明通用矩阵具有收敛性。Kressner的书讨论了几个反例。


0

是的,几乎所有的数值线性代数都可以简化为矩阵乘法,尽管数值稳定性始终是一个问题。另外,对于诸如本征分解的问题,您应该对近似值感到满意,因为解法可能不合理。查阅Bini和Pan 撰写的《多项式和矩阵计算》一书。

这是另一个参考- 快速线性代数是稳定的 http://www.netlib.org/lapack/lawnspdf/lawn186.pdf


3
感谢您的指点,但是在Google图书中搜索了该图书,我找不到矩阵乘法的简化形式。您是否有一些具体参考或算法的指针?而且他们的SVD算法似乎取决于矩阵的条件数,这不是最坏情况的分析。关于数值稳定性问题等,让我们假设一个理想的情况,其中所有乘法和除法都花费单位时间并产生准确的答案。
列夫·雷津
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.