Динамічні дерева відіграють важливу роль у вирішенні таких задач, як мережеві потоки, динамічні графіки, комбінаторні проблеми ("Динамічні дерева на практиці" Таряна та Вернека) та словники, що нещодавно зливаються ("Простий об'єднаний словник" Адама Карчмарца),
Під динамічними деревами я маю на увазі визначення, викладене в статті Sleator & Tarjan "Структура даних для динамічних дерев" у 1983 році. З тих пір було опубліковано небагато зусиль у дослідницькій області функціонального програмування.
- Едвард Кмет реалізував версію дерев ST, здебільшого як переклад аналога C ++, див . Дерева, що вирізали посилання .
- Кріс Окасакі написав обмежену реалізацію дерев Splay у своїй відомій книзі "Чисто функціональні структури даних".
- Ральф Хінзе та Росс Патерсон представили функціональну структуру даних, що називається 2-3 пальчиковими деревами, але з дещо іншою метою, ніж оригінальне визначення динамічних дерев.
Впровадження (і можливо ефективність) динамічних дерев поділяється за трьома підходами:
- Лінеаризація, де ET-дерева (тур Ейлера) відіграють велику роль. Не знайдено чисто функціонального дослідження.
- Шлях-декомпозиція, де ST дерева є флагманом, щойно знайшов версію Кметта.
- Стиснення дерев, де грають Топ дерева, Топологія дерев та RC дерева. Не знайдено чисто функціонального дослідження.
Чисто функціональний аналіз та реалізація можна знайти на Splay, AVL, червоно-чорному дереві, але це НЕ динамічні дерева. Перші вважаються тіньовою (також їх називають віртуальною чи допоміжною) структурою даних останніх.
Отже, моє питання:
Які причини (недоліки, слабкі місця) дослідницької спільноти функціонального програмування не брали участі в структурі даних про динамічні дерева?