Algorithm Cormen关于插入排序的矛盾
在科曼定理3.1中说 例如,插入排序的最佳情况运行时间是big omegan,而插入排序的最坏情况运行时间是big ohn^2。 因此,插入排序的运行时间介于big omegan和Bigohn^2之间 现在,如果我们看练习3.1-6,它会问 证明了当算法的最坏情况下的运行时间为大ohgn,最佳情况下的运行时间为大omegagn时,算法的运行时间为大thetagn 我是唯一一个在这里看到矛盾的人。 我的意思是,如果我们遵守必须被证明的问题,我们得出结论,对于渐近紧的界fn=Big thetagn,对于算法的最佳情况,我们需要fn=Big omegagn,对于算法的最坏情况,我们需要Big ohgn 但在插入排序的情况下,最佳情况时间复杂度是大omegan,最坏情况时间复杂度是大ohn^2Algorithm Cormen关于插入排序的矛盾,algorithm,sorting,big-o,time-complexity,Algorithm,Sorting,Big O,Time Complexity,在科曼定理3.1中说 例如,插入排序的最佳情况运行时间是big omegan,而插入排序的最坏情况运行时间是big ohn^2。 因此,插入排序的运行时间介于big omegan和Bigohn^2之间 现在,如果我们看练习3.1-6,它会问 证明了当算法的最坏情况下的运行时间为大ohgn,最佳情况下的运行时间为大omegagn时,算法的运行时间为大thetagn 我是唯一一个在这里看到矛盾的人。 我的意思是,如果我们遵守必须被证明的问题,我们得出结论,对于渐近紧的界fn=Big thetagn,
没有矛盾,因为CLR没有提到插入排序是θ^2。没有矛盾,因为CLR没有提到插入排序是θ^2。这里没有矛盾。这个问题只是为了证明大Thetagn是由大Ogn和大Omegagn渐近紧束缚的。如果你证明了这个问题,你只证明了一个函数在大的Thetagn中运行,当且仅当它在大的Ogn和大的Omegagn之间运行 插入排序从大Omegan运行到大Ohn^2,因此插入排序的运行时间不能紧密绑定到大θ^2
事实上,CLR从不使用大θ^2来紧密绑定插入排序。这里没有矛盾。这个问题只是为了证明大Thetagn是由大Ogn和大Omegagn渐近紧束缚的。如果你证明了这个问题,你只证明了一个函数在大的Thetagn中运行,当且仅当它在大的Ogn和大的Omegagn之间运行 插入排序从大Omegan运行到大Ohn^2,因此插入排序的运行时间不能紧密绑定到大θ^2
事实上,CLRS从不使用大θ^2来进行紧密绑定插入排序。我想您在这里有点困惑。让我为您澄清几点 运行时间可以指两件事:程序的实际运行时间,或有界函数,如θ或大Oh。因此,为了避免混淆,可以调用此时间复杂度。下面我们将使用运行时间表示程序的实际运行时间,时间复杂度表示大Oh/θ符号 拿起大哦,读我的答案 一旦你清楚了Big Oh,其他函数就很容易就位。当我们说Tn是Omegagn时,我们的意思是在某个点k的右边,曲线c.gn从下面限定运行时间曲线。或者换句话说:
T(n)>=c.g(n) for all n>=k, and for some constant c independent of input size.
θ表示法就像是说我只是一个函数,但是使用不同的常数,你可以让我从上面和下面来限制运行时间曲线
所以当我们说Tn是tagn时,我们的意思是
c1.gn==k
现在我们知道了函数的含义,让我们看看CLR在混乱中的位置
例如,插入排序的最佳情况运行时间是big omegan,而插入排序的最坏情况运行时间是big ohn^2。因此,插入排序的运行时间介于big omegan和Bigohn^2之间
这里所说的运行时间CLRS指的是实际运行时间Tn。它的措辞很糟糕,你误解了这一点不是你的错。事实上,我会继续说,他们错了。没有什么像介于两者之间,函数要么在集合Ogn中,要么不在集合Ogn中。所以这是一个错误
证明了当算法的最坏情况下的运行时间为大ohgn,最佳情况下的运行时间为大omegagn时,算法的运行时间为大thetagn
这里的CLRS是指运行时间函数Tn,他们希望您计算出时间复杂度。我认为您在这里有点困惑。让我为您澄清几点 运行时间可以指两件事:程序的实际运行时间,或有界函数,如θ或大Oh。因此,为了避免混淆,可以调用此时间复杂度。下面我们将使用运行时间表示程序的实际运行时间,时间复杂度表示大Oh/θ符号 拿起大哦,读我的答案 一旦你清楚了Big Oh,其他函数就很容易就位。当我们说Tn是Omegagn时,我们的意思是在某个点k的右边,曲线c.gn从下面限定运行时间曲线。或者换句话说:
T(n)>=c.g(n) for all n>=k, and for some constant c independent of input size.
θ表示法就像是说我只是一个函数,但是使用不同的常数,你可以让我从上面和下面来限制运行时间曲线
所以当我们说Tn是tagn时,我们的意思是
c1.gn==k
现在我们知道了函数的含义,让我们看看CLR在混乱中的位置
例如,插入排序的最佳运行时间是big omegan,而最坏的运行时间是tim
插入排序的e是大的ohn^2。因此,插入排序的运行时间介于big omegan和Bigohn^2之间
这里所说的运行时间CLRS指的是实际运行时间Tn。它的措辞很糟糕,你误解了这一点不是你的错。事实上,我会继续说,他们错了。没有什么像介于两者之间,函数要么在集合Ogn中,要么不在集合Ogn中。所以这是一个错误
证明了当算法的最坏情况下的运行时间为大ohgn,最佳情况下的运行时间为大omegagn时,算法的运行时间为大thetagn
这里CLRS指的是运行时间函数Tn,他们希望您计算出时间复杂度。但它确实说这并不矛盾,但是说插入排序的最坏情况运行时间是大omegan^2,这意味着最坏情况下的θ^2。但它确实说这并不矛盾,然而,要说插入排序的最坏情况运行时间是big omegan^2,这意味着在最坏情况下θ^2。所以让我直截了当地说,对于big oh符号,我们看到最坏情况,对于big omega符号,我们看到最好情况。对,不一定。没有硬性规定,最好的情况用大ω表示,最坏的情况用大O表示。很抱歉,听起来有点固执,但从逻辑上讲,最好的情况复杂性会给我们下限,我的意思是,在插入排序中,如果数组已经排序,循环运行n次而不是n^2,因此,它不会充当下限吗?Big-O、Big Omega等是定义函数的不同方式。算法的最佳情况和最坏情况运行时间是两个不同的函数。让我来澄清一下,对于大oh符号,我们看到最坏情况,对于大omega符号,我们看到最佳情况。对,不一定。没有硬性规定,最好的情况用大ω表示,最坏的情况用大O表示。很抱歉,听起来有点固执,但从逻辑上讲,最好的情况复杂性会给我们下限,我的意思是,在插入排序中,如果数组已经排序,循环运行n次而不是n^2,因此,它不会充当下限吗?Big-O、Big Omega等是定义函数的不同方式。算法的最佳运行时间和最差运行时间是两个不同的函数。谢谢Aravind,这确实是一个关于Big oh的惊人答案,我知道Big oh背后的概念,但我确实有一个问题困扰着我。为了找到渐近紧上界,我们考虑最坏情况的输入和渐近紧下界的最佳情况下输入??谢谢Aravind,这确实是一个了不起的答案在大哦,我知道大OH背后的概念,但我确实有1个问题困扰着我。为了找到渐近紧上界,我们考虑最坏情况输入和渐近紧下界的最佳情况下输入???