一尘不染

Cormen中关于插入排序的矛盾

algorithm

在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))


  • 我是唯一在这里看到矛盾的人吗?
  • 我的意思是,如果我们遵守必须证明的问题,我们得出的结论是,对于渐近严格的边界( f(n)= Big-theta(g(n)) ),我们需要让 f(n)= big-omega( G(N)) 的算法的 最好情况BIG-OH(G(N))最坏的情况下
  • 但是在插入排序的 情况 下, 最佳情况下的 时间复杂度为 big-omega(n)最坏情况下的 时间复杂度为 Big-oh(n ^ 2)

阅读 201

收藏
2020-07-28

共1个答案

一尘不染

我认为您在这里有些困惑。让我为您澄清几点。

运行时间可能意味着两件事:程序的实际运行时间,或者诸如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),他们希望您找出时间复杂度。

2020-07-28