Answers:
这取决于上下文。在理论计算机科学中,通常每个多项式时间算法都被认为是“高效”的。在近似算法中,例如将被认为是有效的,即使它对于任何合理值在实践中都不可用。在中运行的SAT算法将是一个了不起的突破。 ε Ñ 2 100
在经典算法中,即80年代以前的算法,运行时间在以下(例如矩阵乘法,最小成本匹配,流,线性编程)被认为是有效的。我会说,大多数人仍然认为它们是高效的。当然,如果已知算法,则算法不被认为是有效的,例如用于排序。n 2 n 日志n
如今,趋势是能够处理数TB数据的亚线性算法或流算法。尝试使用矩阵乘法来计算Google索引中所有页面的页面排名。那行不通。
当然,尽管算法确实很有用,但它的渐近运行时间并不能说明全部问题。有些算法具有良好的渐近运行时间,但是常量太大,以致无法有效使用。曾经 立顿称它们为银河算法。罗伯特·塞奇威克(Robert Sedgewick)甚至在他的将科学重新纳入计算机科学的演讲中指出,最坏情况的界限“通常对预测无用,对保证通常无用”,“最坏情况的分析对预测性能无用” 。
从理论上讲,如果算法的最坏情况下的运行时间受到输入长度中多项式的限制,则该算法是有效的。理由是多项式具有很好的闭包特性。加,乘,组成多项式是产生多项式的运算,如果您将问题彼此减少,则这些运算很好。
当然,随着输入长度的增加,多项式和指数之间的差距会变得非常大,因此多项式时间算法会更好。在实践中,多项式时间算法可能需要很长时间才能终止,但在某些情况下,它可能是一种最佳算法(最好的),在这种情况下,我会说它是有效的。