Розв’язання відношення рецидиву з параметром √n


18

Розглянемо рецидив

T(n)=nT(n)+cn

при з деякою позитивною константою , а .c T ( 2 ) = 1n>2cT(2)=1

Я знаю головну теорему для вирішення повторень, але я не впевнений, як ми могли б вирішити це відношення, використовуючи її. Як ви підходите до квадратного параметра кореня?


5
Основна теорема тут не застосовується; не можна записати як . Що ще ви спробували? nnnb
Рафаель

@Raphael: Я спробував метод субстракції, але, здавалося, застряг у тому, яке значення я повинен вибрати для заміни.
шукач

1
Як щодо "кілька разів розгорнути повторення, спостерігати за зразком, відгадувати рішення та доводити це "?
Рафаель

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

Оскільки ви згадуєте Теорему магістра, я припускаю, що вам потрібно вирішити це співвідношення для асимптотичних меж, і не дуже потрібне вираження закритої форми. Дано нижче, є кілька хороших рішень для пошуку виразу закритої форми, які також надають асимптотичну складність. Однак якщо вам потрібна лише асимптотична складність, аналіз простіший. Подивіться тут на гарне пояснення щодо пошуку асимптотичних складностей, із приємним інтуїтивним рішенням для вашої проблеми.
Paresh

Відповіді:


9

Ми будемо використовувати пропозицію Рафаеля і розгортаємо повторення. Далі всі логарифми є базовою 2. Отримуємо

β(n)β(n)=журналжурналу

T(n)=n1/2T(n1/2)+cn=n3/4T(n1/4)+n1/2cn1/2+cn=n7/8T(n1/8)+n3/4cn1/4+2cn=n15/16T(n1/16)+n7/8cн1/8+3cн=н2Т(2)+cнβ(н).
де - скільки разів вам потрібно взяти квадратний корінь, щоб почати з n, і досягти 2. Виходить, що . Як ви це бачите? Поміркуйте: Отже, кількість разів, що потрібно взяти квадратний корінь, щоб досягти 2, є рішенням до ,β(н)nβ(n)=loglogn
n=2lognn1/2=212lognn1/4=214logn
loglogncnloglogn+112tlogn1loglogn. Отже, рішенням рекурсії є . Щоб зробити це абсолютно суворим, ми повинні використовувати метод заміни і бути дуже обережними щодо того, як все закруглюється. Коли у мене буде час, я спробую додати цей розрахунок до своєї відповіді.cnloglogn+12н

"Ви повинні взяти квадратний корінь разів" - це те, що можна очікувати на початківця? Крім того, ваш результат не відповідає Ювалу; це призначено лише асимптотично? loglogn
Рафаель

@Raphael: Юваль допустив помилку, яку зараз виправив. Я поясню квадратний корінь у своїй відповіді.
Петро Шор

3
Ще одна ідея побачити, що рекурсія приймає , така: Беручи квадратний корінь ви вдвічі розряджаєте цифри, необхідні для двійкового подання . Отже, для вашого введення потрібно біт, і ви розділите розмір слова на 2 для кожного рівня рекурсії. Значить, ви зупиняєтесь після кроків. n n w = log n log w = log log nO(loglogn)nnw=lognlogw=loglogн
А.Шульц

10

У своєму коментарі ви згадали, що ви спробували заміну, але застрягли. Ось виведення, яке працює. Мотивація полягає в тому, що ми хотіли б позбутися множника праворуч, залишивши нам щось, що схоже на . У цьому випадку все виходить дуже добре: U(n)=U(нU(н)=U(н)+сометгодiнг

кг

Т(н)=н Т(н)+нтак, ділення на н ми отримуємоТ(н)н=Т(н)н+1і відпускати н=2м ми маємоТ(2м)2м=Т(2м/2)2м/2+1
Тепер давайте спростимо ще більше, за допомогою перехід до журналів (оскільки ). Нехай Ага! Це добре відомий повтор з рішенням Повертаючись до , ми маємо при цьому (і так ), Отже Slgн=(1/2)lgн S(m)=Θ(lgm)T(
S(m)=T(2m)2mso our original recurrence becomesS(m)=S(m/2)+1
S(m)=Θ(lgm)
n = 2 м m = lg n T ( n )T()n=2mm=lgn
T(n)n=Θ(lglgn)
T(n)=Θ(nlglgn) .

6

Якщо ви пишете вас T ( m ) = mm=logn .T(m)=m2T(m2)+c2m 

Тепер ви знаєте, що дерево рекурсії має висоту порядку , і знову не важко побачити, що це на кожному рівні, тому загальний час роботи знаходиться в: , який укладає для .O(logm)O(2m) O((logm)2m) O(nloglogn) n

У всьому, коли бачиш абон аn, добре перевірити логарифм.nab,a<b 

PS: Впевнений доказ повинен містити більше деталей, коли я їх пропустив.


2

Дотримуємось пропозиції Рафаеля, при : T ( n ) = T ( 2 2 k )n=22k

T(n)=T(22k)=22k1T(22k1)+c22k=22k1+2k2T(22k2)+c(22k+22k)==22k1+2k2++20T(220)+c(22k+22k++22k)=22k1+ck22k=(cloglogn+1/2)n.

Редагувати: Дякую Петру Шор за виправлення!


22k

22к

22knT(2)

1
T(n)=nT(n)+cn

1

Т(н)=н Т(н)+н=н1/2(н1/4 Т(н1/4)+н1/2)+н=н1-1/4 Т(н1/4)+2н.

к

Т(н)=н1-1/2кТ(н1/2к)+кн.

н1/2к=2к

н1/2к=2журналн=2кк=журналжурналн.

к=журналжурналн

Т(н)=н2Т(2)+нжурналжурналн.

2
Не могли б ви переписати своє зображення на MathJax? Ми відштовхуємо зображення з текстом як відповіді.
Зло

1
@PKG здається, що ваша редакція дещо відрізняється, і ви також пояснюєте кроки, можливо, ви могли б відповісти самостійно.
Зло
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.