是否存在一种广泛使用的算法,其时间复杂度比另一种已知算法差,但在所有实际情况下它都是更好的选择(复杂度更差,但其他情况更好)?
可接受的答案可能是以下形式:
有一些算法具有相应的时间复杂度,但是
A
具有如此大的常数,以至于对于少于宇宙中原子数量的输入 ,它没有任何优势。B
O(N**2)
O(N)
B
A
答案中的示例突出显示:
单纯形算法——最坏的情况是指数时间——与用于凸优化问题的已知多项式时间算法相比。
中位数算法的天真中位数 - 最坏情况 O(N**2)与已知 O(N) 算法。
回溯正则表达式引擎——最坏情况指数与O(N) 基于 Thompson NFA 的引擎。
所有这些示例都利用了最坏情况与平均情况。
是否有不依赖于最坏情况与平均情况之间差异的示例?
有关的:
“越差越好”的兴起。(为了这个问题的目的,“Worse is Better”短语的使用范围比文章中的更窄(即算法时间复杂度))
-
ABC集团力求完美。例如,他们使用了基于树的数据结构算法,这些算法已被证明对于渐近大型集合是最佳的(但对于小型集合来说并不是那么好)。
如果没有计算机能够存储这些大型集合(换句话说,在这种情况下大不够大),这个例子就是答案。
用于方阵乘法的Coppersmith–Winograd 算法是一个很好的例子(它是最快的(2008 年),但不如更差的算法)。还有其他人吗? 来自维基百科的文章:“它没有在实践中使用,因为它只为大到现代硬件无法处理的矩阵提供优势(Robinson 2005)。”