【问题标题】:When should we use soft-O, soft-Omega, soft-Theta我们什么时候应该使用soft-O、soft-Omega、soft-Theta
【发布时间】:2021-02-10 02:11:46
【问题描述】:

我是算法领域的新手,多次遇到软符号。我不明白软符号的用法。根据维基百科,

'本质上,它是大 O 表示法,忽略对数因素,因为其他一些超对数函数的增长率效应表明,对于预测不良运行时更重要的大型输入参数的增长率爆炸性能比对数增长因子贡献的更精细的点效应。 https://en.wikipedia.org/wiki/Big_O_notation#Extensions_to_the_Bachmann%E2%80%93Landau_notations

我并不真正理解 soft-O 的定义。有人可以给我一个例子,我们必须使用soft-O而不是big-O。非常感谢。

【问题讨论】:

    标签: algorithm time-complexity runtime big-o


    【解决方案1】:

    您对不同的精度级别使用不同的符号。例如,你可以说

    • Mergesort 最多使用 n ⌈lg n⌉ 比较

    • 合并排序使用 O(n log n) 比较

    • 合并排序使用 Õ(n) 比较

    第一个是繁琐但精确的。第三个是不精确的,但足以将其与插入排序(Õ(n) 与 Θ(n²))进行比较。

    使用 Õ 来抑制单个对数有点愚蠢,但您也可以编写 log²n √(log log n) = Õ(1) 之类的东西,甚至可以将其扩展到近似方案的 1/ε 项,并在复杂的算法,跟踪这些因素真的很烦人。

    不过,您永远必须使用 soft-O 表示法。您也不必使用大 O 表示法。您可以像 Knuth 一样,引用 MMIX 处理器的特定实现的指令计数。就是方便。

    【讨论】:

    • 非常感谢您的分类。现在我明白了。
    猜你喜欢
    • 1970-01-01
    • 2016-08-14
    • 1970-01-01
    • 2019-08-30
    • 1970-01-01
    • 2011-04-01
    • 2020-10-28
    相关资源
    最近更新 更多