越差越好有例子吗?

问题描述

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

从维基百科文章:

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

解决方法

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

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

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

示例从答案中突出显示:

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

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

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

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

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


有关:

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

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

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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...