Back-End/Algorithm
Matrix Multiplication
무지맘
2023. 2. 22. 20:47
1. Problem
- 두 n*n 행렬의 곱(product)을 구해보자
2. Input
1) 양수 n
2) 2차원 배열 A indexed from 1 to n
3) 2차원 배열 B indexed from 1 to n
3. Output
1) A*B의 결과가 담긴 2차원 배열 C indexed from 1 to n
4. PseudoCode
void matrixmult(int n, const number[][] A, const number[][] B, number[][] C){
index i, j, k;
for(i=1 ; i<=n ; i++)
for(j=1 ; j<=n ; j++){
C[i][j] = 0;
for(k=1 ; k<=n ; k++)
C[i][j] = C[i][j] + A[i][k]*B[k][j];
}
}
5. Example
class Test {
public static void main(String[] args){
int[][] A = {{2,3},{4,1}};
int[][] B = {{5,7},{6,8}};
int[][] C = new int[2][2]; // C[i][j] == 0
matrixmult(A.length, A, B, C);
for(int i=0 ; i<A.length ; i++) {
for(int j=0 ; j<A.length ; j++)
System.out.print(C[i][j] + " ");
System.out.println();
}
// C의 요소 출력 결과
// 28 38
// 26 36
}
static void matrixmult(int n, int[][] A, int[][] B, int[][] C){
for(int i=0 ; i<n ; i++) {
for(int j=0 ; j<n ; j++){
for(int k=0 ; k<n ; k++)
C[i][j] += A[i][k]*B[k][j];
} // j
} // i
}
}
- T(n) = n^3