Чому функціональне програмування не досліджувало динамічні дерева?


19

Динамічні дерева відіграють важливу роль у вирішенні таких задач, як мережеві потоки, динамічні графіки, комбінаторні проблеми ("Динамічні дерева на практиці" Таряна та Вернека) та словники, що нещодавно зливаються ("Простий об'єднаний словник" Адама Карчмарца),

Під динамічними деревами я маю на увазі визначення, викладене в статті Sleator & Tarjan "Структура даних для динамічних дерев" у 1983 році. З тих пір було опубліковано небагато зусиль у дослідницькій області функціонального програмування.

  1. Едвард Кмет реалізував версію дерев ST, здебільшого як переклад аналога C ++, див . Дерева, що вирізали посилання .
  2. Кріс Окасакі написав обмежену реалізацію дерев Splay у своїй відомій книзі "Чисто функціональні структури даних".
  3. Ральф Хінзе та Росс Патерсон представили функціональну структуру даних, що називається 2-3 пальчиковими деревами, але з дещо іншою метою, ніж оригінальне визначення динамічних дерев.

Впровадження (і можливо ефективність) динамічних дерев поділяється за трьома підходами:

  1. Лінеаризація, де ET-дерева (тур Ейлера) відіграють велику роль. Не знайдено чисто функціонального дослідження.
  2. Шлях-декомпозиція, де ST дерева є флагманом, щойно знайшов версію Кметта.
  3. Стиснення дерев, де грають Топ дерева, Топологія дерев та RC дерева. Не знайдено чисто функціонального дослідження.

Чисто функціональний аналіз та реалізація можна знайти на Splay, AVL, червоно-чорному дереві, але це НЕ динамічні дерева. Перші вважаються тіньовою (також їх називають віртуальною чи допоміжною) структурою даних останніх.

Отже, моє питання:

Які причини (недоліки, слабкі місця) дослідницької спільноти функціонального програмування не брали участі в структурі даних про динамічні дерева?


14
Я не розумію, як можна відповісти на це, не формуючи Комітет з питань авторитетного функціонального програмування, який формує офіційні думки. Чи не можемо ми переформулювати питання так, щоб тут було відповісти щось? Наскільки я можу сказати, ОП повинен просто поїхати і впровадити свої динамічні дерева в Хаскеллі чи що завгодно, а потім повернутися сюди, щоб повідомити, що це все-таки було зроблено.
Андрій Бауер

Оновлення до @AndrejBauer: ОП пішла і впровадила свої динамічні дерева в Haskell: arxiv.org/abs/1908.11105
jbapple

Відповіді:


-1

"В інформатиці функціональне програмування є парадигмою програмування. Стиль побудови структури та елементів комп'ютерних програм, який розглядає обчислення як оцінку математичних функцій і дозволяє уникнути зміни стану та змінних даних". - Вікіпедія

"зміна даних про стан та змінні", іншими словами "динамічні".

Тож ваше запитання трохи схоже на запитання, чому ліва справа не є.


1
Функціональні програми можуть представляти динамічні дані зі стійкими структурами даних. Це питання задає питання, чому розробка стійких структур даних для певної проблеми не досліджена. Питання має сенс.
Відновіть Моніку
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.