Найти theta of: T (n) = T (n ^ (1/2)) + 1

71
10

Я пробовал это в течение многих часов, и я продолжаю прибывать в лог (logn) (где log является базой 2), но это не согласуется с теоремой Masters, которая утверждает, что это будет просто log (n).

спросил(а) 2014-02-14T21:51:00+04:00 6 лет, 7 месяцев назад
1
Решение
69

Здесь не применима теорема о мастер-теореме, так как мы не делим вход на константу на каждом шаге. Ваш ответ правильный.

ответил(а) 2014-02-14T21:53:00+04:00 6 лет, 7 месяцев назад
57

Чтобы применить основную теорему, мы должны делить на каждый шаг постоянную. Мы все еще можем использовать его в этом случае, но мы должны преобразовать проблему.

Пусть k=log n, где логарифм является базой b и определим S(k)=T(b^k). Тогда S(k)=T(b^k)=T(n)=T(n^{1/2})+1=T((b^k)^{1/2})+1=T(b^{k/2})+1=S(k/2)+1, и мы можем применить теорему Мастера к S, которая говорит нам, что S(k)=Theta(log k). Следовательно, T(n)=T(b^{log n})=S(log n)=Theta(log(log n)), как вы нашли.

ответил(а) 2014-02-15T01:14:00+04:00 6 лет, 7 месяцев назад
40

Люди правильно предположили, что теорема мастеров здесь не работает. Чтобы решить вашу проблему, вы должны начать разворачивать рекурсию: enter image description here.

Рекурсия в какой-то момент остановится, поэтому мы должны найти разумную точку остановки. Попытка 0, 1, 2, вы можете видеть, что 2 выглядит хорошо, потому что вы можете легко решить уравнение: enter image description here.

Решив это, вы получите enter image description here.

Таким образом, рекурсия будет продолжать log(log(n)) раз, и это ваша временная сложность.

PS немного сложнее рецидивы были решены здесь.

ответил(а) 2015-12-16T14:29:00+03:00 4 года, 9 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема