Как решить для этого рекуррента T (n) = T(n - 1) + lg(1 + 1/n), T(1) = 1?


Я застрял в этом повторении:

T(n) = T(n − 1) + lg(1 + 1/n), T(1) = 1?

Некоторое время, и кажется, что главный метод не может быть применен к этому.

3 4

3 ответа:

У нас есть:

lg(1 + 1/n) = lg((n + 1) / n) = lg(n+1) - lg(n)

Отсюда:

T(n) - T(n - 1) = lg(n + 1) - lg(n)

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

...

T(3) - T(2) = lg(3) - lg(2)

T(2) - T(1) = lg(2) - lg(1)

Добавляя и устраняя, получаем:

T(n) - T(1) = lg(n + 1) - lg(1) = lg(n + 1)

Или T(n) = 1 + lg(n + 1)

Отсюда T(n) = O(lg(n))

Такой же ответ, как и другой правильный ответ здесь, только доказанный по-другому.

Из заданной рекурренции создаются все следующие уравнения:

  • T (n) = T(n-1) + Log ((n+1)/n)
  • T (n-1) = T(n-2) + Log (n/(n-1))
  • .
  • .
  • .
  • T (2) = T (1) + Log (3/2)

Суммирование всех RHS и LHS в приведенных выше уравнениях приводит к:

  • T (n) = T(1) + Log(3/2) + Log(4/3)+... + Log ((n+1)/n)

Так как Log (a) + Log (b) = Log (ab),

  • T (n) = 1 + Log ((n+1)/2)
  • T (n) = Log (10) + Log ((n+1)/2) = Log (5n + 5) предполагая, что база равна 10 и используя 1 = Log1010

Поэтому T(n) = O (Log(5n + 5)) = O (Log (n))

Это не линейно, как утверждают некоторые люди. Это O(log(n)). Вот математический анализ:


Если вы начнете разворачивать рекурсию, то получите:

Введите описание изображения здесь

Если вы будете делать это до конца, у вас будет

Введите описание изображения здесь

Или в краткой форме:

Введите описание изображения здесь

Как только вы приблизите сумму с помощью интеграла, вы получите:

Введите описание изображения здесь

Наконец, если вы возьмете предел x - > бесконечность:

Вы увидите, что первая часть является Введите описание изображения здесь

, что дает вам окончательное решение log(x + 1), которое является O(log(n))