Time complexity 中间带的中间带使用3块-为什么它不是线性的?

Time complexity 中间带的中间带使用3块-为什么它不是线性的?,time-complexity,median-of-medians,Time Complexity,Median Of Medians,我理解为什么在最坏的情况下,T是算法的运行时间,使用中位数算法和大小为3的块给出了 Tn=T2n/3+Tn/3+On 表示对于大小为3的块,运行时没有打开,因为它仍然需要检查所有n个元素。我不太明白这个解释,在我的家庭作业中,它说我需要通过归纳法来展示它 在这种情况下,我如何证明中值需要时间Ωn logn?如果我们将T2n/3和Tn/3的小数部分相加,得到Tn。然后,使用主定理,我们得到n^logu ba=n^logu 11=n。我们还有fn=On。所以n^log_ba=On=Thetafn,所

我理解为什么在最坏的情况下,T是算法的运行时间,使用中位数算法和大小为3的块给出了

Tn=T2n/3+Tn/3+On

表示对于大小为3的块,运行时没有打开,因为它仍然需要检查所有n个元素。我不太明白这个解释,在我的家庭作业中,它说我需要通过归纳法来展示它


在这种情况下,我如何证明中值需要时间Ωn logn?

如果我们将T2n/3和Tn/3的小数部分相加,得到Tn。然后,使用主定理,我们得到n^logu ba=n^logu 11=n。我们还有fn=On。所以n^log_ba=On=Thetafn,所以主定理的情况2适用。因此,Tn=Thetan^log\u ba*logn=Thetan*logn

由于这是一个家庭作业问题,我将让您自己找出这个结果的严格证明,但是通过查看递归树的形状来思考这个问题可能会有所帮助,它将是这样的:

                      n                         Total work: n
      2n/3                        n/3           Total work: n
4n/9        2n/9             2n/9      n/9      Total work: n
从本质上讲,每个节点的子节点将共同完成与节点本身完全相同的工作量,因此,如果您汇总跨层完成的工作量,您应该可以看到每个级别完成的大致线性工作量。这并不是每个级别的线性工作,因为最终较小的调用开始从底部开始,但对于顶层,您将看到此模式保持不变


你可以通过归纳的方式将其形式化,猜测运行时的形式是cn log n,可能添加了一些较低阶的术语,但我认为了解运行时的来源比能够归纳地证明它更重要和更有指导意义。

看到了,但你必须使用中间值两次,看,这个数学是不正确的。您不能添加Tn/3+T2n/3来获得Tn,因为这忽略了正在进行的额外工作,在这种情况下,它碰巧起作用,但通常无效。类似地,您不能将主定理应用于具有Tn形式项的递归关系,因为该递归永远不会终止。此外,log_1不是n;它是未定义的,因为对于任何k的选择,1^k=1。Downvoter-你能解释一下我能做些什么来改进这个答案吗?