最佳运行时间:上限和下限?

时间:2017-11-14 21:29:23

标签: algorithm performance asymptotic-complexity

在我的作业中,我以声明的形式获得了一些关于算法的信息。其中一个陈述是:“算法B的最佳运行时间为Ω(n ^ 2);”。

我认为算法的最佳运行时间总是下限,上限或紧束缚。我想知道像这样的算法是否也可以具有其最佳运行时间的上限。如果是这样,那么算法的一些例子是什么?

1 个答案:

答案 0 :(得分:0)

case 是一类输入,您可以考虑算法的性能。 最佳情况是您的算法的运行时具有最理想的渐近边界的输入类。通常这可能意味着没有其他类可以提供较低的Omega界限。 最坏情况是您的算法运行时具有最不理想的渐近边界的输入类。通常这可能意味着没有其他类提供更高的O界限。 平均情况与边界的可取性无关,但在给定一些指定的输入分布的情况下查看运行时的预期值。等等。您可以定义任何您想要的案例。

想象一下以下算法:

Weird(a[1...n])
    if n is even then
        flip a coin
        if heads then bogosort(a[1...n])
        else if tails then bubble_sort(a[1...n])
    else if n is odd then
        flip a coin
        if heads then merge_sort(a[1...n])
        else if tails then counting_sort(a[1...n])

给定一个n整数列表,每个整数在1到10之间(包括1和10),此算法对列表进行排序。

  • 在最好的情况下,n是奇数。最佳案例的下限为Omega(n),最佳案例的上限为O(n log n)

  • 在最坏的情况下,n是偶数。最坏情况下限为O(n^2),最坏情况下没有上限(因为bogosort可能永远不会完成,尽管极不可能)。

  • 要定义平均情况,我们需要定义概率。假设偶数/奇数对于所有n同样可能,则在平均情况下没有上限,并且平均情况下的下限是Omega(n^2),与最坏情况相同。为了得到平均情况的不同界限,我们需要定义分布,以便n对于更大的列表变得越来越不可能。例如,通常传入此算法的唯一偶数列表的长度为2。