在回答前面的问题时,我提到了普遍但错误的信念,即“高斯”消除在时间内运行。显然,该算法使用算术运算,但是粗心的实现可能会创建位数成倍增长的数字。作为一个简单的示例,假设我们要对角以下矩阵:
如果我们使用不除法的消除算法版本,该算法仅将一行的整数倍与另一行相加,并且我们始终以矩阵的对角线为中心,则输出矩阵的向量为沿对角线。
但是,什么是高斯消元法的实际时间复杂度? 大多数组合优化作者似乎对“强多项式”感到满意,但我很好奇多项式实际上是什么。
杰克·埃德蒙兹(Jack Edmonds)于1967年发表的论文描述了在强多项式时间内运行的高斯消去形式(“可能由于高斯”)。Edmonds的主要见解是,每个中间矩阵中的每个条目都是原始输入矩阵中次要元素的决定因素。对于具有位整数条目的 ×矩阵,Edmonds证明了他的算法需要最多具有位的整数。在的“合理”假设下,如果我们使用教科书整数算术,则Edmonds的算法在时间内运行,或者如果我们使用则运行在标准整数RAM上使用基于FFT的乘法,可以执行时间恒定的位运算。(Edmonds并未进行此时间分析;他只是声称自己的算法“不错”。)
这仍然是最好的分析方法吗?是否有标准参考书给出了更好的显式时间界限,或至少在要求的精度上有更好的界限?
更笼统地说:求解任意线性方程组的最快算法的运行时间(在整数RAM上)是多少?