Bonjour à toutes et à tous,
J'ai une grande (10^10 voire 10^15) collection de points dans un espace en d-dimensions (d pouvant prendre pour valeur d={1,2,3,4,...}). Ces points sont des entiers positifs ou négatifs (Z).
Je cherche simplement à connaitre, dans cette collection et le plus rapidement possible, le nombre de points uniques car de nombreux points sont répétés (valeurs identiques) à des emplacements aléatoires de ma collection.
Par exemple en dimension d=3 ça donnerait quelque chose comme ça:
etc.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 1, -1, 10; -1, 50, -224; 0, 0, 0; -2, -1, 3; -1, 1, 10; 1, -1, 10; -1, 50, -224;
Dans cet exemple il y a 5 points uniques (les 1ers et 2emes tuples sont répétés).
Dans mon soucis de performance, je cherche quelle structure (tuples? list? autre?) serait la plus efficace pour traiter cette question.
Mon idée première était d'utiliser Amardillo et de stocker simplement les points dans un tableau en d-dimensions (comme dans l'exemple) et de compter les lignes uniques (1 ligne correspond à un tuple), grâce à la commande size(unique(Collection)). Malheureusement, à contrario de Matlab (Armadillo est inspiré de Matlab), unique() est uniquement implémentée pour les éléments d'un vecteur (il ne trouve pas les tuples). J'imagine cependant qu'il doit exister plusieurs solutions efficaces à ce problème (dans la STL ou ailleurs). Mais je ne connais pas suffisamment bien le langage pour m'en sortir de manière performante.
Merci pour vos éclairages!
Partager