Yayılma ağacı potansiyel işlevi: neden boyutların günlüklerini toplamalısınız?


16

Veri yapıları hakkında bir ders veriyorum ve önümüzdeki hafta başında dalak ağaçlarını kapatacağım. Yayvan ağaçlarla ilgili makaleyi defalarca okudum ve veri yapısının arkasındaki analiz ve sezgiye aşinayım. Ancak, Sleator ve Tarjan'ın analizlerinde kullandığı potansiyel işlev için sağlam bir sezgi bulamıyorum.

Analiz ağacındaki bir rasgele ağırlığı her öğe atayarak çalışır sonra boyut ayarlama, kökü alt ağaçtaki düğüm ağırlıklarının toplamı için bir düğümün . Daha sonra düğümün derecesini almak için bu değerin günlüğünü alırlar , böylece . Son olarak, ağacın potansiyel işlevi, tüm düğümlerin sıralarının toplamı olarak tanımlanır. s ( x ) x r ( x ) r ( x ) = log s ( x )wis(x)xr(x)r(x)=logs(x)

Bu potansiyel işlevin düzgün çalıştığını anlıyorum ve analizi takip edebiliyorum, ancak neden bu potansiyeli seçeceklerini anlamıyorum. Her düğüme bir boyut atama fikri bana mantıklı, çünkü boyutları özetlerseniz, ağacın ağırlıklı yol uzunluğunu elde edersiniz. Ancak, neden ağırlıkların kütüklerini almaya karar verdiklerini ve sonra bunları özetlediklerini anlayamıyorum - bunun karşılık gelen ağacın herhangi bir doğal özelliğini görmüyorum.

Yayvan ağacın potansiyel işlevi ağacın bazı doğal özelliklerine karşılık geliyor mu? Bu potansiyeli seçmelerinin "işe yarıyor" dışında özel bir nedeni var mı? (Özellikle merak ediyorum çünkü bu ders notları "analiz kara büyüdür. [N] o nasıl keşfedildiğine dair fikir")

Teşekkürler!


Bu "kara büyü" açıklamasını daha önce de duymuştum. Sleator ve Tarjan'a e-posta göndermeyi denedin mi?
jbapple

@jbapple "E-posta topluluğunun" yardım edebileceğini umduğum için henüz e-postayla göndermedim. Ayrıca, 30 yıl önce yaptıkları iş hakkında birisine ping atmanın mutlaka bir yanıt almayabileceğini düşündüm. :-)
templatetypedef

Onunla çok aşina değilim, ama sadece bakmak kağıt , çok kabaca ben tek nedeni onlar yerine eğer yayvan operasyonu, örneğin sonra potansiyel fonksiyonları tarafından küçük değişiklikler yapmak istiyorsanız olduğunu düşünüyorum ile veya hala her şey iyi çalışıyor gibi görünüyor (bunu kanıtlamadım ama sadece basit bir matematik ihtiyacı gibi görünüyor). Ama bunu olarak bırakırsak , o zaman amortisman analizi doğru olur, ancak iyi bir üst sınır ( gibi bir şey ) değildir. Ağacın herhangi bir özelliği ile ilgili değildir. log log l o g s ( m + n ) 2loglogloglogs(m+n)2
Saeed

Her zaman x derecesini "x'in torunlarını içeren ideal ikili arama ağacının derinliği" olarak kara kutuya aldım, ama bu kullanışlı sezgiden daha anımsatıcı bir şey.
Jeffε

Yanıtlar:


13

Günlük toplamı potansiyeli nasıl bulunur?

Diyelim BST algoritması dikkate elemanı için her erişim için o x , arama yolu tek öğeleri yeniden düzenler P ait x sonrası ağacının adlandırılan bazı ağaca öncesi yolu denir. Herhangi bir öğe için a , izin s ( a ) ve s ' ( a ) kökü altağacın boyutu bir önce ve sırasıyla yeniden düzenleme sonra. Yani ler ( a ) ve s ' ( a ) IFF farklı olabilir bir P .AxPxas(a)s(a)as(a)s(a)aP

Dahası, her an arama yolundaki sürekli olarak birçok öğeyi yeniden düzenler. Bu tür algoritmaya "yerel" algoritma diyelim. Örneğin, yayılma ağacı yereldir. Bir seferde en fazla 3 elemanı zig, zigzig ve zigzag ile yeniden düzenler.A

Şimdi, sonradan ağaçta yayılma ağacı gibi "çok" yapraklar oluşturan herhangi bir yerel algoritma aşağıdaki güzel özelliğe sahiptir.

Bir eşlemesi oluşturabiliriz .f:PP

  1. Birçok doğrusal vardır , burada s ' ( f ( a ) ) s ( a ) / 2 .aPs(f(a))s(a)/2
  2. Birçok sürekli vardır , s ' ( f ( a ) ) büyük ama trivially en fazla olabilir n .aPs(f(a))n
  3. Diğer elemanlar , s ( f ( a ) ) s ( a ) .aPs(f(a))s(a)

Bunu, arama yolu değişikliğini açarak görebiliriz. Haritalama aslında oldukça doğal. Bu yazıda, meyletme A Küresel Geometrik Görünüm , tam da yukarıdaki gözlem bakın nasıl ayrıntılarını gösterir.

Bu gerçeği bildikten sonra, günlük toplamı potansiyelini seçmek çok doğaldır. Çünkü tüm yeniden düzenlemeyi ödemek için tip-1 elemanların potansiyel değişimini kullanabiliriz. Dahası, diğer tip elemanlar için, potansiyel değişim için en fazla logaritmik ödeme yapmak zorundayız. Böylece, logaritma itfa edilmiş maliyetini türetebiliriz.

İnsanların bunun "kara büyü" olduğunu düşünmelerinin sebebi, önceki analizin arama yolundaki genel değişikliği "açığa çıkarmaması" ve gerçekten tek bir adımda neler olduğunu görmesidir. Bunun yerine, her bir "yerel dönüşüm" için potansiyel değişikliğini gösterirler ve daha sonra bu potansiyel değişikliklerin sihirli bir şekilde teleskopla birleştirilebileceğini gösterirler.

PS Kağıt, günlük toplamı potansiyelinin bir miktar sınırlamasını bile gösteriyor. Yani, erişim lommalarının sadece lokal algoritmaya ait günlüklerin toplamı potansiyeli ile karşılanabilirliği kanıtlanabilir .

Günlük toplamı potansiyelinin yorumlanması

Georgakopoulos ve McClurkin'in makalesinde BST potansiyelini tanımlamak için başka bir yol var, bu da Sleator Tarjan'ın makalesindeki günlük toplamı potansiyeliyle aynı. Ama bu bana iyi bir sezgi veriyor.

w(u)uW(u)uu

Şimdi, düğümlerdeki rütbeyi tanımlamak yerine, ilerleme faktörü olarak adlandırdıkları kenarlara rütbeyi tanımlarız .

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

S

Φ(S)=eSpf(e).

(u,v)uvW(u)/W(v)

Bunun neredeyse eşit Sleator Tarjan'ın potansiyeli olduğunu ve yollarda katkı maddesi olduğunu gözlemleyin.

edit: Bu alternatif tanım ve arkasındaki sezgi Kurt Mehlhorn tarafından uzun zaman önce tanımlandığı ortaya çıktı. "Veri Yapıları ve Algoritmalar" kitabına bakınız Cilt I, Bölüm III. 6.1.2 Yay Ağaçları, sayfa 263 - 274.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.