为什么我们可以假设对于T(n)= 2T(n / 2)+ theta(1),n是2的幂?

时间:2015-06-23 06:10:46

标签: algorithm recurrence

最近我对算法感兴趣,我一直在观看麻省理工学院出版的视频系列。我遇到了一些关于复发的问题。

  

https://www.youtube.com/watch?v=-EQTVuAhSFY

附加链接是视频的来源。在07:10,教授提到由于某个定理使用T(n/2) in T(n) = 2T(n/2) + theta(1)是好的,尽管使用T(n / 2的底数)或T(the ceiling of n/2)会更准确。

这个定理究竟是什么?实际上我有点困惑,因为n/2可能不会为某些n生成基本案例输入。

e.g。一些初始输入不是 2的幂

1 个答案:

答案 0 :(得分:3)

好问题。我确信你在那课中了解了Big-O,所以我不会详细说明。 (我的解释将使用O(N),为了便于解释,可以假设它与theta(N)相同,但它们是不同的!)

Big-O(和theta)的重要部分是 SIGNIFICANCE 。例如,O(N)总是比O(1)更重要,即使它是99999 * O(1)对O(N)。

所以,你的教授试图说的是,当你做n / 2时,你不需要将其置于最低点或上限,因为你消失的额外位不是重要。你正在处理的是Big-O场景中的运行时,它不关心细节的细节。我们假设N HUGE ,你花费额外的时间来尝试降低地板或天花板N是不可比的。

基本上对于Big-O,你需要彻底的概括,幸好意味着你可以假设n是2的幂!