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


10

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

Для цього я задаю собі питання, який час виконання Т(н,p)T(n,p) було б у тому випадку, якщо хитрості завжди трапляються на певну частку 0<p≤120<p≤12 такий як ⌊p(н-1)⌋⌊p(n−1)⌋ елементи знаходяться в лівій частині та ⌈(1-p)(н-1)⌉⌈(1−p)(n−1)⌉ знаходяться в правій перегородці (виїжджаючи 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(n−1)⌋,p)+T(⌈(1−p)(n−1)⌉,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. Складність алгоритму пропорційна загальній довжині інтервалів у дереві. Колиp≠1/2p≠1/2, листя (вузли, на яких ми зупиняємо процес) мають різну глибину, і це ускладнює визначення загальної складності.

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

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

Інший спосіб дивитися на той же аналіз - це наявність нескінченної послідовності незалежних випадкових величин Х1,Х2,…X1,X2,… як і раніше, і визначаючи час зупинки ТT бути вперше тt такий як Х1+⋯+Хт≥журналнX1+⋯+Xt≥logn. Тоді час роботи пропорційнийнЕ[Т]nE[T]. Тоді теорема про елементарне оновлення говорить про цеlimн→∞Е[Т]/журналн=1/Е[D]=1/год(p)limn→∞E[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(n−Cp). Зближення також, ймовірно, є рівномірним для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−(1−p)log(1−p) приймаються на ту саму базу, що і о(1)o(1) є функцією залежно від pp і прагнуть до 00 з нn.

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

T(n,p)=(1+O(n−Cδ))nlognh(p),
де Сδ>0Cδ>0 а прихована велика константа O залежить лише від δδ. Зокрема, має бути так, що для всіх постійнийp1,p2p1,p2, limн→∞Т(н,p1)Т(н,p2)=год(p2)год(p1),
limn→∞T(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 такий, що для н≥Npn≥Np, 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.