小编典典

越差越好。有例子吗?

algorithm

有没有有时间复杂广泛使用的算法 更糟 比其它已知的算法,但它是一个 更好 的选择, 所有的 实际情况( 更糟糕的 复杂性,但
更好的 其他方式)?

可接受的答案可能是以下形式:

有算法AB具有O(N**2)O(N)时间复杂性相应,但B
具有这样的大恒定,它具有超过没有优势A,用于输入小于一个数量在宇宙的原子。

示例从答案中突出显示:

  • 单纯形算法-最坏的​​情况是指数时间- 已知的多项式时间算法进行凸优化问题比较。

  • 天真的中位数算法-最坏情况下的O(N ** 2) 已知的O(N)算法。

  • 回溯正则表达式引擎-最坏情况的指数 基于O(N)Thompson NFA的引擎相比。

所有这些示例均利用最坏情况与平均情况。

是否有一些示例不依赖于最坏情况与平均情况之间的差异?


有关:

ABC集团追求完美。例如,他们使用了基于树的数据结构算法,该算法被证明对于渐近大集合是最佳的(但对于小集合来说并不是那么好)。

如果没有能够存储这些大集合的计算机(换句话说,在这种情况下,大不够大),将是这个示例的答案。

  • 正方形矩阵乘法的Coppersmith–Winograd算法是一个很好的例子(最快(2008年),但不及更差的算法)。 还有其他吗? 摘自维基百科文章:“在实践中不使用它,因为它仅对大型矩阵提供了优势,以至于现代硬件无法对其进行处理(Robinson 2005)。”

阅读 322

收藏
2020-07-28

共1个答案

小编典典

用于正方形矩阵乘法的Coppersmith-
Winograd算法
。其时间复杂度是O(n 2.376) 相对于 为O(n 3幼稚乘法算法或) 相对于 为O(n
2.807对)的Strassen算法

从维基百科文章:

但是,与Strassen算法不同,它没有在实践中使用,因为它仅对大型矩阵提供了一个优势,以至于现代硬件无法对其进行处理(Robinson 2005)。

2020-07-28