Как я могу развернуть рецидив: T(n)=2T((n+2)/3)

Я пытаюсь решить эту проблему, но я не знаю, как ее раскрыть.

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

Могу ли я проигнорировать это "+2" и решить его, как это было 2T(n/3) + 1?

Это происходит из-за проблемы, которая использует V[a..b] массив и делает это возвращение:

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

куда Y является (2a+b)/3 and Z is (a+2b)/3

Так: ((b-a+3)/3) = ((n+2)/3)

1 ответ

Вроде, как бы, что-то вроде. Строгая версия этого трюка состоит в том, чтобы установить U(n) = T(n+1) и писать

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

Тогда решите для U (например, U(n) = O(n^log3(2))) и тогда вы сможете найти асимптотическое выражение для T того же порядка.

Другие вопросы по тегам