Bir veri yapısını hayal ettim, var mı?


27

Bu veri yapısını bulamadım, ancak bu alanda uzman değilim.

Yapı bir küme uygular ve temel olarak değişmez olan bir karşılaştırılabilir elemanlar dizisidir. Değişmeyen aşağıdadır (özyinelemeli olarak tanımlanmıştır):

Uzunluk 1 dizisi bir birleştirme dizisidir.

2 ^ n uzunluğunda bir dizi (n> 0 için) bir birleştirme dizisi iff:

  • ilk yarı bir birleştirme dizisidir ve ikinci yarı boş veya
  • ilk dizi dolu ve sıralanmış ve ikinci yarı bir birleştirme dizisidir.

Dizi doluysa, sıralandığını unutmayın.

Bir eleman eklemek için iki durumumuz var:

  • İlk yarı dolu değilse, ilk yarıya tekrarlı olarak yerleştirin.
  • İlk yarı dolu ise, ikinci yarıya tekrarlı olarak yerleştirin.
  • Özyinelemeli adımdan sonra, dizinin tamamı doluysa, yarımları birleştirin (sıralanır) ve orijinal uzunluğunun iki katı kadar yeniden boyutlandırın.

Bir öğe bulmak için, dizi dolduğunda ikili aramayı kullanarak iki yarıda da tekrarlayın. (Bu en fazla artan parça bulunduğundan verimli olmalıdır ).O(log(n))

Yapı mergesort'un statik bir versiyonu olarak düşünülebilir.

Bir eleman silmek için ne yapılması gerektiği belli değil.

Düzenleme: yapı anlayışı geliştirdikten sonra.


5
Sen tanımladın, bu yüzden var. Bence bazı noktaları düzeltmen gerekiyor. İlk olarak, değişmez # 2 beni tanımladığınız gibi orta dereceli ülkeler için geçerli göründüğü gibi kafamı karıştırıyor. İkincisi, elemanlar kaldırıldığında ne yaparsınız?
Raphael,

7
Sen hayal yukarı bunun hayal değil, bir veri yapısını, ...
Andrej Bauer

@Raphael Yorumlarınız için teşekkürler, düşüncelerinizi takip ederek tanımı geliştirdim. Kaldırılması için bir algoritma düşünmedim, sadece daha fazla zaman ayırmadan önce bu yapının literatürde olup olmadığını kontrol etmek istedim (ve Google'da bir şey bulamadım). İlk cümlenizde, Tanrı'yı ​​tanımlayabilirsiniz, ancak var mı? :)
pbaren

@Andrej Teşekkürler, İngilizce anadilim değil. (Sanırım senin de değil :)
pbaren

3
@Andrej: OP aslen " kesinlikle hayal edilmişti " anlamına geliyordu; "Yukarı" yerine "" yerine "değiştirdim. Her ikisi de dilbilgisi açısından doğrudur, ancak her ikisi de anlamını değiştirir. "Of" daha ilginç bir sondaj seçeneğiydi ...
András Salamon

Yanıtlar:


31

ABABO(logn)n), ancak alanı yalnızca sabit bir faktörle artırır. Evet, Overmars ve van Leeuwen sayesinde deamortized olabilir, ancak gerçekten yapmak zorunda kalmazsanız bunu yapmak istemezsiniz.

Bu notlar temelleri kapsar.

Önbellek kaygısız bakış dizileri, Bentley-Saxe ve van Emde Boas ağaçlarının steroidler üzerindeki mutant yavrularıdır.


4
Bunlar çok güzel yazılmış ve resimli notlar ve onları birçok kez referans olarak kullandım. Onları hazırladığınız için teşekkürler!
jbapple

Mekik ağaçlarının (önbellek bilgisiz dizileri sunan kağıdın ilk yarısından itibaren) vEB ağaçları ile nasıl ilişkili olduğunu görüyorum, fakat COLA'lar ile vEB ağaçları arasındaki ilişki nedir?
jbapple

2
Teşekkürler, bu materyal fikrin çok ilginç bir genellemesi gibi görünüyor. Her zaman veri yapılarının adım adım çalıştırabileceğiniz donmuş algoritmalar olduğunu düşünmüştüm, ancak bu sezginin yararlı bir biçimini bulamadım.
pbaren

İlk bağlantı başkaları için işe yaradı mı?
AT

Evet, denedim. (Ne yazık ki, bir Elsevier ödeme duvarına gider; üzgünüm!)
Jeffε

11

Bu, kütük yapılı birleştirme ağaçlarına veya önbellek bilgisiz göz alıcı dizilere (veya COLA'lara) benzer.

2k12i0i<k

2021

O(lgn)O(n)O(lg2n)

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.