Переписал решенный вопрос ниже для справки:

Оригинальный вопрос:

T(n) = 2T(n - 1) - 1, if n > 0
1,                    otherwise

1-я итерация

T(n) = 2T(n - 1) - 1
T(n - 1) = 2T(n - 1 - 1) - 1 
T(n - 1) = 2T(n - 2) - 1

2-я итерация

T(n) = 2(2T(n - 2) - 1) - 1
T(n) = 4T(n - 2) - 2 - 1
T(n) = 4T(n - 2) - 3
T(n - 2) = 2T(n - 2 - 1) - 1
T(n - 2) = 2T(n - 3) - 1

3-я итерация

T(n) = 4(2T(n - 3) - 1) - 3
T(n) = 8T(n - 3) - 4 - 3
T(n) = 8T(n - 3) - 7
T(n - 3) = 2T(n - 3 - 1) - 1
T(n - 3) = 2T(n - 4) - 1

4-я итерация

T(n) = 8T(n - 3) - 7
T(n) = 8(2T(n - 4) - 1) - 7
T(n) = 16T(n - 4) - 8 - 7
T(n) = 16T(n - 4) - 15

Финальный стол

At k=1, T(n) = 2T(n - 1) - 1
At k=2, T(n) = 4T(n - 2) - 3
At k=3, T(n) = 8T(n - 3) - 7
At k=4, T(n) = 16T(n - 4) - 15
        T(n) = 2ᴷT(n - k) - (2ᴷ - 1)
At k=n  T(n) = 2ᴺT(n - n) - (2ᴺ - 1)
        T(n) = 2ᴺT(0) - (2ᴺ - 1)
        T(n) = 2ᴺ - (2ᴺ - 1)
        T(n) = 2ᴺ - 2ᴺ + 1
        T(n) = 1
1
marcoshass 24 Апр 2017 в 18:34

2 ответа

Лучший ответ

Индуктивное доказательство того, что T (n) = 1, выглядит следующим образом:

Старт индукции.

Что такое Т (0)? 1 .

Шаг индукции.

Предположим, что для любого n> = 0 T (n) = 1. Теперь посмотрим, верно ли утверждение для T (n + 1).

T (n + 1) = 2 * T (n) - 1 = 2 * 1 - 1 = 1

< Сильный > Заключение .

T (n) = 1 для всех натуральных n. И 1 находится в O (1).

Ваша ошибка.

Первая ошибка, которую я нашел в вашем расчете, здесь:

T(n) = 2²(2T(n - 3) - 1) - 3
T(n) = 2³T(n - 3) - 2 - 3
                    ^ this should be a 4
2
bitmask 24 Апр 2017 в 15:53
T(n) = 2T(n-1) -1
     = 2(2T(n-2)-1) - 1 = 4T(n-2)-3 = (2^2)T(n-2)-(2^2-1)
     = 2(4T(n-3)-3) - 1 = 8T(n-3)-7 = (2^3)T(n-3)-(2^3-1)
     ...
     = (2^n)T(n-n)-(2^n-1) = (2^n)1 - 2^n + 1 = 1
1
Scott Hunter 24 Апр 2017 в 15:43