Gli alberi dinamici svolgono un ruolo importante nella risoluzione di problemi quali flussi di rete, grafici dinamici, problemi combinatori ("Alberi dinamici in pratica" di Tarjan e Werneck) e la recente fusione di dizionari ("A Simple Mergeable Dictionary" di Adam Karczmarz),
Per alberi dinamici mi riferisco alla definizione dichiarata nel documento di Sleator & Tarjan "Una struttura di dati per alberi dinamici" nel 1983. Pochi sforzi sono stati pubblicati nell'area di ricerca di programmazione funzionale da allora.
- Edward Kmett ha implementato una versione degli alberi ST principalmente come traduzione della controparte C ++, vedi alberi tagliati da link .
- Chris Okasaki ha scritto un'implementazione limitata degli alberi Splay nel suo famoso libro "Strutture di dati puramente funzionali".
- Ralf Hinze e Ross Paterson hanno introdotto una struttura dati funzionale chiamata 2-3 finger trees ma con un obiettivo un po 'diverso da quello della definizione originale di alberi dinamici.
L'implementazione (e forse le prestazioni) degli alberi dinamici è divisa in base a tre approcci:
- Linearizzazione, in cui gli alberi ET (Euler tour) svolgono un ruolo importante. Non trovato uno studio puramente funzionale.
- Path-decomposition, dove gli alberi ST sono il fiore all'occhiello, ho appena trovato la versione di Kmett.
- Contrazione dell'albero, in cui i giocatori sono i migliori alberi, gli alberi della topologia e gli alberi RC. Non trovato uno studio puramente funzionale.
Analisi e implementazione puramente funzionali possono essere trovate su Splay, AVL, albero rosso-nero, ma quelli NON sono alberi dinamici. I primi sono considerati la struttura dei dati ombra (chiamata anche virtuale o ausiliaria) dei secondi.
Quindi, la mia domanda è:
Quali sono i motivi (svantaggi, punti deboli) affinché la comunità di ricerca sulla programmazione funzionale non partecipi alla struttura dei dati degli alberi dinamici?