J'ai besoin d'une structure de données pour stocker un numéro d'éléments, dont chacun est associé à un moment différent . varie et même si elle a une limite supérieure théorique, elle est de plusieurs ordres de grandeur supérieure à ce qui est généralement utilisé.
Grâce à ma candidature, je peux m'assurer que:
Les éléments insérés sont toujours plus récents que tous les éléments existants, c'est-à-dire si un élément associé à un temps est inséré, puis . Les éléments sont insérés un par un.
Seuls les éléments les plus anciens sont supprimés, c'est-à-dire que si l'élément est supprimé, alors . Les suppressions se produisent principalement une par une, mais il n'y a pas de préjudice direct si la suppression d'un élément est retardée, tant que la fraction des éléments stockés de manière erronée reste inférieure à 1.
Hormis l'insertion et la suppression, la seule chose que je dois faire est de trouver les deux éléments voisins pour un certain temps avec . Avec d'autres mots je dois trouver les deux éléments j et k tels que t_j <\ tilde {t} <t_k et ∄ l ∈ \ {1,…, n \}: t_j <t_l <t_k .
Mes critères pour la structure des données sont:
- La recherche des éléments décrits ci-dessus doit être aussi rapide que possible.
- L'insertion et le retrait doivent être rapides.
- La structure de données est relativement simple à mettre en œuvre.
Tant que nous ne parlons pas d'un petit décalage d'exécution, chaque critère est prioritaire sur le suivant.
Jusqu'à présent, mes recherches ont montré que la réponse est probablement une sorte d'arbre de recherche auto-équilibré, mais je n'ai trouvé aucune information qui soit la meilleure pour le cas de l'insertion ou de la suppression unilatérale, et cela me coûtera probablement un beaucoup de temps pour me découvrir. De plus, je n'ai trouvé que des informations incomplètes sur la façon dont les arbres s'organisent et à quelle vitesse (par exemple, les arbres AVL s'organisent de manière plus rigide que les arbres rouge-noir), sans parler de la façon dont cela est affecté par l'insertion ou la suppression unilatérale.