Как решить эту проблему итеративным методом ...? - PullRequest
0 голосов
/ 21 октября 2018

Я пытался, но не смог найти большую букву T (n) = 3t (n / 3) + n / lg (n). Может кто-нибудь, пожалуйста, дайте мне решение

1 Ответ

0 голосов
/ 21 ноября 2018

Хороший способ визуализировать эту проблему - это Рекурсивная Диаграмма Дерева.

Здесь изображены первые три уровня дерева.

Для первого уровня,у нас есть общая работа n / lg n

Для второго уровня у нас есть 3 вызова (n/3) / lg (n/3).Суммирование этих вызовов дает суммарную работу n / lg (n/3) на этом уровне.

Для третьего уровня у нас есть 9 вызовов (n/9) / lg (n/9).Суммирование этих вызовов дает общую работу n / lg (n/9) или n / lg (n/3^2) на этом уровне.

Рекурсивные вызовы будут продолжаться до тех пор, пока мы не получим вызов T (1).Это условие выполняется при n/3^k = 1 или k = log3(n)

Так что теперь у нас есть простое суммирование всех уровней, равное this.

n является константойи может быть выведено из уравнения.Расширение суммирования затем дает это уравнение.

Мы можем упростить это суммирование , как показано здесь.

В Большой тэте суммирование может быть упрощенодо Θ(n*(1+log(logn)), поскольку суммирование представляет собой гармонический ряд.

Упрощая еще больше, мы имеем Θ(n+n*log(logn)), и в соответствии с правилами Большой Тэты мы можем упростить до окончательной Большой Тета Θ(nlog(logn)) в качестве первогоn будет расти медленнее и не имеет большого значения в нашем конечном уравнении.

Но подождите!Вы попросили Big O. К счастью, Big Theta предоставляет как верхнюю, так и нижнюю границу для проблемы.Большой О обеспечивает только верхнюю границу.Что это значит для нас?Большая Тэта на самом деле является Большой О, но не наоборот, позволяя вам сказать, что рекуррентное отношение составляет O(nlog(logn)).

Надеюсь, это поможет!

...