问题
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:
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.
来源:https://stackoverflow.com/questions/42095743/how-can-i-unfold-the-recurrence-tn-2tn2-3