2001: Ідеальні хеш-дерева та його попередник 2000 року, Швидкі та просторові пошуки три , Філ Багвелл : Мабуть, використовувались як фундаментальний будівельний блок у стандартній бібліотеці Clojure.
2001: Проста техніка реалізації черг на пріоритетні пошукові роботи , Ральф Хінзе : дійсно проста і красива методика реалізації цієї важливої структури даних (корисна, скажімо, в алгоритмі Дікстра). Реалізація особливо красива і читабельна завдяки великому використанню "моделей перегляду".
2002: завантаження односторонніх гнучких масивів , автор: Ральф Гінзе : Подібно до списків випадкового доступу Окасакі, але вони можуть бути налаштовані на зміну часу взаємодії cons
та індексації.
2003: Нові деканти, які не підлягають передачі , Раду Міхаеску та Роберт Тарджан : нова робота над старішою роботою (Каплан та Тарджан), яку цитує Окасакі ( остання версія роботи Каплана і Тарджана була опублікована в 2000 році ). Ця версія в чомусь простіша.
2005: Максифобічні купи ( папір та код ), Кріс Окасакі : Представлений не як нова, більш ефективна структура, а як спосіб викладати черги з пріоритету.
2006 рік: Чисто функціональні сортовані списки постійного часу з найгіршими випадками : Герт Столтінг Бродал, Крістос Макрис та Костас Циклас : Відповідає на невирішене питання про Каплана та Тарджана, демонструючи структуру з вставкою, пошуку, видалення та видалення O (lg n) (1) конмат.
2008: Настійно стійкі спроби ефективного контролю версій : Ерік Д. Демен, Штефан Лангерман та Ерік Прайс : Представляє кілька структур даних для спроб, які мають ефективну навігацію та модифікацію біля листя. Деякі суто функціональні. Інші фактично покращують давню структуру даних Dietz et al. для повністю стійких (але не зв'язаних стійких або чисто функціональних) масивів. У цьому документі також представлені суто функціональні дерева зрізаних посилань , які іноді називають "динамічними деревами".
2010 рік: новий чисто функціональний алгоритм видалення червоно-чорних дерев Метт Мойт: Як алгоритм вставки червоно-чорного дерева Окасакі, це не нова структура даних або нова операція над структурою даних, а новий, простіший спосіб написати відому операцію.
2012: RRB-Дерева: Ефективні незмінні вектори , Філ Багвелл і Тіарк Ромпф : розширення до Hash Array Mapped Tries, що підтримує незмінне конкатенацію векторів, вставлення та розщеплення за O (lg n) час, зберігаючи індекс, оновити та швидкості введення вихідного незмінного вектора.
Багато інших стилів збалансованого дерева пошуку . AVL, брат, врівноважений, обмежений баланс та багато інших збалансованих дерев пошуку можуть бути (і були реалізовані) виключно функціонально шляхом копіювання контуру. Можливо, заслуговують особливої згадки:
- Нарізані дерева пошуку Семюеля В. Бента, Даніеля Д. Слейтора та Роберта Е. Тарджана : ключовий елемент у праці Бродаля та ін. За 2006 рік та статті Demaine et al. У 2008 році.
Нескінченні набори, які допускають швидкий вичерпний пошук , Мартін Ескардо : Можливо, сама по собі структура даних.
Кріс Окасакі : три алгоритми щодо дерев Брауна : дерева Брауна пропонують багато операцій стеку в гіршому випадку O (lg n). Ця межа перевершується багатьма іншими структурами даних, але дерева Браунаcons
в другому аргументімаютьледачу операцію, і тому вони можуть використовуватися як нескінченні стеки певними способами, які інші структури не можуть.
Розслаблена купа min-max: Об'єднана черговість з двостороннім пріоритетом та KD heap: Ефективна багатовимірна черговість пріоритетів , Юженг Дін та Марк Аллен Вайс : Вони бувають чисто функціональними, хоча це не обговорюється в документах . Я не думаю, що досягнуті межі часу є кращими, ніж ті, що можна досягти, використовуючи пальчикові дерева (Гінзе та Патерсон або Каплан і Тарджан) як чергові чергові черги, але я думаю, що структури Дінг і Вайс використовують менше місця .
Застібка-блискавка , Джерард Хует : Використовується у багатьох інших структурах даних (таких як пальчикові дерева Гінза та Патерсона), це спосіб перетворення структури даних всередину.
Списки відмінностей - це O (1) списки, що підлягають каналу, з перетворенням O (n) у звичайні cons
списки. Вони, очевидно, були відомі ще з античності в громаді Пролога, де вони перетворилися на O (1) у звичайні cons
списки. Трансформація O (1) здається неможливою в традиційному функціональному програмуванні, але абстракція отворів Мінаміде з POPL '98 обговорює спосіб, який дозволяє O (1) додавати і O (1) перетворення в рамках чистого функціонального програмування. На відміну від звичайних реалізацій функціонального програмування різницьких списків, які базуються на закритті функцій, абстрагування отворів по суті є тими ж (як у їх використанні, так і в їх реалізації), як і у списках відмінностей Prolog. Однак здається, що роками єдиною людиною, яка це помітила, булоодин із рецензентів Minamide .
Унікально представлені словники підтримують вставлення, оновлення та пошук з обмеженням, що жодна дві структури, що містять однакові елементи, не можуть мати виразних форм. Для прикладу, відсортовані спільно окремі списки представлені однозначно, але традиційні дерева AVL - ні. Спробу також унікально представлені. Тарджан і Сундар у "Унікальних представленнях бінарних дерев пошуку та тестуванні рівності множин та послідовностей" показали суто функціональний унікально представлений словник, який підтримує пошук у логарифмічному часі та оновлення в час. Однак він використовує простір . Існує просте подання з використанням дерев Braun, яке використовує лише лінійний простір, але має час оновленняO(n−−√)Θ(nlgn)Θ(nlgn−−−−−√) та час пошукуΘ(lg2n)
Багато процедур для того, щоб зробити структуру даних стійкою, повністю стійкою або конфліктно стійкою : Хаїм Каплан написав чудове опитування на цю тему . Дивіться також вище роботи Demaine та ін., Які демонструють повністю стійкий масив у просторі (де - кількість операцій, коли-небудь виконаних на масиві) та очікуваний час доступу.O(m)mO(lglgn)
1989: Рандомізовані дерева пошуку Сесілії Р. Арагон та Раймунда Сейделя : Вони обговорювались в чисто функціональній обстановці Гаєм Е. Блеллохом та Маргарет Рейд-Міллер у швидких операціях із застосуванням трапез,
а також Деном Бландфордом та Гаєм Блеллохом у функціональних операціях з Треки ( код). Вони забезпечують усі операції чисто функціональних пальців пальців і упереджених дерев пошуку, але потребують джерела випадковості, роблячи їх не чисто функціональними. Це також може визнати недійсною складність часу операцій над треупами, припускаючи супротивника, який може проводити операції та повторювати тривалі. (Це та сама причина, чому аргументи імперативної амортизації не є дійсними в стійких умовах, але для цього потрібен супротивник із секундоміром)
1997: Пропускні дерева, альтернативна структура даних для пропускних списків за паралельним підходом , Ксав'є Мессгегером та вивчення подвійності між пропускними списками та двійковими деревами пошуку , Брайан К. Дін та Захарі Х. Джонс : Пропуск списків не є суто функціональні, але вони можуть бути реалізовані функціонально як дерева. Як і треї, вони вимагають джерела випадкових бітів. (Можна зробити пропускні списки детермінованими, але, переклавши їх на дерево, я думаю, що вони є лише іншим способом перегляду 2-3 дерев.)
1998: Усі амортизовані структури в книзі Окасакі! Окасакі винайшов цей новий метод змішування амортизації та функціональних структур даних, які раніше вважалися несумісними. Це залежить від запам'ятовування, яке, як згадували Каплан та Тарджан, насправді є побічним ефектом. У деяких випадках ( наприклад, PFDS на SSD з причин продуктивності ), це може бути недоцільним.
1998: Прості конфліктно стійкі списки каналів , від Хаїма Каплана, Кріса Окасакі та Роберта Е. Тарджана : Використовує модифікацію під кришкою для надання амортизованих O (1) декабельних деків, представляючи той самий інтерфейс, що і раніше (суто функціональний, але з запам'ятовуванням ) версія, що міститься в книзі Окасакі. Раніше Каплан і Тарджан створили суто функціональну O (1) найгіршу структуру, але вона суттєво складніша.
2007 рік: Як було сказано в іншій відповіді на цій сторінці, напівстійкі структури даних та стійкі знахідки об'єднання від Sylvain Conchon та Jean-Christophe Filliâtre
Soft Heap: Приблизний Queue Пріоритету при оптимальній швидкості помилок , по Бернарду Чазел : Ця структура даних не використовує масиви, і тому спокусила спочатку IRC канал #haskell і більш пізніх користувач переповнення стека , але вона включаєdelete
в про (Л.Г. п) , що зазвичай неможливо у функціональній обстановці та імперативному амортизованому аналізі, що не є дійсним у суто функціональній обстановці.
Збалансовані дерева бінарного пошуку з оновленнями пальців O (1) . Як зробити структури даних стійкими, Джеймс Р Дрісколл, Ніл Сарнак, Даніель Д. Слейтор та Роберт Е. Тарджан представляють метод групування вузлів у червоно-чорному дереві так, щоб постійні оновлення потребували лише місця O (1). Суто функціональні деки та пальчикові дерева, розроблені Тарханом, Капланом та Міхеску, використовують дуже схожу техніку групування, щоб дозволити оновлення O (1) на обох кінцях. AVL-дерева для локалізованого пошуку від Атанасіоса К. Цакалідіса працюють аналогічно.
Швидше купи спарювання або краще оцінки для спарювання куп : Оскільки книга Okasaki була опублікована, з'явилися кілька нових аналізи імперативних куп спарювання, в тому числі Сполучення куп з O (журнал журнал п) зменшити вартість Амр Elmasry і до остаточного аналізу Сполучення куп по Сет Петті. Можливо, можливо, застосувати частину цього твору до лінивих купи Окасакі.
Детерміновані упереджені пальчикові дерева : у Biased Skip Lists Амітабхи Багчі, Адама Л. Бухсбаума та Майкла Т. Гудріча представлений дизайн детермінованих упереджених списків пропусків. Через вищезазначений список пропускання / перетворення дерев можна зробити детерміновані упереджені дерева пошуку. Упереджене прокручування списків, описане Джоном Іаконо та Езгюром Озканом у " Збірних словниках", може бути можливим на упереджених пропускних деревах. Demaine et al. Пропонують упереджене пальцеве дерево. у своїй роботі про суто функціональні спроби (див. вище) як спосіб зменшити часові та просторові межі щодо оновлення пальців у спробах.
The String B-Tree: Нова структура даних для пошуку рядків у зовнішній пам'яті та її застосування Паоло Феррагіна та Роберто Гроссі - це добре вивчена структура даних, що поєднує переваги спроб та B-дерев.