Tải bản đầy đủ (.doc) (5 trang)

Giáo trình Toán rời rạc Chương 2.4

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (59.29 KB, 5 trang )

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


).
Có m bộ gồm n phần tử theo chiều ngang (a
11
, a
12
, ... ,a
1n
), (a
21
, a
22
, ... ,a
2n
), ... ,
(a
m1
,a
m2
,...,a
mn
) 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ử a
ij
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ụ:
5 6 9 0
2 1 4 7
3 7 2 8

 
 
 
 

 
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
A = 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.
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.
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

z s
+ =


− =


+ =


− =

Ma trận đơn vò:
Đònh nghóa: Ma trận vuông nxn I
n
=(
ij

) trong đó
ij

=
1
0
nếu i j
nếu i j
=





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

 
 
 
thì A
t
=
1 4
2 5
3 6
 
 
 
 
 
Ma trận đối xứng:
Đònh nghóa: Một ma trận vuông nxn A=(a
ij
) gọi là đối xứng nếu ta có a
ij
=a
ji
với
mọi i,j.
Ví dụ:
Ma trận
1 2 3 4
2 8 11 5
3 11 2 6
4 5 6 9
 

 
 
 

 
 
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.

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.a
ij
).
Ta cũng đònh nghóa:
- A = (-1). A và A - B = A + (-B)
Ví dụ:
Cho A =
1 2 3
4 5 6

 
 

 
và B =
3 0 2
7 1 8
 
 

 
thì:
A + B =
4 2 5
3 6 2


 
 

 
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

ik kj
k
a b
=

,

i,j
Ta cũng dònh nghóa A
r
=
...AAA A
(thực hiện r lần phép nhân) với mọi ma trận A.
Ví dụ 1:
r s
t u
 
 
 
1 2 3
1 2 3
a a a
b b b
 
 
 
=
1 1 2 2 3 3
1 1 2 2 3 3
ra sb ra sb ra sb

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

For j:=1 to n do {với mỗi hàng đó duyệt trên các cột của B}
begin
c
ij
:= 0
For k:=1 to p do c
ij
:=c
ij
+a
ik*
b
kj
end
End
Return C=(c
ij
)
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ó n
2
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ả n
3
phép nhân và n
2
(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(n
3

) 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

ij


b
ij
).
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ó
7
( )O n
. Tuy nhiên
không tiện trình bày các thuật toán đó ở đây.
61
Ví dụ:
A=
1 0 1
0 1 0
 
 
 
và B =
0 0 1
0 1 1
 
 
 
thì
A

B=

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



b
2j
)

...

(a
ik


b
kj
))
Đò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 c
ij
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 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

×