在本问题中,我们来证明给定n个不同的输入元素,对于任何确定或随机的比较排序算法,其期望运行时间都有下界Ω(nlgn)。首先来分析一个确定的比较排序算法A,其决策树为TA。假设A的输入的每一种排列都是等可能的。
a) 假设TA的每个叶结点都标以在给定的随机输入下到达该结点的概率。证明:恰有n!个叶结点标有1/n!,其他的标有0。
对于一个基于比较的排序算法A,不存在两个输入序列使之到达决策树的一个相同的叶子,所以决策树TA必然至少有n!个叶子。对于每个可能的输入序列,当A是一个确定算法时,输入某个特定的序列必然总是到达TA的同一个叶子,所以TA最多只有n!个叶子。因此TA有n!个叶子与每个可能的输入序列一一对应。对于n!个叶子,到达每一个叶子的可能性为1/n!,因为n!个可能的输入序列中任意一个出现的可能性都是1/n!。
b) 设D(T)表示一棵决策树T的外路径长度,也就是说,D(T)是T的所有叶结点深度的和。设T为一棵决策树,其叶子数k>1,并设RT和LT为T的右子树和左子树。证明:D(T)=D(RT)+D(LT)+k。
如果 k>1,则T的根一定不是叶子。这意味着T的所有叶子都在LT和RT中。因为每个叶子在LT或者RT中的深度h+1才是在T中的深度,所以 D(T)=D(LT)+D(RT)+k。设dT(x)=x结点在T中的深度。
于是:
D(T)=∑dT(x) (x∈leaves(T))
=∑dT(x) (x∈leaves(LT)) + ∑dT(x) (x∈leaves(RT))
=∑(dLT(x)+1) (x∈leaves(LT)) + ∑(dRT(x)+1) (x∈leaves(RT))
=∑dLT(x) (x∈leaves(LT)) + ∑dRT(x) (x∈leaves(RT)) + ∑1 (x∈leaves(T))
=D(LT)+D(RT)+k。
c) 设d(k)为所有具有k>1个叶结点的决策树D(T)的最小值。证明:d(k)=min(1<=i<=k-1){d(i)+d(k-i)+k}。
要证明d(k)=min(1<=i<=k-1){d(i)+d(k-i)+k}需证明
d(k)<=min(1<=i<=k-1){d(i)+d(k-i)+k}
且
d(k)>=min(1<=i<=k-1){d(i)+d(k-i)+k}
要证明d(k)<=min(1<=i<=k-1){d(i)+d(k-i)+k},我们只需证明i=1, 2, ..., k-1时d(k)<=d(i)+d(k-i)+k。对于任意i(1<=i<=k-1)我们可以发现RT有i个叶子,LT有k-i个叶子,于是D(RT)=d(i),D(LT)=d(k-i)。构造T使得RT和LT分别为T的右子树和左子树。于是:
d(k)<=D(T)
=D(RT)+D(LT)+k
=d(i)+d(k-i)+k
要证明d(k)>=min(1<=i<=k-1){d(i)+d(k-i)+k},我们只需证明存在i=1, 2, ..., k-1使d(k)>=d(i)+d(k-i)+k。设k个叶子的T的D(T)=d(k),让RT有i个叶子,LT有k-i个叶子。于是:
d(k)=D(T)
=D(RT)+D(LT)+k
>=d(i)+d(k-i)+k
d) 证明:对k的某一给定值(k>1)的范围1<=i<=k-1内的值,函数ilgi+(k-i)lg(k-i)在i=k/2处取得最小值。总结d(k)=Ω(klgk)。
设fk(i)=ilgi+(k-i)lg(k-i)。要找出fk取最小值时的i,就是找出fk的导数等于零时i的取值:
fk'(i)=d((ilni+(k-i)ln(k-i))/ln2)/di
=(lni+1-ln(k-i)-1)/ln2
=(lni-ln(k-i))/ln2
i=k/2时fk'(i)=0。要验证这的确是最小值,只需检测fk的二阶导在i=k/2时是否是正数:
fk''(i)=d((lni-ln(k-i))/ln2)/di
=(1/i+1/(k-i))/ln2
fk''(k/2)=(2/k+2/k)/ln2
=4/(k*ln2)>0 (k>1)
现在我们用带入法证明d(k)=Ω(klgk)。对于任意常数c,d(1)>=0=c*1*lg1。接下来,我们假定d(i)>cilgi (1<=i<=k-1),c是一个已定的常数。
d(k)=min(1<=i<=k-1){d(i)+d(k-i)+k}
>=min(1<=i<=k-1){c(ilgi+(k-i)lg(k-i))+k}
=min(1<=i<=k-1){cfk(i)+k}
=c(k/2*lg(k/2)(k-k/2)lg(k-k/2))+k
=cklg(k/2)+k
=c(klgk-k)+k
=cklgk+(k-ck)
>=cklgk
所以 d(k)=Ω(klgk)。
e) 证明:D(TA)=Ω(n!lg(n!)),并给出排序n个元素的期望时间为Ω(nlgn)的结论。
TA拥有n!个叶子,于是D(TA)>=d(n!)=Ω(n!lg(n!))。
D(TA)表示决策树所有输入序列的路径长度,这个路径长度与运行时间成比例。每种排列出现的概率都是1/n!。于是期望运行时间为:
Ω(n!lg(n!))/n!=Ω(lg(n!))=Ω(nlgn)。
相关推荐
在实际应用中,快速排序的平均情况是最快的,但是堆排序的最坏情况是 O(nlogn) 的,这说明堆排序的时间复杂度是渐进最优的。但是,快速排序的实际执行时间却比堆排序更快,这是因为快速排序的 cache freundliness 比...
在最坏情况下,每次划分只能减少一个元素,快速排序将不幸退化为冒泡排序,所以快速排序时间复杂度下界为O(nlogn),最坏情况为O(n^2)。在实际应用中,快速排序的平均时间复杂度为O(nlogn)。快速排序在对序列的操作...
本章重点讲解了四种线性时间排序算法:计数排序、基数排序、桶排序,以及在平均情况和最坏情况下的比较排序算法。 首先,排序算法的下界是由决策树模型决定的。比较排序算法可以看作是一棵满二叉树,其中每个内部...
这一理论下界意味着在纯比较的基础上,无法找到一个在所有情况下都能在O(n)时间内完成的排序算法。然而,存在非比较排序算法,如计数排序,可以达到线性时间复杂度。 计数排序是一种适用于特定场景的排序方法,它不...
通过构建决策树来分析比较过程,可以得出在最坏情况下,任何排序算法的时间复杂性下界为Ω(nlogn)。这是因为即使是最高效的比较排序算法,其时间复杂度也无法低于这个界限。 接下来,我们详细讨论了几种基本排序...
平均情况下,N个互异数的数组的逆序数为N(N-1)/4,这意味着任何通过交换相邻元素进行排序的算法在平均情况下需要O(N^2)的时间。 希尔排序(ShellSort)是接下来介绍的一种改进的插入排序,由Donald Shell提出。希尔...
快速排序的优势在于其平均时间复杂度低,而且原地排序(不需要额外的存储空间),但最坏情况下的时间复杂度为O(N^2),发生在数组已经完全有序或逆序的情况下。为了避免这种情况,实际应用中通常会采用随机选择基准...
这是因为基于比较的排序算法必须通过比较来确定元素之间的相对顺序,而比较的结果构成了一棵决策树,这棵树的高度决定了算法的最坏情况时间复杂度。 **计数排序及其算法时间分析**: - 计数排序是一种非比较型整数...
- 定理2表明,仅通过相邻元素交换进行排序的算法,其平均时间复杂度下界为Ω(N^2)。 4. **希尔排序**: - 希尔排序是改进的插入排序,通过间隔序列(例如每5个元素一组)来优化插入排序,逐步减小间隔直到为1,...
决策树用于分析比较排序算法的效率,每一步到叶节点对应一次比较,帮助确定最坏情况的时间复杂度下界。逆序对是衡量排序稳定性的一个指标,在归并排序中,我们可以在合并过程中统计逆序对数量。 在排序算法中,快速...
决策树提供了一种理论上的证明,表明任何基于比较的排序算法在最坏情况下的时间复杂度至少为 \(O(n \log n)\)。 **证明思路**: - 对于 \(n\) 个不同的元素,存在 \(n!\) 种不同的排序结果。 - 每种排序结果对应于...
根据信息,至少需要n log2 n次比较来对包含n个元素的列表进行排序,这是任何基于比较的排序算法的下界。同时,像归并排序这样的算法可以做到在平均情况下达到这个时间复杂度。 以检查数组中元素唯一性为例,原始的...
第六题指出,无论是有序向量还是有序列表,最坏情况下的查找可以在O(log n)时间内完成,这是针对二分查找的特性来说的,而对于基于比较的排序算法,第七题提到的至少需要O(n log n)的时间,这是排序算法的下界,如...
除了最坏情况之外,最佳情况和平均情况也是评估算法性能的重要方面,这部分内容会详细讲解这两种情况下算法的性能表现。 ##### 1.3.3 Ω表示法与Θ表示法 Ω表示法用于描述算法最好情况下的时间复杂度,而Θ表示...
例如,快速排序在已排序数组上的时间复杂度为O(n^2),而在平均情况下为O(n log n)。 15. **基数排序**:基数排序是通过按每一位的数值分配到对应桶中,再逐位收集元素来实现排序的非比较型排序算法。 16. **递归...