Les arbres dynamiques jouent un rôle important dans la résolution de problèmes tels que les flux de réseau, les graphiques dynamiques, les problèmes combinatoires ("Dynamic Trees in Practice" par Tarjan et Werneck) et la fusion récente de dictionnaires ("A Simple Mergeable Dictionary" par Adam Karczmarz),
Par arbres dynamiques, je me réfère à la définition énoncée dans l'article de Sleator & Tarjan "Une structure de données pour les arbres dynamiques" en 1983. Peu d'efforts ont été publiés dans le domaine de la recherche en programmation fonctionnelle depuis.
- Edward Kmett a implémenté une version des arbres ST principalement comme une traduction de l'homologue C ++, voir Arbres coupés de liens .
- Chris Okasaki a écrit une implémentation limitée des arbres Splay dans son célèbre livre "Structures de données purement fonctionnelles".
- Ralf Hinze et Ross Paterson ont introduit une structure de données fonctionnelle appelée 2-3 arbres à doigts mais avec un objectif quelque peu différent de celui de la définition originale des arbres dynamiques.
La mise en œuvre (et peut-être les performances) des arbres dynamiques est divisée selon trois approches:
- Linéarisation, où les arbres ET (tour Euler) jouent un grand rôle. Pas trouvé une étude purement fonctionnelle.
- La décomposition de chemin, où les arbres ST sont le produit phare, vient de trouver la version de Kmett.
- La contraction des arbres, où les arbres supérieurs, les arbres de topologie et les arbres RC sont les joueurs. Pas trouvé une étude purement fonctionnelle.
L'analyse et l'implémentation purement fonctionnelles peuvent être trouvées sur Splay, AVL, arbre rouge-noir, mais ce ne sont PAS des arbres dynamiques. Les premiers sont considérés comme la structure de données fantôme (également appelée virtuelle ou auxiliaire) des seconds.
Donc, ma question est:
Quelles sont les raisons (inconvénients, faiblesses) pour la communauté de recherche Programmation fonctionnelle de ne pas participer à la structure de données des arbres dynamiques?
la source
Réponses:
"En informatique, la programmation fonctionnelle est un paradigme de programmation. Un style de construction de la structure et des éléments des programmes informatiques qui traite le calcul comme l'évaluation des fonctions mathématiques et évite de changer l'état et les données mutables." - Wikipédia
"changement d'état et données mutables" en d'autres termes "dynamique".
Votre question revient donc un peu à demander pourquoi la gauche n'est pas la bonne.
la source