算法的复杂性和问题的复杂性。有什么区别?

时间:2017-06-24 21:27:18

标签: time-complexity complexity-theory computation-theory space-complexity

我想知道算法的复杂性问题的复杂性之间的区别,也就是说,哪些点与两个不同

1 个答案:

答案 0 :(得分:3)

好问题!大多数人都不区分这两者,这是一个很大的禁忌。

简单地说,算法的复杂性是算法的运行时间。这可以通过多种方式表示,大O,大Theta或任何类似的Landau Notations。还有其他表示形式,但最常用于大O表示法,可用于分析算法的最坏情况时间复杂度作为输入大小的函数。

问题的复杂性通常是解决问题的任何算法的下限(wiki这里是一个不错的资源)。例如,我们可以证明基于比较的排序具有n log n的下限。这意味着,通过比较元素进行排序的任何算法,无论使用哪种算法,在最坏的情况下至少需要n log n次。使用Landau表示法我们会说这个问题需要Omega(n log n)

总之,问题复杂性是一个下限,算法通常建立一个上限。当您找到一个算法的上限与问题的下限匹配时,您就找到了一个渐近最优的算法!