算法复杂性和空间

时间:2012-10-22 10:15:47

标签: algorithm data-structures complexity-theory

我正在课堂上研究算法的复杂性,我需要知道算法是否有其他复杂性,我所知道和研究的是2种类型 1-是BIG O的复杂性,即时间和性能等 2-是空间复杂性,即内存复杂性, 算法有其他任何复杂性吗?算法是否由我错过的任何其他东西来衡量?

1 个答案:

答案 0 :(得分:5)

就算法的渐近复杂性而言 - 是的,算法(和问题)是根据空间和时间来衡量的。

但是,我可以说更多。我会尝试解决一些问题:

空间/时间消耗来自分析方法
有四种常用的算法分析方法,用于空间和时间。请记住,big-O是一组函数,但是如何导出函数呢?根据分析方法得出复杂度的函数,该方法通常是以下之一:

这些方法中的每一种都可用于任何算法 - 并且结果不保证是相同的。例如,快速排序的最差时间复杂度为O(n^2),平均时间复杂度为O(nlogn)

更多集:
除了大O表示法之外,我们还使用其他表示法来表示复杂性。其他常用符号(通过使用的共性):

  • Big Theta(Θ)
  • Big Omega(Ω)
  • 小o
  • 小欧米茄(ω)

不要与分析方法混淆:Big Theta / Big O / notations ...中的每一个都可以与任何分析方法配对(最坏情况/平均情况/ ......) 有关Big Theta,Big O以及它们之间的差异的更多详细信息,请参阅this thread

理论复杂性:
在理论"Complexity Theory"领域 - 我们分析问题,而不是算法。在这个领域,我们关心的是,如果一个问题可以通过多项式求解(也就是说,如果输入的大小 n ,则问题可以通过 n 的某种幂来解决。 ),多项式验证(给出可能的解决方案,检查它是否正确)。但是,还有其他类。
常见的复杂性类别是:

此外 - 如果问题可以解决/可以解决,我们感兴趣。用于描述问题的可解决性的常见类是:

真实世界:
在现实世界的应用程序中 - 我们不仅关心理论空间/时间复杂性,还关注常量(一种算法占用一半的时间,因为另一种更好,即使它们可以处于相同的复杂性类别这是因为复杂性类忽略了常量。
我们还考虑了程序/算法的实现时间和可维护性。