这个符号被称为平均情况吗?

时间:2016-08-25 06:34:08

标签: c algorithm data-structures

有些书籍表示theta符号被称为平均情况,而其他人则说theta不是普通情况。 如果theta不是平均情况那么所谓的算法平均情况呢?

4 个答案:

答案 0 :(得分:9)

你混淆了两个不同的概念。

average-case time complexity是所有可能输入的平均运行时间(在某种概率分布下)。因此,它是某种算法的输入大小的函数。

theta-notation只是描述两个函数之间某种关系的一种方式。特别是如果一个函数是另一个函数的big-Theta,这告诉我们一个函数的增长速度大约和另一个函数一样快。

您可以使用big-Theta表示法来描述平均情况复杂性。但是你也可以为此目的使用任何其他符号。

如果算法的平均时间复杂度为3*n^2 - 5n + 13,则其平均时间复杂度为Theta(n^2)O(n^2)和{{ 1}}。在这三个中,O(n^3)是对其时间复杂度的最准确的描述(但当然不如准确的表达式准确,实际上几乎不可能得到;我们通常可以提供的只是一些界限)。 / p>

总而言之,theta-notation(和所有其他渐近符号)允许您根据众所周知的函数来表征算法的平均情况运行时间(例如,它大约增长为Theta(n^2))。

答案 1 :(得分:4)

O,Ω和Θ符号实际上与算法最佳/平均/最差情况无关。它们是表达函数渐近行为的方法,无论它们是什么。

f(n)= O(g(n))表示f的生长速度不比g快。 g是上限,是否紧。

f(n)=Ω(g(n))表示f不会比g慢。 g是下限,紧或不。

f(n)=Θ(g(n))表示f的增长速度与g一样快。 g是一个紧密的界限,无论是上部还是下部。

然后,算法的最佳/平均/最差运行时间是元素数​​量的函数,通常具有O,Ω,Θ表示。

在特定算法的分析中,人们通常能够得出最坏情况的O界限,这种情况很紧张。此外,更多的努力,平均时间的约束。通常你不关心最佳时间。

然后在分析给定问题时(无论解决它的任何特定算法),有时可以在运行时间上建立绝对下限,这是在最佳时间(紧密或不紧)上的Ω界限。平均时间的下限有时是可能的,但技术性很强。

答案 2 :(得分:-1)

由于'O'(Big-Oh)用于定义最坏情况,即问题的上限。 并且,Ω用于定义最佳情况,即问题的下限。 同样,Θ用于定义上限和下限之间的任何内容。

由于上限和下限不会频繁发生。因此,在大多数情况下运行我们的算法时,我们将来到这两个极值点之间的场景。 因此,我们计算算法所用的平均时间,我们用Θ表示法表示它。

但是,这并不意味着算法的最坏情况和平均情况复杂性永远不会相同。 它可能相同也可能不相同。

因为可能存在一种算法,该算法在特定输入的最佳情况下运行,而除了该输入之外,其余输入也需要相同的时间。 在这种情况下,Avg&最坏的情况会是相同的。

答案 3 :(得分:-5)

不,Θ(g(n))不是普通情况,但你可以知道平均案例表现是什么。 Θ显示增长顺序,您可以使用Θ来描述最差,平均或最佳情况的空间/时间复杂度。例如,Quicksort最坏情况为O(n^2),而平均案例表现为O(NlogN)