(对区间的模糊排序)考虑这样的一种排序问题:我们无法准确知道待排序的数字是什么。但对于每一个数,我们知道它属于实数轴上的某个区间。也就是说,我们得到了
个形如
的闭区间,其中
。我们的目标是实现这些区间的模糊排序,即对
,生成一个区间的排列
,且存在
,满足
。
a. 为
个区间的模糊排序设计一个随机算法。你的算法应该具有算法的一般结构,它可以对左边端点(即
的值)进行快速排序,同时它也能利用区间的重叠性质来改善时间性能。(当区间重叠越来越多的时候,区间的模糊排序问题会变得越来越容易。你的算法应能充分利用这一重叠性持。)
b. 证明:在一般情况下,你的算法的期望运行时间为
。但是,当所有的区间都有重叠的时候,算法的期望运行时间为
(也就是说,存在一个值
,对所有的
,都有
。)你的算法不必显式地检查这种情况,而是随着重叠情况的增加,算法的性能自然地提高。
解
a.
考虑
个区间
和
之间的关系,分为
种情况:
1)
此时,
个区间不相交,并且
在
的左边。对任意的
和
,必有
。所以,在对区间的模糊排序中,
必须要排在
的左边。因此,可以认为
。
2)
此时,
个区间不相交,并且
在
的右边。对任意的
和
,必有
。所以,在对区间的模糊排序中,
必须要排在
的右边。因此,可以认为
。
3)
并且
此时,
个区间重叠。这意味着至少存在一个
,使得
并且
。根据模糊排序的定义,
和
的排列顺序可以任意。因此,可以认为
。
根据以上分析,可以将区间当成可以比较的数字一样,对一组区间调用快速排序。为了改善区间重叠情况的排序性能,可以利用思考题7-2提供的方法,对区间相等的情况作特殊考虑。
b.
根据思考题7-2的分析,如果所有区间都重叠,这意味着所有区间都相等,这种情况的排序时间复杂度为
。
也如思考题7-2的结论,该算法的期望运行时间为
。
算法导论 — 思考题7-6 对区间的模糊排序
猜你喜欢
转载自blog.csdn.net/yangtzhou/article/details/88776734
今日推荐
周排行