Функція потенціалу дерева Splay: навіщо підсумовувати журнали розмірів?


16

Я викладаю курс з структур даних і на початку наступного тижня буду висвітлювати грі дерева. Я читав статтю про splay дерева багато разів і знайомий з аналізом та інтуїцією, що стоїть за структурою даних. Однак, я не можу знайти тверду інтуїцію щодо потенційної функції, яку Sleator та Tarjan використовують у своєму аналізі.

Аналіз працює, присвоївши кожному елементу в дереві довільну вагу шi , встановивши розмір с(х) вузла, що буде сумою ваг вузлів у піддереві, корінням на х . Потім вони беруть журнал цього значення, щоб отримати ранг r(х) вузла, тому r(x)=logs(x) . Нарешті, потенційна функція дерева визначається як сума рангів усіх вузлів.

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

Чи відповідає потенційна функція схильного дерева деякій природній властивості дерева? Чи є якась причина, окрім "це працює", що вони обрали б цей потенціал? (Мені особливо цікаво, тому що в цьому наборі курсу звичайно згадується, що "аналіз - це чорна магія. [N] o ідея, як виявлено")

Спасибі!


Також я чула це пояснення "це чорна магія". Чи спробували ви надіслати електронною поштою Слягаря та Тарджана?
jbapple

@jbapple Я ще не надіслав їх електронною поштою, оскільки сподівався, що "громада взагалі" зможе допомогти. Я також подумав, що подзвонити комусь про роботу, яку вони робили 30 років тому, не обов'язково може викликати відповідь. :-)
templatetypedef

Я не дуже знайомий з цим, але я дуже грубо дивлюся на папір , я думаю, що єдиною причиною є те, що вони хочуть змінити потенційні функції після операції splay, наприклад, якщо ми замінимо на журнал журналу або на l o g ∗, здається, все працює добре (я не довів це, але, здається, потрібна проста математика). Але якщо ми залишимо це як s , тоді цей амортизаційний аналіз поки є правильним, але це не є гарним верхньою межею (щось на кшталт ( m + n ) 2 ). Це взагалі не пов’язано ні з якою властивістю дерева. loglogloglogs(m+n)2
Саїд

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

Відповіді:


13

Як придумати потенціал підсумовування журналів

Розглянемо алгоритм BST що для кожного доступу до елемента x він переставляє лише елементи в шляху пошуку P з x, що називається до-шляху, в якесь дерево, яке називається після-дерево. Для будь-якого елемента a , нехай s ( a ) і s ( a ) мають розмір піддерев'я, що кореняться до до і після перестановки відповідно. Так з ( ) і з ' ( ) може відрізнятися тоді і тільки тоді в P .AxPxas(a)s(a)as(a)s(a)aP

Крім того, тільки переставляє постійно багато елементів у шляху пошуку в будь-який момент. Назвемо цей тип алгоритму «локальним» алгоритмом. Наприклад, дерево splay є локальним. Він переставляє лише максимум 3 елементи одночасно за допомогою зигзагу та зигзагу.A

Тепер будь-який локальний алгоритм, який створює «багато» листя у після-дереві, як і splay дерево, має таке приємне властивість.

Ми можемо створити відображення таким, щоf:PP

  1. Лінійно багато , де s ( f ( a ) ) s ( a ) / 2 .aPс'(f(а))с(а)/2
  2. Постійно багато , де s ( f ( a ) ) може бути великим, але тривіально не більше n .аПс'(f(а))н
  3. Інші елементи , s ( f ( a ) ) s ( a ) .аПс'(f(а))с(а)

Ми можемо побачити це, розгорнувши зміну шляху пошуку. Відображення насправді цілком природно. У цьому документі «Глобальний геометричний вигляд зйомки» точно показано деталі, як бачити вищезазначене спостереження.

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

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

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

Інтерпретація потенціалу суми журналів

Існує ще один спосіб визначити потенціал BST у роботі Георгакопулоса та статті МакКлуркіна, який по суті такий же, як потенціал підсумовування журналів у роботі Sleator Tarjan. Але це дає мені добру інтуїцію.

Тепер переходжу до позначення паперу. Кожному вузлу u призначаємо вагу . Нехай W ( U ) є сумою ваги ˙U «s поддерева. (Це лише розмір піддрева u , коли вага кожного вузла дорівнює одному.)w(u)uW(u)uu

Тепер, замість того, щоб визначати ранг на вузлах, ми визначаємо ранг до ребер, які вони назвали коефіцієнтом прогресу .

pf(e)=log(W(u)/W(v)).

А потенціал дерева єS

Φ(S)=eSpf(e).

Цей потенціал має природну інтерпретацію: якщо під час пошуку ми переходимо край ми зменшуємо простір пошуку від нащадків u до нащадків v , франкальне скорочення W ( u ) / W ( v ) . Наш фактор прогресу - логарифмічний показник цього «прогресу», звідси і його назва. [З розділу 2.4](u,v)uvW(u)/W(v)

Зауважте, що це майже однаковий потенціал Спадатора Тарджана, і він є добавкою для доріжок.

редагувати: Виявляється, це альтернативне визначення та інтуїція, що стоїть за ним, давно описав Курт Мелхорн. Дивіться його книгу "Структури даних та алгоритми" Том I, розділ III. 6.1.2 Сиві дерева, сторінки 263 - 274.

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