Як придумати потенціал підсумовування журналів
Розглянемо алгоритм BST що для кожного доступу до елемента x він переставляє лише елементи в шляху пошуку P з x, що називається до-шляху, в якесь дерево, яке називається після-дерево. Для будь-якого елемента a , нехай s ( a ) і s ′ ( a ) мають розмір піддерев'я, що кореняться до до і після перестановки відповідно. Так з ( ) і з ' ( ) може відрізнятися тоді і тільки тоді в ∈ P .AxPxas(a)s′(a)as(a)s′(a)a∈P
Крім того, тільки переставляє постійно багато елементів у шляху пошуку в будь-який момент. Назвемо цей тип алгоритму «локальним» алгоритмом. Наприклад, дерево splay є локальним. Він переставляє лише максимум 3 елементи одночасно за допомогою зигзагу та зигзагу.A
Тепер будь-який локальний алгоритм, який створює «багато» листя у після-дереві, як і splay дерево, має таке приємне властивість.
Ми можемо створити відображення таким, щоf:P→P
- Лінійно багато , де s ′ ( f ( a ) ) ≤ s ( a ) / 2 .a∈Pс'( f( a ) ) ≤ s ( a ) / 2
- Постійно багато , де s ′ ( f ( a ) ) може бути великим, але тривіально не більше n .a ∈ Pс'( f( а ) )н
- Інші елементи , s ′ ( f ( a ) ) ≤ s ( a ) .a ∈ Pс'( f( a ) ) ≤ s ( a )
Ми можемо побачити це, розгорнувши зміну шляху пошуку. Відображення насправді цілком природно. У цьому документі «Глобальний геометричний вигляд зйомки» точно показано деталі, як бачити вищезазначене спостереження.
Дізнавшись про цей факт, дуже природно вибирати потенціал підсумкових журналів. Тому що ми можемо використовувати потенційну зміну елементів типу 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)=∑e∈Spf(e).
Цей потенціал має природну інтерпретацію: якщо під час пошуку ми переходимо край ми зменшуємо простір пошуку від нащадків u до нащадків v , франкальне скорочення W ( u ) / W ( v ) . Наш фактор прогресу - логарифмічний показник цього «прогресу», звідси і його назва. [З розділу 2.4](u,v)uvW(u)/W(v)
Зауважте, що це майже однаковий потенціал Спадатора Тарджана, і він є добавкою для доріжок.
редагувати: Виявляється, це альтернативне визначення та інтуїція, що стоїть за ним, давно описав Курт Мелхорн. Дивіться його книгу "Структури даних та алгоритми" Том I, розділ III. 6.1.2 Сиві дерева, сторінки 263 - 274.