Phép toán trên ma tr ậ n Cộng, trừ ma trận: - 2 ma trận chỉ có thể cộng hoặc trừ cho nhau nếu chúng có cùng kích thước... Thu ậ t toán Strassen Đánh giá giải thuật: - Thuật toán Strassen
Trang 1NHÂN MA TR Ậ N
Trang 2Phép toán trên ma tr ậ n
Cộng, trừ ma trận:
- 2 ma trận chỉ có thể cộng hoặc trừ cho nhau nếu chúng có cùng kích thước
Nhân ma trận:
- Có thể nhân 2 ma trận với nhau nếu số cột của
ma trận có số hàng của ma trận 1 và cột ma trận 2
- Ví dụ: Nhân 2 ma trận có kích thước 3x4 và 4x7
được ma trận có kích thước 3x7
Trang 3Nhân ma tr ậ n
Tính chất của nhân ma trận:
- Nhân ma trận không có tính giao hoán
A*B # B*A
Ví dụ: Cho 2 ma trận 2x3 * 3x4 Kết quả ma
trận (2x4)
Trang 4Nhân ma tr ậ n
Thuật toán: Nhân 2 ma trận G(n x n) và H(n x n)
Kết quả R(n x n)
for (int i =1;i<n;i++)
for (int j=1;j<n;j++)
Ri,j = 0;
for (int k=1;k<n;k++)
Ri,j=Ri,j+Gi,k*Hk,j;
Đánh giá thuật toán:
- Số phép cộng: n3
- Số phép nhân: n3 O(n 3 )
Trang 5Thu ậ t toán Strassen
- Thuật toán Strassen ứng dụng với ma trận vuông
- Thuật toán Strassen áp dụng giải thuật chia để trị
- Chia nhỏ ma trận A, B thành những ma trận con
A0,A1,…
A0 A1
A2 A3 ×
B0 B1
B2 B3 = A 0 ×B× 0 +A 1 ×B× 2 A 0 ×B× 1 +A 1 ×B× 3
A 2 ×B× 0 +A 3 ×B× 2 A 2 ×B× 1 +A 3 ×B× 3
Trang 6Thu ậ t toán Strassen
P 1 = (A 11 + A 22 )(B 11 +B 22 )
P 2 = (A 21 + A 22 ) * B 11
P 3 = A 11 * (B 12 - B 22 )
P 4 = A 22 * (B 21 - B 11 )
P 5 = (A 11 + A 12 ) * B 22
P 6 = (A 21 - A 11 ) * (B 11 + B 12 )
P 7 = (A 12 - A 22 ) * (B 21 + B 22 )
Trang 7Thu ậ t toán Strassen
Cài đặt:
void matmul(int *A, int *B, int *R, int n)
{
if (n == 1)
else
matmul(A, B+(n/4), R+(n/4), n/4);
matmul(A+2*(n/4), B, R+2*(n/4), n/4);
matmul(A+2*(n/4), B+(n/4), R+3*(n/4), n/4);
matmul(A+(n/4), B+2*(n/4), R, n/4);
matmul(A+(n/4), B+3*(n/4), R+(n/4), n/4);
matmul(A+3*(n/4), B+2*(n/4), R+2*(n/4), n/4);
matmul(A+3*(n/4), B+3*(n/4), R+3*(n/4), n/4);
}
}
Trang 8Thu ậ t toán Strassen
Đánh giá giải thuật:
- Thuật toán Strassen có độ phức tạp O(nlog7 ) = O(n2,81)
Trang 9PHƯƠNG TRÌNH
Trang 10Phương trình tuy ế n tính
Tìm giá trị (x1,…,xn)
Ví dụ: