最近我对算法感兴趣,我一直在观看麻省理工学院出版的视频系列。我遇到了一些关于复发的问题。
附加链接是视频的来源。在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的幂。
答案 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的幂!