具有不同最坏情况上限,最坏情况下限和最佳情况边界的算法示例?

时间:2014-09-14 16:35:00

标签: algorithm time-complexity big-theta big-o

是否存在任何算法A,这样对于A的一组最坏情况实例S,A具有不同的最坏情况上限和最差情况下限?此外,对于某些输入集,它应该具有不同的最佳情况界限,不等于任何最坏情况界限。

例如,假设H是一个假设算法,使得H具有最坏情况上限Ο(n ^ 3),最坏情况下限Ω(n ^ 2)和最佳情况运行时间Θ(n)。

让我知道上述情况实际上是否有意义?

谢谢:)

2 个答案:

答案 0 :(得分:4)

你描述它的方式,选择任何二次排序算法,比如冒泡排序:

  • 最坏情况上限可以说是O(n^3)

  • 最坏情况下限可以说是Ω(n^2)

  • 当输入已经排序时,最佳案例运行时间可以说是Θ(n) 并且在开始算法之前用一次通过检查,或者使用 在这种情况下过早终止算法的优化。

答案 1 :(得分:1)

这是H的不太自然但可能更令人满意的定义。此函数以相当愚蠢的方式计算输入列表总和的多维数据集。

def H(lst):
    s1 = 0
    for x in lst:
        s1 += x
    if s1 == 0:
        return 0
    elif len(lst) % 2 == 0:
        s2 = 0
        for x in lst:
            for y in lst:
                s2 += x * y
        return s1 * s2
    else:
        s3 = 0
        for x in lst:
            for y in lst:
                for z in lst:
                    s3 += x * y * z
        return s3

最好的情况是Theta(n)。 O(n ^ k)形式的最严重的最坏情况上限是O(n ^ 3)。欧米茄(n ^ k)形式的最严重的最坏情况下限是欧米茄(n ^ 2)。

但请注意,在最坏情况下任何形式的最严格的界限是Theta(f(n))其中f(2m)= m ^ 2和f(2m + 1) = m ^ 3.