Qu'est-ce qu'une structure de données appropriée pour représenter un tesnor clairsemé en C++? La première option qui vient à l'esprit est un boost::unordered_map
car il permet des opérations telles que la configuration rapide et la récupération d'un élément comme ci-dessous:Structure de données pour représenter le tenseur clairsemé?
A(i,j,k,l) = 5
Cependant, je voudrais aussi pouvoir faire des contractions sur un seul indice , ce qui impliquerait la sommation sur l'un des indices
C(i,j,k,m) = A(i,j,k,l)*B(l,m)
Comment serait-il facile à mettre en œuvre cet opérateur avec un boost::unordered_map
? Y a-t-il une structure de données plus appropriée?
Est-ce qu'il y en a peu dans chaque dimension? vous pouvez implémenter wrapper autour de array ou map d'un ublas :: sparse_matrix. – Anycorn