how many operation is need for sorting?

时间:2016-07-28 20:25:41

标签: algorithm sorting data-structures time-complexity decision-tree

This is a 2016 entrance exam question:

We have N balls with distinct and unknown weights that have labels 1 to n. We are given a two-pan balance and want to use it for weighting these balls in pairs and writing them on a paper in-order to sort all of these balls. In the worst case, how many weighing operations are need? Choose the best answer.

a) Ceil[ n log2 n ]
b) Floor[ n log2 n ]
c) n − 1
d) Ceil[ log2 n! ]

According to the answer answer sheet, the correct solution is: Ceil[ log2 n! ]

My question is: how is this solution is achieved (how does this algorithms work, is there any pesudocode?)?

1 个答案:

答案 0 :(得分:5)

如果你看一下Number of Comparisons in Merge-Sort,你会在那里找到答案,认为mergesort的比较总数(已知具有良好的渐近行为)是

  

n⌈log 2 n⌉ - 2 ⌈log 2 n⌉ + 1

当然n⌈log 2 n⌉=⌈nlog 2 n⌉和2 ⌈log 2 n⌉< / sup>≥n所以对于n≥1,这确认答案(a)为上限。

(b)上限是否更严格?如果你写了⌈log 2 n⌉= log 2 n + d,对于某些0≤d&lt; 1然后你得到 n(log 2 n + d) - 2 d n + 1 = n(log 2 n + d - 2 d < / sup>)+ 1 =(n log 2 n)+ n(d - 2 d + 1 / n)
如果你写m:=⌈log 2 n⌉和n = 2 m - d 最后一个括号变为(d - 2 d + 2 d - 米)。 对于m的某些值,Plotting this表示对于整数m≥1,这将非常可能为零。对于n = 1,得到m = 0,这意味着d = 0,因此整个括号变为零。因此,当你弄清楚证明的细节时,这将表明(b)确实是mergesort的上限。

(c)怎么样?对于n = 3,有一个简单的反例。如果你知道球1比2轻且小于3,这并没有告诉你如何排序2和3.你可以证明你不能选择次优算法通过比较1到2和3,由于问题的对称性,这是一般情况。所以(c)不是上限。可以下限吗?当然,即使确认球已经订购,你必须对每一对连续进行称重,从而进行n - 1次比较。即使使用最好的算法,也不能比猜测正确的顺序更好,然后确认你的猜测。

(d)下限更严格吗? Plots再次表明它至少与(c)一样大,除了没有整数值的小区域。因此,如果它是一个下限,它将更紧。现在想一下决策树。订购这些n个球的每个算法都可以写成二元决策树:比较给定节点中命名的两个balle,并根据比较结果,进行两个可能的后续步骤之一。决策树必须有n!叶子,因为每个排列必须是一个独特的叶子,所以一旦你到达叶子你就知道确切的排列。和n的二叉树!叶子的深度必须至少为⌈log 2 n!⌉。所以是的,这也是一个下限。

总结所有这些,你有(c)≤(d)≤x≤(b)≤(a),其中x表示最佳算法对所有球进行排序所需的比较次数。正如Mark Dickinson的评论指出的那样,A036604 on OEIS给出了一些n的显式下界,而对于n = 12,不等式(d)&lt; x很严格。所以(d)没有完全描述最佳算法。

顺便说一句(并回答你的“这个算法是如何工作的”),找到给定n的最优算法是相当容易的,至少在理论上:为那些n计算所有可能的决策树!排序,选择深度最小的一个。当然,这种方法很快就变得不切实际了。

现在我们知道没有一个答案给出了最佳排序算法的正确计数,哪个答案是“最好的”?这在很大程度上取决于背景。在许多应用中,知道最差时间行为的上限比知道下限更有价值,因此(b)将优于(d)。但显然创建解决方案表的人有不同的意见,并且(d),或者因为它更接近最优(我假设但尚未证明),或者因为下限对手头的应用更有用。如果您愿意,您可能会质疑整个问题,理由是“最佳”在问题范围内没有得到充分定义。