对于算法,边界与最佳/最差情况有何关系?最坏的情况是上限的同义词,最好的情况是下限的同义词吗?或者你至少可以从另一个中获得一个?或者他们根本没有关系?
答案 0 :(得分:3)
是的,它可能意味着最坏情况与上限同义,最佳情况与下限同义。
最差情况性能是算法分析中最常用的。在最坏情况分析中,我们保证算法运行时间的上限,这是一个很好的信息。换句话说,我们必须找到导致执行最大操作数的执行。 在最佳案例分析中,我们计算算法运行时间的下限。我们必须知道导致执行最少操作次数的情况。
关于您的上一个问题,是的,我们可以使用平均情况指标来挤压/解决最坏情况或最佳情况。 设O,Θ,Ω分别代表最坏情况,平均情况和最佳情况,f(n)和g(n)代表两个任意函数。
1)如果f(n)= O(g(n))并且f(n)=Θ(g(n))==> f(n)=Ω(g(n))
2)如果f(n)=Ω(g(n))并且f(n)=Θ(g(n))==> f(n)= O(g(n))
答案 1 :(得分:2)
在最坏的情况分析中,我们计算算法运行时间的上限。我们必须知道导致执行最大操作数的情况。对于线性搜索,最坏的情况发生在要搜索的元素(上面代码中的x)不存在于数组中时。大多数情况下,我们会进行最差的案例分析来分析算法。在最糟糕的分析中,我们保证算法运行时间的上限,这是一个很好的信息。
在最佳案例分析中,我们计算算法运行时间的下限。我们必须知道导致执行最少操作数的情况。在线性搜索问题中,最好的情况发生在第一个位置存在x时。最佳案例分析是假的。保证算法的下限不提供任何信息,因为在最坏的情况下,算法可能需要数年才能运行。