Giáo trình Toán rời rạc
Trang 1III Ma trận
1 Khái niệm ma trận
Cho K là một trường (field) Một bảng hình chữ nhật dạng
n n
trong đó các phần tử aij K gọi là một ma trận trên K
Ma trận trên còn được kí hiệu (aij), i=1, ,m, j=1, ,n hoặc đơn giản chỉ là (aij) Có m bộ gồm n phần tử theo chiều ngang (a11, a12, ,a1n), (a21, a22, ,a2n), , (am1,am2, ,amn) gọi là các hàng của ma trận và có n bộ gồm m phần tử theo chiều dọc:
11
21
1
m
a
a
a
,
12 22
2
m
a a a
, ,
1 2
n n
mn
a a a
gọi là các cột Phần tử aij gọi là phần tử thứ ij và
xuất hiện ở hàng i, cột j Một ma trận như vậy gọi là một ma trận m hàng n cột, hay đơn giản là một ma trận mxn Bộ (m,n) gọi là kích thước của ma trận (hoặc dạng) của
ma trận.1
Ví dụ:
là một ma trận 3 hàng và 4 cột trên tập hợp các số thực
Các ma trận thường được kí hiệu bởi các chữ hoa A, B, C còn các phần tử của
K thường được kí hiệu bằng chữ thường a,b,c Hai ma trận A, B bằng nhau nếu có cùng dạng và mọi phần tử tương ứng với các hàng và cột đều bằng nhau Khi đó ta ghi
1 Việc ghi chỉ số hàng hoặc cột (cái nào ghi trước) của ma trận (a ij ) tùy thuộc vào mỗi tác giả Tuy nhiên sự khác nhau đó không làm thay đổi bản chất cúa các vấn đề sẽ được nghiên cứu sau đây.
Trong các ngôn ngữ lập trình việc khai báo một ma trận thông thường được xem như một mảng hai chiều các phần tử kiểu cơ sở Ví dụ trong Pascal:
A : array [1 m, 1 n] of K;
Trong khai báo này có thể xem như chỉ số đầu tiên để chỉ hàng còn chỉ số thứ hai để chỉ cột (điều này không phải là một qui ước có tính cách bắt buộc) Như vậy phần tử A[i,j] là một phần tử có kiểu dữ liệu K thuộc về hàng thứ i, cột thứ j.
Trang 2A = B Điều đó cũng có nghĩa là sự bằng nhau của hai ma trận mxn tương đương với hệ thống gồm m.n đẳng thức.
Ví dụ:
1 4
x y z s
tương đương với hệ thống
3 1
4
x y
x y
z s
z s
Ma trận đơn vị:
Định nghĩa: Ma trận vuông nxn In=(ij) trong đó ij=10 nếu i j nếu i j
trận đơn vị
In =
1 0 0
0 1 0
0 0 1
(Kí hiệu ij được gọi là kí hiệu Kronecker)
Ma trận chuyển vị:
Định nghĩa: Cho ma trận A kích thước mxn, ma trận chuyển vị của ma trận A
là ma trận kí hiệu At kích thước nxm có được bằng cách chuyển hàng thành cột và ngược lại
Ví dụ:
Cho A= 1 2 34 5 6
thì At =
1 4
2 5
3 6
Ma trận đối xứng:
Định nghĩa: Một ma trận vuông nxn A=(aij) gọi là đối xứng nếu ta có aij=aji với
mọi i,j.
Ví dụ:
Trang 3Ma trận
2 8 11 5
là một ma trận đối xứng
Nói cách khác ma trận vuông A gọi là đối xứng nếu nó không thay đổi khi chúng hoán vị các hàng và các cột cho nhau, ie: khi A = At
2 Các phép toán trên ma trận
Phép cộng:
Định nghĩa: Cho hai ma trận cùng dạng A=(aij), B=(bij) Tổng của A và B là
một ma trận cùng dạng C=(cij) được định nghĩa bởi:
cij=aij+bij với mọi i, j
Ta không định nghĩa tổng của hai ma trận khác dạng
Phép nhân vô hướng:
Định nghĩa: Cho phần tử k K và ma trận A Tích của k với A, kí hiệu k.A
hoặc kA là ma trận cùng dạng (k.aij)
Ta cũng định nghĩa:
- A = (-1) A và A - B = A + (-B)
Ví dụ:
Cho A = 14 52 36
và B = 3 0 27 1 8
thì:
A + B = 43 6 22 5
và 3A = 12 153 6 918
3A - B = 19 140 6 726
Nhân hai ma trận:
Định nghĩa: Cho A là ma trận mxp và B là ma trận pxn (số cột của A bằng số
hàng của B) Tích của hai ma trận A và B, kí hiệu AB là ma trận C
kích thước mxn định nghĩa bởi:
c ij = 1
p
ik kj k
a b
, i,j
Ta cũng dịnh nghĩa Ar=AAA A (thực hiện r lần phép nhân) với mọi ma trận A
Trang 4Ví dụ 1:
r s
t u
ra sb ra sb ra sb
ta ub ta ub ta ub
Ví dụ 2:
Lưu ý là phép nhân ma trận không có tính giao hoán, ie: không chắc AB bằng
BA (hơn nữa cũng không chắc BA có nghĩa hay không!)
Tính chất: AIn = ImA = A với mọi ma trận A kích thước mxn
Thông thường ta qui ước: Ao = In
Thuật toán nhân ma trận:
Procedure Nhân ma trận (A,B,C: các ma trận)
For i:=1 to m do {Duyệt trên mỗi hàng của A}
Begin For j:=1 to n do {với mỗi hàng đó duyệt trên các cột của B}
begin cij := 0 For k:=1 to p do cij:=cij+aik*bkj end
End Return C=(cij)
Ví dụ: Có bao nhiêu phép cộng và phép nhân các số nguyên được thuật toán
nói trên sử dụng để nhân hai ma trận vuông nxn có các phần tử là số nguyên?
Giải: Có n2 phần tử trong tích của A và B Để tìm mỗi phần tử cần tất cả n phép nhân và (n -1) phép cộng Vậy có tất cả n3 phép nhân và n2(n-1) phép cộng đã được dùng Điều này chứng tỏ giải thuật trên cần đến O(n3) phép nhân và phép cộng (độ phức tạp giải thuật là O(n3) 2
2 Dùng một số thuật toán khác có thể đạt độ phức tạp thuật toán chỉ cóO n( 7) Tuy nhiên không tiện trình bày các thuật toán đó ở đây.
Trang 53 Ma trận Boole.
Các ma trận mà các phần tử chỉ nhận một trong hai giá trị 0 và 1 (hoặc chỉ nhận hai giá trị TRUE, FALSE) gọi là ma trận Boole Khi đó ta có thể sử dụng các phép toán logich (and) và (or) cho các phần tử của các ma trận này Khi đó nếu
Ví dụ:
A= 1 0 10 1 0
và B = 0 0 10 1 1
A B=0 0 10 1 0
và A B =1 0 10 1 1
Tương tự ta có thể định nghĩa tích Boole của hai ma trận Boole A và B kích
A B = (c ij) = ((ai1 b1j) (ai2 b2j) (aik bkj)) Định nghĩa này hoàn toàn tương tự với định nghĩa tích hai ma trận trong đó ta đã thay trong biểu thức của cij phép nhân bởi và phép cộng bởi
Ví dụ:
A=
1 0
0 1
1 0
và B= 1 1 00 1 1
thì AB=
1 1 0
0 1 1
1 1 0
(Việc kiểm tra kết quả một cách chi tiết xin dành cho người đọc)3
3 Cũng đề nghị người đọc tự xác định một thuật toán tương tự cho việc tính tích Boole của hai
ma trận.