III. 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
11 12 1
21 22 2
1 2
...
...
... ... ... ...
...
n
n
m m mn
a a a
a a a
a a a
trong đó các phần tử a
ij
∈
K gọi là một ma trận trên K.
Ma trận trên còn được kí hiệu (a
ij
), i=1, ... ,m, j=1, ... ,n hoặc đơn giản chỉ là (a
ij
,
12
22
2
...
m
a
a
a
, ... ,
1
2
...
n
n
mn
a
a
a
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.
58
Ví dụ:
2 3 5
1 4
x y z s
x y z s
+ +
=
− −
tương đương với hệ thống
3
1
2 5
4
x y
x y
z s
gọi là ma
trận đơn vò.
I
n
=
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 A
t
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 3
4 5 6
−
là một ma trận đối xứng.
59
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 = A
t
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=(a
ij
), B=(b
ij
). Tổng của A và B là một
ma trận cùng dạng C=(c
ij
) được đònh nghóa bởi:
c
ij
=a
ij
+b
ij
với mọi i, j
Ta không đònh nghóa tổng của hai ma trận khác dạng.
−
và 3A =
3 6 9
12 15 18
−
−
3A - B =
0 6 7
19 14 26
−
−
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
ta ub ta ub ta ub
+ + +
+ + +
Ví dụ 2:
60
1 2 1 1 1 5
3 4 0 2 3 11
=
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: AI
n
= I
m
A = A với mọi ma trận A kích thước mxn.
Thông thường ta qui ước: A
o
= I
n
.
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
) phép nhân và phép cộng (độ
phức tạp giải thuật là O(n
3
)
2
.
3. 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 A=(a
ij
) và
B=(b
ij
) có cùng kích thước, ta có thể đònh nghóa các phép toán ma trận:
A
∧
B=(a
ij
∧
b
ij
) và A
∨
B=(a
0 0 1
0 1 0
và A
∨
B =
1 0 1
0 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
thước lần lượt là mxp và pxn, kí hiệu , là ma trận boole kích thước mxn, như sau:
A
⊗
B = (c
ij
) = ((a
i1
∧
b
1j
)
∨
(a
i2
∧
và B=
1 1 0
0 1 1
thì A
⊗
B=
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.
62