2001: İdeal Haş Ağaçları ve 2000 selefi, Hızlı ve Yer Verimli Trie Araştırmaları , Phil Bagwell : Clojure'un standart kütüphanesinde görünüşe göre temel yapı taşı olarak kullanıldı.
2001: Öncelikli Arama Kuyrukları için Basit Bir Uygulama Tekniği , Ralf Hinze : Bu önemli veri yapısını uygulamak için gerçekten basit ve güzel bir teknik (dijkstra algoritmasında faydalıdır). Uygulama, "görünüm kalıplarının" yoğun kullanımı nedeniyle özellikle güzel ve okunabilir.
2002: Ralf Hinze tarafından tek taraflı esnek dizileri önyükleme : Okasaki'nin rasgele erişim listelerine benzer, ancak bunlar arasında cons
ve indeksleme arasındaki zaman değişimini değiştirmek için ayarlanabilirler .
2003: Radu Mihaescu ve Robert Tarjan'dan yeni katlanabilir ve katlanamayan deques : Okasaki'nin (Kaplan ve Tarjan'ın çalışmasının en son versiyonu 2000 yılında yayınlandı ) söylediği bazı eski çalışmaları (Kaplan ve Tarjan tarafından ) aldı. Bu sürüm bazı yönlerden daha basittir.
2005: Maxifobik yığınlar ( bildiri ve kod ), Chris Okasaki : Yeni, daha verimli bir yapı olarak değil, öncelik sıralarını öğretmenin bir yolu olarak sunuldu.
2006: Tamamen İşlevsel En Kötü Durum Sabit Zamanlı Katlanabilir Sıralı Listeler , Gerth Stølting Brodal, Christos Makris ve Kostas Tsichlas tarafından : O (lg n) ekleme, arama ve silme ve O ile bir yapı göstererek Kaplan ve Tarjan'ın çarpıcı bir sorusunu yanıtlıyor (1) concat.
2008: Etkili Sürüm Kontrolü Konfluenti Kalıcı Denemeler , Erik D. Demaine, Stefan Langerman ve Eric Price : Yaprakların yakınında etkili gezinme ve değişiklik yapma denemeleri için çeşitli veri yapıları sunar. Bazıları tamamen işlevseldir. Diğerleri ise Dietz ve ark. tamamen kalıcı (ancak birleşik olarak kalıcı olmayan veya tamamen işlevsel olmayan) diziler için. Bu makale aynı zamanda , bazen "dinamik ağaçlar" olarak adlandırılan tamamen işlevsel link kesimli ağaçlar da sunmaktadır .
2010: Kırmızı-siyah ağaçlar için tamamen işlevsel bir silme algoritması , Matt Might : Okasaki'nin kırmızı-siyah ağaç yerleştirme algoritması gibi, bu yeni bir veri yapısı veya veri yapısı üzerinde yapılan yeni bir işlem değil, yeni ve daha basit bir yoldur. bilinen bir işlem yazın.
2012: RRB-Ağaçları: Phil Bagwell ve Tiark Rompf'dan Verimli Sayılabilir Vektörler : Dizini korurken değiştirilemez vektör birleştirme, ekleme ve O (lg n) zamanına ayırma işlemlerini destekleyen ve değiştirilemeyen vektör bitiştirmeyi destekleyen Hash Array Eşlenmiş Denemelerin bir uzantısı ve orijinal değişmez vektörün yerleştirme hızları.
Dengeli arama ağacının diğer birçok stilleri . AVL, erkek kardeş, rütbe dengeli, sınırlı dengeli ve diğer birçok dengeli arama ağacı tamamen yol kopyalama yoluyla işlevsel olarak uygulanabilir (ve uygulanmıştır). Belki de özel sözleri hakediyoruz:
- Önyargılı Arama Ağaçları , Samuel W. Bent, Daniel D. Sleator ve Robert E. Tarjan : Brodal ve arkadaşlarının 2006 makalesinde ve Demaine ve arkadaşlarının 2008 makalesinde önemli bir unsurdur.
Martín Escardó'dan hızlı ve ayrıntılı bir arama yapan Sınırsız kümeler : Belki de bir veri yapısı değil .
Braun Ağaçlar üzerinde üç algoritma, Chris Okasaki : Braun ağaçlar, en kötü durumda O (lg n) 'de birçok yığın işlemi sunuyor. Bu sınır diğer birçok veri yapısı tarafından aşılır, ancak Braun ağaçlarcons
ikinci argümanında tembelbirişlem yapar ve bu nedenle diğer yapıların yapamayacağı bazı şekillerde sonsuz yığınlar olarak kullanılabilir.
Gevşemiş min-max yığını: Birleştirilebilir çift uçlu öncelik sırası ve KD yığını: Yuzheng Ding ve Mark Allen Weiss'ın verimli bir çok boyutlu öncelik sırası : Bunlar, gazetelerde tartışılmasa da, tamamen işlevseldir. . Elde edilen zaman sınırlarının, parmak ağaçlarını (Hinze & Paterson veya Kaplan ve Tarjan) k boyutlu öncelik sıraları olarak kullanarak elde edilebileceklerden daha iyi olduğunu sanmıyorum, ancak Ding & Weiss'ın yapılarının daha az yer kullandığını düşünüyorum. .
Gérard Huet tarafından Fermuar : Diğer birçok veri yapısında (Hinze & Paterson'ın parmak ağaçları gibi) kullanılır, bu bir veri yapısını içten dışa döndürmenin bir yoludur.
Fark listeleri , olağan cons
listelerine O (n) dönüşümü olan O (1) katlanabilir listelerdir. Görünüşe göre, Prolog topluluğundaki eskilikten beri bilinenler, burada olağan cons
listelerine O (1) dönüşümü var . Geleneksel işlevsel programlamada O (1) dönüşümü imkansız gibi gözükse de, POPL '98'den Minamide'nın delik soyutlaması , saf işlevsel programlama içinde O (1) eklenmesi ve O (1) dönüşümüne izin vermenin bir yolunu tartışıyor. İşlev kapanmalarına dayanan fark listelerinin olağan işlevsel programlama uygulamalarından farklı olarak, delik soyutlamaları temel olarak Prolog fark listeleriyle aynıdır (hem kullanımlarında hem de uygulamalarında). Ancak, yıllarca bunu farkeden tek kişiMinamide'nin yorumcularından biri .
O(n−−√)Θ(nlgn)Θ(nlgn−−−−−√)Θ(lg2n)
O(m)mO(lglgn)
1989: Cecilia R. Aragon ve Raimund Seidel'den Randomize Arama Ağaçları : Bunlar, Guy E. Blelloch ve Margaret Reid-Miller
tarafından Treaps Kullanarak Hızlı Ayar İşlemlerinde ve Fonksiyonel Set İşlemlerinde Dan Blandford ve Guy Blelloch tarafından tamamen işlevsel bir ortamda tartışıldı. Davranışlar ( kod). Tamamen işlevsel parmak uçları ve önyargılı arama ağaçlarının tüm işlemlerini sağlarlar, ancak onları tamamen işlevsel olmayan bir rastgele kaynak gerektirir. Bu aynı zamanda, operasyonları zamanlayabilen ve uzun olanları tekrarlayabilen bir muhalif varsayarak, işlemlerin zaman aşımına uğramasına neden olabilir. (Bu, zorunlu amortisman argümanlarının kalıcı bir ortamda geçerli olmamalarının nedeni aynıdır, ancak kronometreli bir rakip gerektirir)
1997: Skip-ağaçları, eşzamanlı bir yaklaşımla Skip-listelerine alternatif bir veri yapısı olan Xavier Messeguer ve Skip Listeler ile İkili Arama Ağaçları Arasındaki İkiliği Keşfetmek, Brian C. Dean ve Zachary H. Jones : Skip listeleri tamamen değil. işlevseldir, ancak işlevsel olarak ağaçlar olarak uygulanabilirler. Muameleler gibi, rastgele bir bit kaynağı gerektirirler. (Listeleri atlamak mümkündür, ancak bunları bir ağaca çevirdikten sonra, 2-3 ağaca bakmanın başka bir yolu olduğunu düşünüyorum.)
1998: Okasaki'nin kitabındaki tüm itfa edilmiş yapılar! Okasaki, bu yeni yöntemi, daha önce uyumsuz olduğu düşünülen itfa ve fonksiyonel veri yapılarının karıştırılması için icat etti. Bu, Kaplan ve Tarjan'ın bazen belirttiği gibi, aslında bir yan etki olduğu dekontuna bağlıdır. Bazı durumlarda ( performans nedenleriyle SSD'lerde PFDS gibi ) bu uygun olmayabilir.
1998: Haim Kaplan, Chris Okasaki ve Robert E. Tarjan'ın Basit Konfuge Edilmiş Kalıcı Katlanabilir Listeleri : Başlık altında yapılan düzeltmeleri, itfa edilmiş O (1) katlanabilir deque'leri vermek için kullanır, aynı arayüzü daha önce olduğu gibi sunar (yalnızca işlevseldir, ancak notlandırılır) ) Okasaki'nin kitabında görünen versiyonu. Kaplan ve Tarjan daha önce tamamen işlevsel bir O (1) en kötü durumlu yapı oluşturmuştu, ancak büyük ölçüde daha karmaşıktı.
2007: Bu sayfadaki başka bir cevapta da belirtildiği gibi, yarı kalıcı veri yapıları ve kalıcı sendika bulma Sylvain Conchon ve Jean-Christophe Filliâtre
Yumuşak Yığın: Bernard Chazelle'den Optimal Hata Oranına Sahip Bir Öncelik Sırası : Bu veri yapısı dizileri kullanmaz ve böylece #haskell IRC kanalını ve daha sonra Yığın Taşması kullanıcılarını cezbeder , ancakdelete
o (lg n) değerini içerir. genellikle işlevsel bir ortamda mümkün değildir ve tamamen işlevsel bir ortamda geçerli olmayan zorunlu amortismanlı analiz.
O (1) parmak güncellemeleri ile Dengeli ikili arama ağaçları . Gelen Veri Yapıları Kalıcı yapma , James R Driscoll, Neil Sarnak, Daniel D. Sleator ve Robert E. Tarjan kalıcı güncellemeler yalnızca O (1) uzay gerekmeyecek kadar kırmızı-siyah ağaç düğümleri gruplandırılması için bir yöntem mevcut. Tarjan, Kaplan ve Mihaescu tarafından tasarlanan tamamen işlevsel dekoller ve parmak ağaçlarının hepsi, her iki uçta da O (1) güncellemelerine izin vermek için çok benzer bir gruplama tekniği kullanır. Athanasios K. Tsakalidis tarafından yerelleştirilmiş arama için AVL ağaçları benzer şekilde çalışır.
Eşleştirme yığınları için daha hızlı eşleştirme yığınları ya da daha iyi sınırları : Okasaki kitabı yayımlandı beri zorunlu eşleştirme yığınları birkaç yeni analizler de dahil olmak üzere ortaya çıkmıştır O eşleniyor yığınları (n log log) Maliyeti düşürmek Amr elmasry tarafından ve Eşleştirme yığınlardaki bir Nihai Analiz Doğru tarafından Seth Pettie. Bu çalışmanın bir kısmını Okasaki'nin tembel eşleştirme yığınlarına uygulamak mümkün olabilir.
Deterministik taraflı parmak ağaçları : Önyargılı Atlama Listelerinde Amitabha Bagchi, Adam L. Buchsbaum ve Michael T. Goodrich tarafından deterministik önyargılı atlama listeleri için bir tasarım sunulur. Yukarıda belirtilen atlama listesi / ağaç dönüşümü vasıtasıyla, deterministik yanlı arama ağaçları yapmak mümkün olabilir. Birleştirilebilir sözlüklerde John Iacono ve Özgür Özkan tarafından açıklanan parmak bastırılmış atlama listeleri daha sonra taraflı atlamalı ağaçlarda mümkün olabilir. Eğimli bir parmak ağacı, Demaine ve ark. Tamamen fonksiyonel denemeler konusundaki makalelerinde (yukarıya bakın) denemelerde parmak güncellemesinde zaman ve mekan sınırlarını azaltmanın bir yolu olarak.
String B-Tree: Harici Hafızada String Arama ve Paolo Ferragina ve Roberto Grossi'nin Uygulamalarına Yönelik Yeni Bir Veri Yapısı , denemelerin ve B-ağaçlarının faydalarını birleştiren iyi çalışılmış bir veri yapısıdır.