2010-08-03 5 views
15

Dans boost::numeric::ublas, il y a three sparse vector types.Quelles sont les différences entre les différents vecteurs épars d'ublas?

Je peux voir que le mapped_vector est essentiellement un stl::map de l'index à la valeur, qui considère toutes les valeurs non trouvées comme étant 0 (ou quelle que soit la valeur commune).

Mais la documentation est peu fournie (ha ha) sur les informations compressed_vector et coordinate_vector.

Quelqu'un peut-il clarifier? J'essaie de comprendre la complexité algorithmique de l'ajout d'éléments aux différents vecteurs, ainsi que des produits scalaires entre deux de ces vecteurs.

Une réponse très utile a offert que compressed_vector est très similaire à compressed_matrix. Mais il semble que, par exemple, compressed row storage est seulement pour stocker des matrices - pas seulement des vecteurs.

Je vois que unbounded_array est le type de stockage, mais je ne suis pas tout à fait sûr de ce que la spécification est pour cela non plus. Si je crée un fichier compressed_vector de taille 200 000 000, mais avec seulement 5 emplacements différents de zéro, est-ce moins efficace que de créer un fichier compressed_vector avec des emplacements de taille 10 et 5 non nulle?

Merci beaucoup!

Répondre

4

remplacer la matrice avec le vecteur et vous avez les réponses

http://www.guwi17.de/ublas/matrix_sparse_usage.html

+0

Un grand merci! C'est exactement ce dont j'avais besoin. –

+0

@mohawkjohn pour le produit que vous voulez probablement compressed_vector – Anycorn

+0

Ok, donc cela ne répond pas complètement à ma question après tout. Par exemple, la matrice compressée est stockée en utilisant un stockage de ligne compressé. Mais le compressed_vector n'a pas pu être stocké de cette façon, n'est-ce pas? –

Questions connexes