【问题标题】:algorithms complexity performance and space算法复杂度性能和空间
【发布时间】:2012-10-12 03:13:44
【问题描述】:

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

【问题讨论】:

    标签: algorithm data-structures complexity-theory


    【解决方案1】:

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

    但是,我可以说的还有很多。我会尝试解决一些问题:

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

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

    更多套装:
    除了大 O 符号,我们还使用其他符号来表示复杂度。其他常用符号是(按使用的通用性):

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

    不要与分析方法混淆:Big Theta/Big O/ 符号中的每一个...都可以与任何分析方法配对(最坏情况/平均情况/...)
    更多关于 Big Theta、Big O 的详细信息以及它们之间的区别,请查看this thread

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

    此外 - 我们感兴趣的是问题是否可以解决/可决定。描述问题的可解决性的常用类有:

    现实世界:
    在现实世界的应用程序中 - 我们不仅关心理论空间/时间复杂性,还关心常数(一种算法花费一半时间的算法要好得多,即使它们可以属于同一复杂度等级。这是因为复杂性类忽略了常量。)。
    我们还考虑程序/算法的实施时间和可维护性。

    【讨论】:

    • 看看List of algorithms in wikipedia。几乎所有算法的页面都有其复杂性。
    • @GregRos:感谢您的编辑。答案现在更容易理解了。你在复习我的英语方面做得很好 - 谢谢你。
    • 哦,当然。 :) 我希望我设法保持原样。这是一个非常翔实的答案,你很少看到的那种。
    猜你喜欢
    • 2021-01-23
    • 1970-01-01
    • 2023-03-04
    • 2020-04-02
    • 1970-01-01
    • 1970-01-01
    • 2011-04-20
    • 2012-08-14
    相关资源
    最近更新 更多