接下来几天我将参加算法考试,教授要求我们学习如何找到这种形式的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:对于可能错误的标题感到抱歉,正如我所说,我不知道如何准确呈现我想要的内容。
答案 0 :(得分:3)
正如评论中所提到的,因为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))