【发布时间】:2018-06-23 10:45:04
【问题描述】:
接下来的几天我将参加算法考试,教授要求我们学习如何以这种形式找到 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
我知道如何使用主定理,但我怀疑我可以在这里以某种方式使用它。我的教授也没有向我们展示如何解决这个问题的一个例子,在谷歌上我找不到太多(或者不知道如何找到解决方案 - 如何搜索它)所以有人可以告诉我吗如何逐步解决以上问题?
提前致谢。
PS:抱歉标题可能是错误的,正如我所说,我不知道如何准确地表达我想要的。
【问题讨论】:
-
通常的方法是观察,例如,
T(n/3) >= T(n/4)(尽管这并不总是正确的......)。然后你可以说T(n) >= 2T(n/3) + 5n,然后从那里开始工作。>=是“好的”,因为您仍然可以获得函数的上限,即使它不一定很紧。 -
@hnefatl 对于
T(n),它应该是<=而不是>=。这是一个上限。 -
我有一个以前的答案here,它解决了这种功能。希望对你有帮助
标签: algorithm time-complexity asymptotic-complexity recurrence master-theorem