我正在研究使用我朋友的pdf(Algorithms Unlocked)重现并尝试解决有关递归的问题,我还不清楚递归树的机制(我假设这是要使用的方法)这个问题)以及如何使边界紧,例如我希望常数变小?
答案 0 :(得分:0)
首先,看看here给出的建议,并在发布问题之前尝试做点什么。我回答这个问题只是因为我发现刷新技能很有意思。
解决方案是O(n log(n))
。
所以你必须看到Master定理在这里不起作用,但是Akra-Bazzi会起作用。
所以g(n) = n
,a1 = 1
,b1 = 1/2
,a2 = 2
,b2=1/4
。求解等式:a1*b1^p + a2*b2^p = 1
得到p = 1
。
现在解决从int(1/u)du
到1
的积分x
,您将获得log(x)
。因此,复杂度为O(x(1+log(x))
,即O(nlog(n))
,其中O是紧束缚。
答案 1 :(得分:0)
尝试使用递归树扩展您的恢复。 你会得到这样的东西:
看到每个级别都具有非递归复杂度= n 通过扩展T(n),我们有2个具有不同高度的子树。 你可以看到2个高度H1和H2。
现在T(n)受到2个子树的复杂性的限制: n * H1> = T(n)> = n * H2
其中: H1 = 1 + log_2(n),H2 = 1 + log_4(n)
所以解决方案将是O(nlog_2(n))