在Cormen定理3.1中,
例如, 插入排序* 的 最佳情况下 运行时间为 big-omega(n) ,而 插入排序的 最坏情况下 运行时间为 Big-oh(n ^ 2) 。因此,插入排序的运行时间介于 big-omega(n) 和 Bigoh(n ^ 2)之间 *
现在,如果我们看练习3.1-6,它会问
证明算法的运行时间为 Big-theta(g(n)), 前提是 最坏情况下的 运行时间为 Big-oh(g(n)) , 最佳情况下的 运行时间为 big-omega(g(n))
我认为您在这里有些困惑。让我为您澄清几点。
运行时间可能意味着两件事:程序的实际运行时间,或者诸如theta或big-oh之类的有界函数(因此有助于避免这种 时间复杂性 ,以避免混淆)。程序的实际运行时间以及表示Big-Oh / theta表示法的时间复杂度。
一旦您知道Big-Oh,其他函数就很容易就位了。当我们说T(n)是Omega(g(n))时,我们的意思是在点k的右边曲线cg(n)限制了下方的运行时间曲线,或换句话说:
T(n)>=c.g(n) for all n>=k, and for some constant c independent of input size.
theta表示法就像是说“我只是一个函数,但是使用不同的常量,可以使我从上到下限制运行时间曲线”
所以当我们说T(n)是theta(g(n))时,我们的意思是
c1.g(n)== k
现在我们知道了函数的含义,让我们看看CLRS在混乱中所处的位置。
例如,插入排序的最佳情况运行时间是big-omega(n),而插入排序的最坏情况运行时间是Big-oh(n ^ 2)。因此,插入排序的运行时间介于big-omega(n)和Bigoh(n ^ 2)之间
这里通过运行时间CLRS手段的实际运行时间T(N)。它的措辞不佳,这不是你的错,你misunderstood.In其实我会继续前进,说他们这的话不对,没有像 瀑布之间 ,一个功能是在集合O(g(n))中还是不在集合中。所以这是一个错误。
证明算法的运行时间为Big-theta(g(n)),前提是最坏情况下的运行时间为Big-oh(g(n)),最佳情况下的运行时间为big- omega(g(n))
CLRS表示运行时间函数T(n),他们希望您找出时间复杂度。