算法在递归方程的另一边找到 O(n) 和两个 T(n)
algorithm find O(n) with two T(n) on the other side of the recurrence equation
后天我要考算法,教授让我们学习如何求O(n)个这样形式的方程:
T(n) = T(n/3) + T(n/4) + 5n
T(n) = T(n/3) + 2T(n/4) + 5n
T(n) = T(n/3) + T(n/4) + 15n
T(n) = 2T(n/3) + T(n/4) + 4n
我知道如何使用主定理,但我怀疑我能否在这里以某种方式使用它。我的教授也没有向我们展示一个关于如何解决这个问题的例子,在 google 我找不到太多(或者不知道如何找到解决方案 - 如何搜索它)也是这样可能有人告诉我如何逐步解决上述问题吗?
提前致谢。
PS: 对不起,标题可能有误,正如我所说,我不知道如何准确地表达我想要的内容。
正如评论中提到的,因为T(n/3) > T(n/4)
你可以为上面的每个方程找到一个上限(这个条件对于增加T(n)
是成立的)。
T(n) = T(n/3) + T(n/4) + 5n => T(n) < 2T(n/3) + 5n =>(using master theorem) T(n) = O(n)
另外,我们可以说 T(n) = \Theta(n)
因为 5n
我们可以说 T(n) = \Omega(n)
.
T(n) = T(n/3) + 2T(n/4) + 5n => T(n) < 3T(n/3) + 5n =>(using master theorem) T(n) = O(nlog(n))
T(n) = T(n/3) + T(n/4) + 15n => T(n) < 2T(n/3) + 15n =>(using master theorem) T(n) = O(n)
T(n) = 2T(n/3) + T(n/4) + 4n => T(n) < 3T(n/3) + 4n =>(using master theorem) T(n) = O(nlog(n))
后天我要考算法,教授让我们学习如何求O(n)个这样形式的方程:
T(n) = T(n/3) + T(n/4) + 5n
T(n) = T(n/3) + 2T(n/4) + 5n
T(n) = T(n/3) + T(n/4) + 15n
T(n) = 2T(n/3) + T(n/4) + 4n
我知道如何使用主定理,但我怀疑我能否在这里以某种方式使用它。我的教授也没有向我们展示一个关于如何解决这个问题的例子,在 google 我找不到太多(或者不知道如何找到解决方案 - 如何搜索它)也是这样可能有人告诉我如何逐步解决上述问题吗?
提前致谢。
PS: 对不起,标题可能有误,正如我所说,我不知道如何准确地表达我想要的内容。
正如评论中提到的,因为T(n/3) > T(n/4)
你可以为上面的每个方程找到一个上限(这个条件对于增加T(n)
是成立的)。
T(n) = T(n/3) + T(n/4) + 5n => T(n) < 2T(n/3) + 5n =>(using master theorem) T(n) = O(n)
另外,我们可以说 T(n) = \Theta(n)
因为 5n
我们可以说 T(n) = \Omega(n)
.
T(n) = T(n/3) + 2T(n/4) + 5n => T(n) < 3T(n/3) + 5n =>(using master theorem) T(n) = O(nlog(n))
T(n) = T(n/3) + T(n/4) + 15n => T(n) < 2T(n/3) + 15n =>(using master theorem) T(n) = O(n)
T(n) = 2T(n/3) + T(n/4) + 4n => T(n) < 3T(n/3) + 4n =>(using master theorem) T(n) = O(nlog(n))