Les structures de données qui vous intéressent sont des arbres métriques. Autrement dit, ils prennent en charge des recherches efficaces dans les espaces métriques. Un espace métrique est formé par un ensemble d'objets et une fonction de distance définie parmi eux satisfaisant l'inégalité du triangle. Le but est alors, étant donné un ensemble d'objets et un élément de requête, de récupérer ces objets suffisamment près de la requête.
Étant donné que les problèmes de recherche sont littéralement partout en informatique, il existe une énorme quantité d'arbres métriques différents. Cependant, ils peuvent être divisés au moins en deux groupes: basés sur des pivots et basés sur des clusters (et il y a sûrement aussi des hybrides). Une bonne enquête est E. Chavez et al., Searching in Metric Spaces, 2001 . Voir par exemple le Chapitre 5: Solutions actuelles aux espaces métriques, page 283.
Dans le tableau 1, Chavez et al. considérons 16 arbres métriques différents. Ils présentent la complexité de l'espace, la complexité de la construction, la complexité de la requête revendiquée et le temps de requête CPU supplémentaire pour chacun (si connu). Si vous ne vous souciez pas trop de la complexité de la construction, la complexité de la requête pour l'arbre BK est , où fonction de la plage de recherche et de la structure de l'espace . Ou si vous n'avez pas un grand nombre d'éléments, jetez un œil à AESA (approximation de l'élimination de l'algorithme de recherche). Il est inacceptablement lent à construire et à stocker des espaces énormes ( temps et espace), mais il a été démontré expérimentalement qu'il avait le temps de requête.0 < α < 1 O ( n 2 ) O ( 1 )O(nα)0<α<1O(n2)O(1)
Chavez et al. donne également un bon aperçu des autres arbres, et naturellement plus de références si quelqu'un en particulier suscite votre intérêt. En pratique, les performances de différents arbres sont souvent évaluées expérimentalement. Je pense que cela dépend beaucoup de la structure de l'espace. Par conséquent, il est difficile de dire quel arbre en particulier serait le plus efficace dans votre cas. Néanmoins, je pense que c'est une bonne idée d'aller d'abord avec le plus simple. Si les arbres BK sont les plus faciles à construire, essayez-les d'abord. S'ils ne répondent pas à vos besoins, investissez du temps (et peut-être du temps de programmation) pour rassembler plus de faits sur votre espace qui pourraient vous aider à prendre des décisions plus éclairées.