Екстракт бінарної купки потенціальної функції макс O (1)


10

Мені потрібна допомога у визначенні потенційної функції для максимальної купи, щоб витяг максимуму був завершений за амортизований час. Додам, що я не дуже добре розумію потенційний метод.O(1)

Я знаю, що функція вставки повинна "платити" більше, щоб знизити витрати на видобуток, і це має бути пов'язано з висотою купи (якщо дає висоту купа має бути або )log(n)2log(n)k=1n2log(k)

Відповіді:


13

Спробуйте наступне:

Вага елемента в купі - його глибина у відповідному бінарному дереві. Отже, елемент у корені має нульову вагу, двоє його дітей мають вагу 1 тощо. Ви визначаєте як потенційну функціюwiiH

Φ(H)=iH2wi.

Давайте зараз проаналізуємо операції купи. Для вставки ви додаєте новий елемент, додайте глибину не більше . Це збільшує потенціал на , і це можна зробити за час. Тоді ви "перекидаєте" новий елемент купи, щоб переконатися у властивості купи. Це займає час і залишає незмінними. Таким чином, витрати на вставку становлять .dlog(n)2dO(1)O(logn)Φ(H)O(log(n)+Δ(Φ(H)))=O(logn)

Тепер розглянемо витягMin . Ви виймаєте корінь і замінюєте його останнім елементом у купі. Це зменшує потенціал на , таким чином ви можете дозволити ремонтувати властивість купи, і тому амортизовані витрати тепер .2log(n)O(1)

Якщо у вас є загальне питання щодо потенційної функції, слід поставити це як інше питання.


Я впевнений, що ви праві, але я не зрозумів вставку. Чому не змінюється? Вибачте, якщо відповідь очевидна, але чи можете ви розширити ? Я не бачу, чому у вас там буде від’ємне числоΔ(Φ(H)))Δ
andrei

Δ(Φ(H)) позначає різницю потенціалів - до і після вставки. Це у випадку вставки не більше . Коли ви обмінюєтеся двома елементами в купі (пузир або пухир), то одна вага отримує +1, а інша отримує -1 зміну, таким чином потенціал (сума всіх ваг) залишається однаковим. 2log(n)
А.Шульц

Як проводиться ремонт O (1)? У чому полягає використання потенційної функції для ремонту купи? Поясніть, будь ласка,
Sohaib

@Sohaib: ремонт займає час , але час амортизується за допомогою вищезазначеної функції. Немає іншого використання потенційної функції, ніж аналіз амортизованих витрат. O(logn)O(1)
А.Шульц

@ A.Schulz Це, по суті, означає, що, враховуючи, що операція вилучення виконується n разів, оскільки кожен раз потенційна функція зменшуватиметься на 2logn (може або не збільшиться однаково при ремонті). Загальна складність для такої речі була б постійним часом, оскільки в кінцевому підсумку на дереві не було б вузла. Чи правий я?
Sohaib
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.