矩陣相乘(MATRIX MULTIPLICATION)
【定義】
假設A為(m × n)矩陣,而B為(n × p)矩陣,則我們可以將A矩陣乘上
B矩陣以得到一個(m × p)的C矩陣,因此,在C矩陣上的第i列第j行的元素必定等於A矩陣的第i 列乘上B矩陣的第j行(兩個向量的內積)。
矩陣相乘之演算法 程式範例
/假設A,B,C均為m x n陣列,這個函數要求出C=AB*/
static void matrix_Mul(int m, int n, int p, int A[][], int B[][], int C[][])
{
int i, j, k;
for (i = 0; i < m; i++)
for(j = 0; j < n; j++)
{
C[i][j]=0;
for (k=0;k<n;k++)
C[i][j] = C[i][j] + A[i][k] * B[k][j];
}
}
稀疏矩陣(SPARSE MATRIX)
【定義】是指矩陣中大部份元素都沒有使用,元素稀稀落落,
所以稱為稀疏矩陣。
【概念】在M× N 的矩陣中,多數的資料值為0。
【處理方法】
【方法一】直接利用M x N的二維陣列來一一對應儲存。
【方法二】利用3-tuple結構來儲存非零元素
稀疏矩陣:處理方法一
【方法一】直接利用M × N的二維陣列來一一對應儲存。
【缺點】
1.浪費空間:因為多數為0。
2.浪費時間:因為要處理一些不必要的計算。
稀疏矩陣:處理方法二
【方法二】利用3-tuple結構來儲存非零元素
【作法】假設有一個M*N的稀疏矩陣中共有K個非零元素,則必須要準備一個二維陣列A[0..K,0..2]
【優點】只儲存非0之資料,因此,可以減少記憶體空間的浪費。