NHÂN MA TR NHÂN MA TR Ậ Ậ N N Ph Ph é é p to p to á á n trên ma tr n trên ma tr ậ ậ n 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 1 = số hàng của ma trận 2 Kết quả sẽ là 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 Nhân ma tr Nhân ma tr ậ ậ n 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 - Ví dụ: Cho 2 ma trận vuông A và B Kết quả A*B # B*A Ví dụ: Cho 2 ma trận 2x3 * 3x4 Kết quả ma trận (2x4) Nhân ma tr Nhân ma tr ậ ậ n 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++) R i,j = 0; for (int k=1;k<n;k++) R i,j =R i,j +G i,k *H k,j ; Đánh giá thuật toán: - Số phép cộng: n 3 - Số phép nhân: n 3 O(n 3 ) Thu Thu ậ ậ t to t to á á n Strassen 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 A 0 ,A 1 ,… A × ×× × B = R A 0 A 1 A 2 A 3 × ×× × B 0 B 1 B 2 B 3 = 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 Thu Thu ậ ậ t to t to á á n Strassen 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 ) C 11 = P 1 + P 4 - P 5 + P 7 C 12 = P 3 + P 5 C 21 = P 2 + P 4 C 22 = P 1 + P 3 - P 2 + P 6 Thu Thu ậ ậ t to t to á á n Strassen n Strassen Cài đặt: void matmul(int *A, int *B, int *R, int n) { if (n == 1) { (*R) += (*A) * (*B); } else { matmul(A, B, R, n/4); 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); } } Thu Thu ậ ậ t to t to á á n Strassen n Strassen Đánh giá giải thuật: - Thuật toán Strassen có độ phức tạp O(n log7 ) = O(n 2,81 ) PHƯƠNG TRÌNH PHƯƠNG TRÌNH TUY TUY Ế Ế N T N T Í Í NH NH Phương tr Phương tr ì ì nh tuy nh tuy ế ế n t n t í í nh nh Tìm giá trị (x 1 ,…,x n ) Ví dụ: . 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 1 = số hàng của ma trận 2 Kết quả sẽ là 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ó. thước 3x4 và 4x7 được ma trận có kích thước 3x7 Nhân ma tr Nhân ma tr ậ ậ n 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 - Ví dụ: Cho 2 ma trận vuông A và B Kết. NHÂN MA TR NHÂN MA TR Ậ Ậ N N Ph Ph é é p to p to á á n trên ma tr n trên ma tr ậ ậ n 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