算法在递推方程

时间:2018-01-14 17:26:13

标签: algorithm time-complexity asymptotic-complexity recurrence master-theorem

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

1 个答案:

答案 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))