Вирішення рециркуляції поділу та підкори, якщо коефіцієнт розбиття залежить від


20

Чи існує загальний метод вирішення повторення форми:

T(n)=T(nnc)+T(nc)+f(n)

для , або загальнішеc<1

T(n)=T(ng(n))+T(r(n))+f(n)

де є деякими підлінійними функціями .g(n),r(n)n

Оновлення : Я пройшов посилання, подані нижче, а також проніс усі рецидивні відносини в замітках Джеффа Еріксона . Ця форма рецидиву ніде не обговорюється. Метод Аккра-Базі застосовується лише тоді, коли розкол є дробовим. Будь-яка поважна посилання буде надана.


2
Спробуйте створити функції.
saadtaame

1
Чи застосовується метод Акра-Бацці ? Він дає лише оцінки O() , але цього може бути достатньо.
vonbrand

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

1
Ознайомтеся з роздатковими матеріалами Тома Лейтона на тему "Примітки щодо кращих головних теорем для повторень поділу і перемоги", вони доступні в мережі. Можливо, ви можете пристосувати доказ Акра-Бацци там до вашої справи.
vonbrand

1
@EngrStudent Функції генерації були запропоновані в першому коментарі. :)
Рафаель

Відповіді:


6

Скажімо, у вас є рецидив що знаходиться в діапазоні від позитивних результатів.

T(n)={T(nnc)+T(nc)+f(n)n > 21otherwise

Що ми можемо зробити з цією функцією? Ну, не багато, якщо ми не накладемо на неї певні структури. Я прийшов із чисельного аналізу аналізу, який викладений числовими рецептами, який якимось чином працює, навіть коли основна проблема або недостатньо гладка (не має значення, давайте все-таки кинемо метод Ньютона при його розділених відмінностях) або занадто складна для аналізу (сортування як ця проблема). Моя реакція кишок на ці проблеми полягає в тому, щоб зробити певне рукоподібне припущення, схрестити пальці і сподіватися на краще. У цьому випадку це, здається, дає відносно хороші межі.

Зокрема, я хочу зробити два основні припущення. Одне з цих припущень є більш-менш необґрунтованим, але без нього ми не будемо дуже далеко. Інший має дещо приємну візуальну інтуїцію, яку можна, сподіваємось, рипнути, але вона все-таки більш ручна, ніж усе інше.

  1. Я буду вважати, що є "гладким". Досить легко побачити, що T ( n ) не скрізь диференційований. Насправді це навіть не безперервно, оскільки для f ( n ) = log ( n ) і c = 1T(n)T(n)f(n)=log(n) ,limn2-T(n)=1іlimn2+T(n)=2+ln2. Тому, з огляду на ітерованих картипородженіпc=12limn2T(n)=1limn2+T(n)=2+ln2 абоnn-nn ,T(n)буде містити розрив уn,якщо його дерево ітерації містить2десь у своїй траєкторії. Це дуже багато розривів, це може навіть дати функцію Діріхле запустити гроші. Якщо ми доходимо до того, що ми порівнюємо поведінку функції з поведінкою прототипічного прикладу нікуди безперервної функції, чи не смішно намагатися стверджувати, що вона є "гладкою"? Що ж, виявляється, що на практиці наслідки цих розривів асимптотично зменшуються, до того, що ваш графік виглядає майже гладким, колиnnnnT(n)n2nпрагне до нескінченності! Тому я пропоную, щоб ми відклали свої вили і просто дивилися в іншому випадку. Зокрема, я припускаю, що у будь-якій точці інтересу яка знаходиться досить далеко від походження, T ( n ) є диференційованою або, принаймні, приблизно диференційованою навколо деякого сусідства.nT(n)
  2. Я також припускаю ще сильнішу позицію плавності, коли досить далеко. Припустимо, що α ( n ) є деякою підлінійною функцією, такою, що n > α ( n ) (наприклад, n c ), тоді похідна T ( ξ ( n - α ( n ) , n ) не суттєво змінюється, коли α ( n ) досить повільний. Інтуїтивно зрозумілий, як nnα(n)n>α(n)ncT(ξ(nα(n),n)α(n)nзбільшується, відносний розмір сусідства зменшується (оскільки його розмір просто α ( n ) , який росте набагато повільніше, ніж n ). Врешті-решт розмір цього мікрорайону стає настільки незначним (відносно n ), що швидкість зміни T ( n ) у межах цього мікрорайону вже не змінюється все, що різко.(nα(n),n)α(n)nnT(n)

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

Почнемо із відношення рецидиву: Тепер я припускаю, щоTдосить рівний на проміжку міжn-ncіn. Звертаючись до одного з наших класичних аналітичних інструментів, теореми середнього значення, дає нам T(n)-T(n- n c )

T(n)=T(nnc)+T(nc)+f(n)T(n)T(nnc)=T(nc)+f(n)ncT(n)T(nnc)nc=T(nc)+f(n)
Tnncn Крім того, колиnє достатньо великим, ми припускаємо, щоT(ξ)приблизно однаковий протягом цього інтервалу, а значить, приймає значення будь-якої з кінцевих різниць і в цьому інтервалі. Це означає, що T(ξ)T(n)-T(n-ϵ)
T(n)T(nnc)nc=T(ξ(nnc,n)).
nT(ξ) Зокрема, візьмемоϵ=1,щоб отримати однокрокове розділене наближення різниці n c ( T ( n ) - T ( n - 1 ) )
T(ξ)T(n)T(nϵ)ϵ    ϵ<nc
ϵ=1 Ми можемо це зробити телескопом, щоб отримати T(n)nkT(kc)
nc(T(n)T(n1))T(nc)+f(n)T(n)T(n1)T(nc)+f(n)nc
T(n)knT(kc)kc+knf(k)kc

Збурення виявляє, що T ( n ) має дві асимптотичні фази, залежно від асимптотичної природи f ( z ) .T(n)T(n)f(z)

f(n)=o(nc)fncT(n)=Θ(knf(k)kc)nf(x)xcdx

f(n)=ω(nc)

(knT(kc)kc)+Fc(n)
Fc(n)=nf(x)xcdx

nT(xc)xcdx

kT(kc)kcnf(xc)xcdx=nT(ξ<nc)ξc
nT(nc)nc
T(n)nMT(nc)nc+Fc(n)
M

(n,nc,nc2,nc3,,nck)nck<2

(*)T(n)n(ik1MinciFc(nci)+Mknck)
Fc(nci)
T(n)=O(Fc(n)+nFc(nc)(Mnc+M2nc2++Mknck))
k=logc(log(2)log(n))Mncnck
T(n)=O(nkFc(n)Mk)

However, this bound is relatively loose, and you should refer to (*) whenever possible.

Be aware that in no way is this rigorous. I have not provided any support that this ought to work beyond some clumsy approximations. Nevertheless, if you just need a quick asymptotic guess for the sake of informal analysis, then you can actually see that this scheme works well (for large enough values of n, usually n>10 suffices) in practice.

Anyways, for all of the choices of c and f that I've tried, the following computation

T^(n)=nklogclogn2MknckF(nck)F(n)=knf(k)kc
where
MkT(kc)kcnT(nc)nc
seems to give good approximations. This technique also generalizes to recurrences of the form
T(n)=T(nα(n))+T(β(n))+f(n)
which can be approximated with
T^(n)=nk#β(n)Mkαk(n)F(βk(n))F(n)=knf(k)α(k)
where αk(n)=α(k(α(n))) and #β(n) denotes the number of elements of the sequence n,β(n),β(β(n)),,β#β(n)(n) such that the last term is between 1 and 2.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.