행렬 곱셈을 수행하는 다른 방법을 찾고 있습니다. 행렬을 2 차원 배열로 저장하는 대신 내 행렬을 저장하려면쌍을 사용하는 행렬 곱셈
vector<pair<pair<int,int >,int > >
과 같은 벡터를 사용하고 있습니다. 내 쌍 (pair) 내의 쌍은 my index (i, j)를 저장하고 다른 int는 주어진 (i, j) 쌍의 값을 저장합니다. 이런 식으로 내 희소 배열을 구현하는 행운이 있을지도 모른다고 생각했습니다.
문제는이 행렬에 자체를 곱하려고 할 때입니다. 이 2 차원 어레이를 구현했다면 다음
는 I 행렬을 곱한 것이다 :
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];
}
}
누군가 '쌍 쌍'내 벡터를 이용하여 동일한 결과를 얻을 수있는 방법을 지적 할 수 ?
감사합니다.
한가지 방법은 희소 행렬에 동일한 알고리즘하지만 인덱싱 동작과를 사용하는 것이다. 이것은 비록 당신이 빠른 색인 작업 (hashtables spring to mind)을 얻을 수 없다면 비효율적이다. 그러나 더 나은 알고리즘이 있다고 확신합니다 (Google은 도움이되지 않습니다 :() –