How can I unfold the recurrence: T(n)=2T((n+2)/3)

2019-03-03 01:37发布

I'm trying to solve this recurrence, but I don't know how to unfold it.

T(n)=2T((n+2)/3) + 1

Can I ignore that "+2" and solve it as it was 2T(n/3) + 1?

This comes from a from a problem that uses a V[a..b] array and makes this return:

return V(X) + f(V, a, Y) + f(V, Z, b)

Where Y is (2a+b)/3 and Z is (a+2b)/3

So: ((b-a+3)/3) = ((n+2)/3)

1条回答
Melony?
2楼-- · 2019-03-03 01:41

Sort of. The rigorous version of this trick is to set U(n) = T(n+1) and write

U(n) = T(n+1)
     = 2T((n+1+2)/3) + 1
     = 2T(n/3 + 1) + 1
     = 2U(n/3) + 1.

Then solve for U (e.g., U(n) = O(n^log3(2))) and then you should be able to find an asymptotic expression for T of the same order.

查看更多
登录 后发表回答