Розв’язання відношення рецидиву з двома рекурсивними викликами


10

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

Для цього я задаю собі питання, який час виконання Т(н,p)T(n,p) було б у тому випадку, якщо хитрості завжди трапляються на певну частку 0<p120<p12 такий як p(н-1)p(n1) елементи знаходяться в лівій частині та (1-p)(н-1)(1p)(n1) знаходяться в правій перегородці (виїжджаючи 11 елемент, шарнір, посередині).

Це не повинно бути важким Т(н,p)T(n,p) дає верхню межу для найгіршого випадку, де pp є максимально неврівноважений дозволений розділ, як будь-який розділ з дробом >p>p будуть більш врівноваженими і матимуть менший час виконання та будь-яку фракцію <p<p не дозволяється.

Очевидно, що Т(н,12)T(n,12) найкращий випадок і Т(н,0)T(n,0)є найгіршим випадком швидкості. Обидва мають легкі відносини рецидивів, які є в будь-якому навчальному ресурсі. Але у мене немає поняття, як вчитисяТ(н,p)T(n,p)в загальному. Очевидним відношенням було б:

Т(н,p)=н+Т(p(н-1),p)+Т((1-p)(н-1),p)

T(n,p)=n+T(p(n1),p)+T((1p)(n1),p)

Тут я застряг. Я намагався шукати навколо, але вся література, яку я міг зрозуміти щодо алгоритмів ділення та підкорення, взяла буквально "поділ" і "обдурила" аналіз, використовуючи той факт, що розділи завжди рівні за розміром, об'єднуючи умови в один раз постійний.

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

PS: Мене не цікавлять асимптотика (що легко показати Θ(нжурналн)Θ(nlogn) для будь-якої постійної pp). Мене цікавить, наскільки стає повільнішим кікспортаpp стає менше, наприклад, мене цікавить співвідношення Т(н,0,25)Т(н,0,5)T(n,0.25)T(n,0.5).

PPS: Будучи випускником, я вибачаюся, якщо я зробив очевидні речі занадто довгими або недостатньо поясненими нетривіальностями. І хоча я не знаю, чи на це дивляться так сильно, як на інших веб-сайтах SE, зазначу, що це особистий інтерес, а не домашнє завдання.

Відповіді:


9

Як ви згадуєте, теорема Акра – Бацци показує, що рішення для повторенняТ(н,p)T(n,p) є О(нжурналн)O(nlogn) для усіх p(0,1)p(0,1). Однак це не виявляє природи залежності відpp. Для визначення останнього ми можемо використовувати підхід до дерева рекурсії.

В корені дерева рекурсії лежить інтервал {1,н}{1,n}. Двоє дітей це інтервали{1,,pн}{1,,pn} і {pн+1,,н}{pn+1,,n}, загальна довжина якої знову нn. Кожен з цих вузлів має двох дітей (якщо припуститинnдосить великий) тощо. Для простоти ми ігноруємо помилки округлення, тобто припускаємо, щоpнpn- ціле число; це лише технічність, і я б не переймався цим. Ми зупиняємо процес щоразу, коли вузол має максимум довжину11. Складність алгоритму пропорційна загальній довжині інтервалів у дереві. Колиp1/2p1/2, листя (вузли, на яких ми зупиняємо процес) мають різну глибину, і це ускладнює визначення загальної складності.

Ми можемо отримати просту верхню межу, зазначивши, що дерево має максимум журнал1-p(1/н)log1p(1/n) рівні: кожен вузол є щонайменше коефіцієнтом 1-p1pменший, ніж його батько. Так само, як і в аналізі наp=1/2p=1/2, загальна довжина інтервалів на будь-якому рівні не більше нn, і ми отримуємо верхню межу О(нжурнал1-p(1/н))O(nlog1p(1/n))на час роботи. З тих піржурнал1-p(1/н)=журналн/журнал(1-p)-1log1p(1/n)=logn/log(1p)1 і журнал(1-p)-1=-журнал(1-p)=p±О(p2)log(1p)1=log(1p)=p±O(p2) для малих pp, ми можемо записати це як О(нжурналн/p)O(nlogn/p).

Ось більш точний розрахунок. Розглянемо рівеньтt. Припустимо, ми не зупиняємо процес, досягнувши невеликого інтервалу. Ми можемо генерувати випадкову вершину, приймаючитt кроки, в кожному з яких ми ймовірно йдемо ліворуч (скажемо) pp і правильно (сказати) з вірогідністю 1-p1p. Щоразу, коли ми робимо лівий крок, журнал довжини інтервалу зменшується на-журналplogp, і кожного разу, коли ми робимо правильний крок, він зменшується на -журнал(1-p)log(1p). Вершина знаходиться у фактичному дереві журналу довжини, зменшеної щонайменшежурналнlogn. Загальна вага інтервалів за рівнемтt дерева - це саме ймовірність того, що вершина, сформована відповідно до цього процесу, відповідає максимуму зменшення журналнlogn. Тобто, якщоDD - це розподіл, який дорівнює -журналplogp з вірогідністю pp і до -журнал(1-p)log(1p) з вірогідністю 1-p1p, і Х1,,ХтDX1,,XtD незалежні, то загальна вага рівня тt є Пр[Х1++Хтжурналн]Pr[X1++Xtlogn]. Для суперконстантатt, випадкова величина Х1++ХтX1++Xt приблизно нормально розподілений із середнім [-pжурналp-(1-p)журнал(1-p)]т[plogp(1p)log(1p)]t і дисперсія лінійна в тt, так для тt задовольняючи [-pжурналp-(1-p)журнал(1-p)]т(журналн)/2[plogp(1p)log(1p)]t(logn)/2, скажімо, ймовірність буде дуже близькою 11, в той час як для тt задовольняючи [-pжурналp-(1-p)журнал(1-p)]т2журналн[plogp(1p)log(1p)]t2logn, скажімо, це буде дуже близько до нуля. Визначеннягод(p)=-pжурналp-(1-p)журнал(1-p)h(p)=plogp(1p)log(1p) (відома як функція бінарної ентропії), ми робимо висновок, що час роботи Θ(нжурналн/год(p))Θ(nlogn/h(p)) (рівномірний в pp, як нn). Якp0p0 ми маємо год(p)-pжурналph(p)plogpі тому наша попередня оцінка не була тісною.

