2015-04-20 2 views
2

Pourquoi n'existe-t-il pas d'implémentation (en C, C++, Java ou même Python ...) d'une liste chaînée totalement persistante (pas nécessairement fonctionnelle) avec un temps système constant dans le nombre de modifications?Liste complète des liens persistants

La structure de données que j'ai à l'esprit est celui qui est décrit dans cet article: http://www.cs.cmu.edu/~sleator/papers/Persistence.htm

Après une longue recherche sur google je ne pouvais pas trouver même une mise en œuvre de liste chaînée partiellement persistante avec les frais généraux situés au-dessus.

PS: Les définitions de la persistance dont je parle sont ceux décrits dans la page Wikipédia suivante: http://en.wikipedia.org/wiki/Persistent_data_structure

EDIT (après que la question a été mis en attente):

Je ne pense pas que la raison mentionnée s'applique à ma question. Je ne demande pas vraiment de recommandation parmi les différentes bibliothèques disponibles, il ne peut donc pas y avoir de "réponses opiniâtres et de spam". Ma question est une sorte d'étonnement qu'une structure de données, qui est censée être géniale en théorie, n'a été mise en œuvre par aucune des langues connues. Donc avant de l'implémenter moi-même j'ai posé cette question pour voir s'il y a une réponse comme: "C'est normal, la structure de données X domine celle que vous cherchez et c'est pourquoi elle n'a pas été implémentée malgré sa simplicité". Une autre réponse pourrait être «Ce n'est pas aussi bon que vous le pensez car il y a une grande constante cachée» ou «ça ne va pas bien avec la façon dont les caches sont construites de nos jours» ... Je suis désolé si ma question n'était pas assez claire. J'ai transformé ma question en rendant ma demande plus explicite maintenant.

Répondre

1

Avez-vous essayé la bibliothèque Java fonctionnelle? Il a obtenu des structures de données persistantes:

http://www.functionaljava.org/features.html

+0

Merci pour le pointeur. Cependant, les structures de données fonctionnelles (immuables) ne peuvent pas atteindre le surcoût mentionné ci-dessus. –