Je suis à la recherche d'autres façons de faire une multiplication matricielle. Au lieu de stocker ma matrice comme un tableau à deux dimensions, j'utilise un vecteur tel queMultiplication de matrices utilisant des paires
vector<pair<pair<int,int >,int > >
pour stocker ma matrice. La paire dans ma paire (paire) stocke mes indices (i, j) et l'autre int stocke la valeur pour la paire donnée (i, j). Je pensais que j'aurais peut-être de la chance en implémentant ma matrice éparpillée de cette façon.
Le problème est lorsque j'essaie de multiplier cette matrice avec elle-même.
Si cela était une mise en œuvre du tableau 2-d, aurait multiplié la matrice comme suit:
for(i=0; i<row1; i++)
{
for(j=0; j<col1; j++)
{
C[i][j] = 0;
for(k=0; k<col2; k++)
C[i][j] += A[i][j] * A[j][k];
}
}
Quelqu'un peut-il indiquer un moyen d'obtenir le même résultat en utilisant mon vecteur de « paire de paires » ?
Merci
Une façon est d'utiliser le même algorithme, mais les opérations d'indexation sur la matrice clairsemée. Ceci est inefficace cependant, à moins que vous ne réussissiez à obtenir des opérations d'indexation rapides (les hashtables viennent à l'esprit). Mais je suis sûr qu'il y a de meilleurs algorithmes là-bas (Google n'a pas été utile :() –