Інший спосіб дивитися на той же аналіз - це наявність нескінченної послідовності незалежних випадкових величин Х1,Х2,X1,X2, як і раніше, і визначаючи час зупинки ТT бути вперше тt такий як Х1++ХтжурналнX1++Xtlogn. Тоді час роботи пропорційнийнЕ[Т]nE[T]. Тоді теорема про елементарне оновлення говорить про цеlimнЕ[Т]/журналн=1/Е[D]=1/год(p)limnE[T]/logn=1/E[D]=1/h(p), маючи на увазі, що загальний розмір інтервалів дорівнює (1+о(1))нжурналн/год(p)(1+o(1))nlogn/h(p). Точніше, для кожної постійноїpp загальний розмір інтервалів - (1+αp(н))нжурналн/год(p)(1+αp(n))nlogn/h(p), де αp(н)=о(н)αp(n)=o(n). Збіжність у теоремі елементарного відновлення експоненціальна у часовому параметрі -журналнlogn у нашому випадку - так має бути поліном в нn, це є, αp(н)=О(н-Сp)αp(n)=O(nCp). Зближення також, ймовірно, є рівномірним дляp(δ,1-δ)p(δ,1δ) для будь-якого δ>0δ>0.


Підводячи підсумок, загальна довжина інтервалів у дереві рекурсії, пропорційна часу виконання, має наступну форму для кожного pp: Т(н,p)=(1+о(1))нжурналнгод(p),

T(n,p)=(1+o(1))nlognh(p),
де журналнlogn і год(p)=-pжурналp-(1-p)журнал(1-p)h(p)=plogp(1p)log(1p) приймаються на ту саму базу, що і о(1)o(1) є функцією залежно від pp і прагнуть до 00 з нn.

Причому, мабуть, правда, що для будь-якого δ>0δ>0 і будь-який p(δ,1-δ)p(δ,1δ) вірно, що загальна довжина інтервалів має форму Т(н,p)=(1+О(н-Сδ))нжурналнгод(p),

T(n,p)=(1+O(nCδ))nlognh(p),
де Сδ>0Cδ>0 а прихована велика константа O залежить лише від δδ. Зокрема, має бути так, що для всіх постійнийp1,p2p1,p2, limнТ(н,p1)Т(н,p2)=год(p2)год(p1),
limnT(n,p1)T(n,p2)=h(p2)h(p1),
і конвергенція поліноміально швидка.

Дякую за швидку відповідь Ювал. Мене трохи бентежить те, що ти використовувавΘΘ у вашому резюме. год(p)h(p) є постійною, і це не означає, що це не має значення під ΘΘ? Я вирішив написати невелику програму тестування , яка показала, що длян=100000000000000n=100000000000000 порівняння Т(н,0,1)/Т(н,0,5)T(n,0.1)/T(n,0.5)між аналітичним методом та обчислювальним виявив помилку 0,03. Це здається досить великим, чи цього можна очікувати?
orlp

Постійна в ΘΘ є рівномірним в pp. Точніше, для деяких константc,Сc,C це справа в тому, що для кожного pp існує NpNp такий, що для нNpnNp, cнжурналн/год(p)Т(н,p)Снжурналн/год(p)cnlogn/h(p)T(n,p)Cnlogn/h(p). Можливо, ви можете отримати ще сильніший виклад формиТ(н,p)=(1+о(1))Снжурналн/год(p)T(n,p)=(1+o(1))Cnlogn/h(p) для кожного фіксованого pp, де маленький о відносно нn (але може залежати від pp); СCне повинно залежати відpp.
Yuval Filmus

Конвергенція до межі залежить від журналнlogn, тож вам може знадобитися журналнlognбути великим, щоб отримати дійсно гарне наближення. З іншого боку, відносна помилка 0,03 не здається такою великою. Можна спробувати виправитинn і побудувати графік часу роботи як функції pp, порівнюючи його з 1/год(p)1/h(p).
Yuval Filmus

О, вибачте, я не мав на увазі відносну помилку 0,03, а абсолютну (2,13222 проти 2,10339). ПлоттуванняТ(н,p)T(n,p) як функція pp, щодо 1/год(p)1/h(p) дали відносну різницю в 4%, з Т(1011,0,05)год(0,05) 96% від Т(1011,0,4)год(0,4).
orlp

1
Суперконстанта - це функція, що має тенденцію до нескінченності відносно відповідної змінної (у цьому випадку н). Це те саме, щоω(1).
Yuval Filmus
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.