Tiểu luận Biểu diễn tri thức và suy luận GVHD: PGS. TS Đỗ Văn Nhơn
CHƯƠNG I
TỔNG QUAN VỀ MẠNG NGỮ NGHĨA
1. Khái niệm cơ bản
Mạng ngữ nghĩa là một trong những phương pháp biểu diễn tri thức đơn
giản và dễ hiểu nhất để trình bày khá nhiều vấn đề. Phương pháp này biểu
diễn tri thức dưới dạng một đồ thị. Trong đó, các đỉnh là các đối tượng (khái
niệm), còn các cung cho biết mối quan hệ giữa các đối tượng (khái niệm) này.
Quan hệ là phần chính trong mạng ngữ nghĩa. Không có quan hệ, tri thức
chỉ là tập hợp các sự kiện không liên quan với nhau. Với quan hệ, tri thức trở
thành một cấu trúc nối liền với các tri thức khác có liên quan.
Có một cung nối giữa hai đối tượng a và đối tượng b, ký hiệu a→b nếu có
một quan hệ nào đó giữa hai đối tượng a, b.
Mạng ngữ nghĩa là một dạng đồ thị nên nó thừa hưởng được tất cả những
mặt mạnh của đồ thị. Ta có thể dùng những thuật toán của đồ thị trên mạng
ngữ nghĩa như thuật toán tìm liên thông, tìm đường đi ngắn nhất,… để thực
hiện các cơ chế suy luận. Điểm đặc biệt của mạng ngữ nghĩa so với đồ thị
thông thường chính là gán một ý nghĩa (có, làm, là, biết,…) cho các cung.
Trong đồ thị tiêu chuẩn, việc có một cung nối giữa hai đỉnh chỉ cho biết sự
liên hệ giữa hai đỉnh đó và tất cả các cung trong đồ thị biểu diễn cho cùng một
loại liên hệ. Trong mạng ngữ nghĩa, cung nối giữa hai đỉnh còn cho biết giữa
hai khái niệm tương ứng có sự liên hệ như thế nào. Việc gán ngữ nghĩa vào
các cung của đồ thị đã giúp giảm bớt được số lượng đồ thị cần phải dùng để
biểu diễn các mối liên hệ giữa các khái niệm.
Ta có thể nới rộng mạng ngữ nghĩa bằng cách thêm các nút và nối chúng
vào đồ thị. Các nút mới ứng với các đối tượng bổ sung. Thông thường có thể
nới rộng mạng ngữ nghĩa theo 3 cách:
HVTH: Trầm Hoàng Nam – CH1301100 Trang 1
Tiểu luận Biểu diễn tri thức và suy luận GVHD: PGS. TS Đỗ Văn Nhơn
+ Thêm đối tượng tương tự
+ Thêm một đối tượng đặc biệt hơn
+ Thêm một đối tượng tổng quát hơn
Điểm đặc biệt của mạng ngữ nghĩa là tính kế thừa. Bởi vì ngay từ trong
khái niệm, mạng ngữ nghĩa đã hàm ý sự phân cấp (như các mối liên hệ “là”)
nên có nhiều đỉnh trong mạng mặc nhiên sẽ có những thuộc tính của những
đỉnh khác.
Tuy mạng ngữ nghĩa là một kiểu biểu diễn trực quan đối với con người
nhưng khi đưa vào máy tính, các đối tượng và mối liên hệ giữa chúng
thường được biểu diễn dưới dạng những phát biểu động từ (như vị từ). Hơn
nữa, các thao tác tìm kiếm trên mạng ngữ nghĩa thường khó khăn (đặc biệt
đối với những mạng có kích thước lớn). Do đó, mô hình mạng ngữ nghĩa
được dùng chủ yếu để phân tích vấn đề. Sau đó, nó sẽ được chuyển đổi sang
dạng luật sinh hoặc Frame để thi hành hoặc mạng ngữ nghĩa sẽ được dùng
kết hợp với một số phương pháp biểu diễn khác.
Có 2 loại quan hệ đặc biệt:
+ "a là b" nghĩa là đối tượng a thuộc vào tập đối tượng
được biểu diễn bởi khái niệm b hoặc tập các đối tượng biểu diễn bởi khái
niệm a là tập con của tập đối tượng biểu diễn khái niệm b (quan hệ is-a).
Ví dụ: Diêu Hồng → cá
Ngược lại với quan hệ "là" là quan hệ "bao gồm". Khi có <a là b> (hoặc
"b bao gồm a"), các thông tin cơ bản về các đối tượng được cho bởi b sẽ
truyền lại cho a (nghĩa là a được thừa hưởng những gì b có).
Ví dụ về mạng ngữ nghĩa:
Giữa các khái niệm chích chòe, chim, hót, cánh, tổ có một số mối quan
hệ như sau :
• Chích chòe là một loài chim.
HVTH: Trầm Hoàng Nam – CH1301100 Trang 2
Tiểu luận Biểu diễn tri thức và suy luận GVHD: PGS. TS Đỗ Văn Nhơn
• Chim biết hót
• Chim có cánh
• Chim sống trong tổ
Các khái niệm và mối quan hệ này sẽ được biểu diễn trực quan bằng
một đồ thị như sau
Hình 1.Khái niệm về mạng ngữ nghĩa
Như đã thấy trong hình 1, do mạng ngữ nghĩa là một loại đồ thị cho nên
ta có thể sử dụng tất cả những kỹ thuật mạnh mẽ đã được phát triển cho công
cụ này. Điều này có nghĩa là ta có thể áp dụng các thuật toán của đồ thị trên
mạng ngữ nghĩa như thuật toán tìm liên thông, tìm đường đi ngắn nhất,
v.v… để thực hiện các cơ chế suy luận. Điểm đặc biệt của mạng ngữ nghĩa
so với đồ thị thông thường chính là việc ta có thể gán các ý nghĩa khác nhau
(có, làm, là, biết, ) cho các cung. Trong đồ thị thông thường, việc có một
cung nối giữa hai đỉnh chỉ cho biết có sự liên hệ giữa hai đỉnh đó và tất cả
các cung trong đồ thị đều biểu diễn cho cùng một loại liên hệ. Trong mạng
ngữ nghĩa, cung nối giữa hai đỉnh còn cho biết giữa hai khái niệm tương ứng
có sự liên hệ như thế nào. Việc gán ngữ nghĩa vào các cung của đồ thị đã
giúp giảm bớt được số lượng đồ thị cần phải dùng để biễu diễn các mối liên
hệ giữa các khái niệm. Chẳng hạn như trong ví dụ trên, nếu sử dụng đồ thị
thông thường, ta phải dùng đến 4 loại đồ thị cho 4 mối liên hệ : một đồ thị để
HVTH: Trầm Hoàng Nam – CH1301100 Trang 3
Tiểu luận Biểu diễn tri thức và suy luận GVHD: PGS. TS Đỗ Văn Nhơn
biểu diễn mối liên hệ "là", một đồ thị cho mối liên hệ "làm", một cho
"biết" và một cho "có".
Một điểm khá thú vị của mạng ngữ nghĩa là tính kế thừa. Bởi vì ngay từ
trong khái niệm, mạng ngữ nghĩa đã hàm ý sự phân cấp (như các mối liên
hệ "là") nên có nhiều đỉnh trong mạng mặc nhiên sẽ có những thuộc tính của
những đỉnh khác. Chẳng hạn theo mạng ngữ nghĩa ở trên, ta có thể dễ dàng
trả lời "có" cho câu hỏi : "Chích chòe có làm tổ không?". Ta có thể
khẳng định được điều này vì đỉnh "chích chòe" có liên kết "là" với đỉnh
"chim" và đỉnh "chim" lại liên kết "biết" với đỉnh "làm tổ" nên suy ra đỉnh
"chích chòe" cũng có liên kết loại "biết" với đỉnh "làm tổ". Đây là kiểu "suy
luận" bắt nguồn từ thuật toán "dầu loang" hay "tìm liên thông" trên đồ thị.
Chính đặc tính kế thừa của mạng ngữ nghĩa cho phép ta có thể thực
hiện được rất nhiều phép suy diễn từ những thông tin sẵn có trên mạng ngữ
nghĩa đó.
Tuy mạng ngữ nghĩa là một kiểu biểu diễn trực quan đối với con người
nhưng khi đưa vào máy tính, các đối tượng và mối liên hệ giữa chúng
thường được biểu diễn dưới dạng những phát biểu động từ (như vị từ). Hơn
nữa, các thao tác tìm kiếm trên mạng ngữ nghĩa thường khó khăn (đặc
biệt đối với những mạng có kích thước lớn). Do đó, mô hình mạng ngữ
nghĩa được dùng chủ yếu để phân tích vấn đề. Sau đó, nó sẽ được
chuyển đổi sang dạng luật hoặc frame để thi hành hoặc mạng ngữ nghĩa
sẽ được dùng kết hợp với một số phương pháp biểu diễn khác.
2. Ưu điểm và nhược điểm của mạng ngữ nghĩa
a. Ưu điểm
- Mạng ngữ nghĩa rất linh động, ta có thể dễ dàng thêm vào mạng các
đỉnh hoặc cung mới để bổ sung các tri thức cần thiết.
- Mạng ngữ nghĩa có tính trực quan cao nên rất đễ hiểu.
HVTH: Trầm Hoàng Nam – CH1301100 Trang 4
Tiểu luận Biểu diễn tri thức và suy luận GVHD: PGS. TS Đỗ Văn Nhơn
- Mạng ngữ nghĩa cho phép các đỉnh có thể thừa kế, các tính chất từ các
đỉnh khác thông qua các cung loại “là”, từ đó, có thể đặt ra các liên kết
“ngầm” giữa những đỉnh không có liên kết trực tiếp với nhau.
- Mạng ngữ nghĩa hoạt động khá tự nhiên theo cách thức con người ghi
nhận thông tin.
b. Nhược điểm
- Cho đến nay vẫn chưa có một chuẩn nào qui định các giới hạn cho các
đỉnh và cung của mạng. Nghĩa là có thể gán ghép bất kỳ khái niệm nào cho
đỉnh hoặc cung.
- Tính thừa kế (vốn là một ưu điểm) trên mạng sẽ có thể dẫn đến nguy
cơ mâu thuẫn trên tri thức.
- Hầu như không thể biểu diễn các tri thức dạng thủ tục bằng mạng ngữ
nghĩa vì các khái niệm về thời gian về trình tự không được thể hiện tường
minh trên mạng ngữ nghĩa.
HVTH: Trầm Hoàng Nam – CH1301100 Trang 5
Tiểu luận Biểu diễn tri thức và suy luận GVHD: PGS. TS Đỗ Văn Nhơn
CHƯƠNG II
GIẢI BÀI TOÁN TAM GIÁC SỬ DỤNG MẠNG NGỮ
NGHĨA
1. Sơ lược về bài toán tam giác bằng mạng ngữ nghĩa.
Có 22 yếu tố liên quan đến cạnh và góc của tam giác. Để xác định một
tam giác thì ta phải có 3 yếu tố. Trong đó phải có yếu tố cạnh. Như vậy có
khoảng (khoảng vài ngàn) cách để xây dựng hay xác định một tam
giác. Theo thống kê thì có khoảng trên 200 công thức liên quan đến cạnh
và góc của tam giác.
Để giải bài toán này bằng mạng ngữ nghĩa, ta phải sử dụng khoảng 200
đỉnh để chứa công thức và khoảng 22 đỉnh để chứa các yếu tố của tam giác.
Mạng ngữ nghĩa cho bài toán này có cấu trúc như sau:
• Đỉnh của đồ thị bao gồm 2 loại:
+ Đỉnh chứ công thức (ký hiệu bằng hình chữ nhật):
+ Đỉnh chứa các yếu tố tam giác (ký hiệu bằng hình tròn):
• Cung: chỉ nối từ đỉnh hình tròn đến đỉnh hình chữ nhật cho biết yếu tố
tam giác xuất hiện trong công thức nào(không có trường hợp cung nối
giữa hai đỉnh hình tròn hay nối giữa 2 đỉnh hình chữ nhật).
Lưu ý: trong một công thức liên hệ giữa n yếu tố của tam giác, ta
giả định rằng nếu đã biết giá trị của n-1 yếu tố thì sẽ tính được giá trị của
yếu tố còn lại. Chẳng hạn như trong công thức tổng 3 góc của tam giác bằng
180
0
thì khi biết được hai góc, ta sẽ tính được góc còn lại.
2. Cơ chế thực hiện và giải thuật
Cơ chế suy diễn thực hiện theo thuật toán "loang" đơn giản sau :
B1 : Kích hoạt những đỉnh hình tròn đã cho ban đầu (những yếu tố đã
có giá trị)
B2 : Lặp lại bước sau cho đến khi kích hoạt được tất cả những đỉnh ứng
với những yếu tố cần tính hoặc không thể kích hoạt được bất kỳ đỉnh nào
nữa.
HVTH: Trầm Hoàng Nam – CH1301100 Trang 6
Tiểu luận Biểu diễn tri thức và suy luận GVHD: PGS. TS Đỗ Văn Nhơn
Nếu một đỉnh hình chữ nhật có cung nối với n đỉnh hình tròn mà n-
1 đỉnh hình tròn đãđược kích hoạt thì kích hoạt đỉnh hình tròn còn lại (và
tính giá trị đỉnh còn lại này thông qua công thức ở đỉnh hình chữ nhật).
Giả sử ta có mạng ngữ nghĩa để giải bài toán tam giác như hình sau: (Ví
dụ này cũng sẽ được sử dụng trong source code demo chương trình kèm
theo).
Hình 2. Mạng ngữ nghĩa cho bài toán tam giác
Ví dụ : "Cho hai góc
α
,
β
và chiều dài cạnh a của tam giác. Tính chiều
dài đường cao
c
h
". Với mạng ngữ nghĩa đã cho trong hình trên. Các bước
thi hành của thuật toán như sau :
Bắt đầu : đỉnh
α
,
β
,a của đồ thị được kích hoạt.
• Công thức (1) được kích hoạt (vì
α
,
β
,a được kích hoạt). Từ công
thức (1) tính được cạnh b. Đỉnh b được kích hoạt.
• Công thức (4) được kích hoạt (vì
α
,
β
được kích hoạt). Từ công thức
(4) tính được góc
δ
HVTH: Trầm Hoàng Nam – CH1301100 Trang 7
Tiểu luận Biểu diễn tri thức và suy luận GVHD: PGS. TS Đỗ Văn Nhơn
• Công thức (2) được kích hoạt (vì 3 đỉnh
α
,
β
,
δ
được kích hoạt). Từ
công thức (2) tính được cạnh c. Đỉnh c được kích hoạt.
• Công thức (3) được kích hoạt (vì 3 đỉnh a, b, c được kích hoạt) . Từ
công thức (3) tính được diện tích S. Đỉnh S được kích hoạt.
• Công thức (5) được kích hoạt (vì 2 đỉnh S, c được kích hoạt). Từ công
thức (5) tính được
c
h
. Đỉnh
c
h
được kích hoạt.
• Giá trị
c
h
đã được tính.
Thuật toán kết thúc.
3. Xây dựng chương trình giải bài toán tam giác bằng mạng ngữ
nghĩa của ví dụ trên.
Về mặt chương trình, ta có thể cài đặt mạng ngữ nghĩa giải bài toán tam
giác bằng một mảng hai chiều A trong đó:
• Cột: ứng với công thức. Mỗi cột ứng với một công thức tam giác khác
nhau (đỉnh hình chữ nhật).
• Dòng: ứng với yếu tố tam giác. Mỗi dòng ứng với một yếu tố tam giác
khác nhau (đỉnh hình tròn).
Phần tử A[i, j] = -1 nghĩa là trong công thức ứng với cột j có yếu tố
tam giác ứng với cột i. Ngược lại A[i,j] = 0.
// Khai báo biến.
private float[,] a = new float[8, 5];
// Khởi tạo các yếu tố trong tam giác theo ma trận lúc đầu.
private void init()
{
float temp = -1; // Bien tam
for (int i = 0; i < 8; i++ )
{
for (int j = 0; j < 5; j++ )
{
a[i, j] = 0;
}
}
HVTH: Trầm Hoàng Nam – CH1301100 Trang 8
Tiểu luận Biểu diễn tri thức và suy luận GVHD: PGS. TS Đỗ Văn Nhơn
a[0, 0] = a[1, 0] = a[3, 0] = a[4, 0] = temp;
a[1, 1] = a[2, 1] = a[4, 1] = a[5, 1] = temp;
a[3, 2] = a[4, 2] = a[5, 2] = a[6, 2] = temp;
a[0, 3] = a[1, 3] = a[2, 3] = temp;
a[5, 4] = a[6, 4] = a[7, 4] = temp;
}
Để thực hiện thao tác "kích hoạt" một đỉnh hình tròn, ta đặt giá trị của
toàn dòng ứng với yếu tố tam giác bằng 1.
Để kiểm tra xem một công thức đã có đủ n-1 yếu tố hay chưa (nghĩa là
kiểm tra điều kiện "đỉnh hình chữ nhật có cung nối với n đỉnh hình tròn mà
n-1 đỉnh hình tròn đã được kích hoạt"), ta chỉ việc lấy hiệu giữa tổng số ô có
giá trị bằng 1 và tổng số ô có giá trị -1 trên cột ứng với công thức cần kiểm
tra. Nếu kết quả bằng n, thì công thức đã có đủ n-1 yếu tố.
Trở lại mạng ngữ nghĩa đã cho. Quá trình thi hành kích hoạt được diễn ra
như sau :
Mảng biểu diễn mạng ngữ nghĩa ban đầu
(1) (2) (3) (4) (5)
α
-1 0 0 -1 0
β
-1 -1 0 -1 0
δ
0 -1 0 -1 0
a -1 0 -1 0 0
b -1 -1 -1 0 0
c 0 -1 -1 0 -1
S 0 0 -1 0 -1
c
h
0 0 0 0 -1
Khởi đầu: đỉnh , a của đồ thị được kích hoạt.
(1) (2) (3) (4) (5)
HVTH: Trầm Hoàng Nam – CH1301100 Trang 9
Tiểu luận Biểu diễn tri thức và suy luận GVHD: PGS. TS Đỗ Văn Nhơn
α
1 0 0 1 0
β
1 1 0 1 0
δ
0 -1 0 -1 0
a 1 0 1 1 0
b -1 -1 -1 0 0
c 0 -1 -1 0 -1
S 0 0 -1 0 -1
c
h
0 0 0 0 -1
Trên cột (1), hiệu (1+1+1 - (-1)) = 4 nên dòng b sẽ được kích hoạt.
(1) (2) (3) (4) (5)
α
1 0 0 1 0
β
1 1 0 1 0
δ
0 -1 0 -1 0
a 1 0 1 1 0
b 1 1 1 0 0
c 0 -1 -1 0 -1
S 0 0 -1 0 -1
c
h
0 0 0 0 -1
Trên cột (4), hiệu (1+1+1 - (-1)) = 4 nên dòng sẽ được kích hoạt.
(1) (2) (3) (4) (5)
α
1 0 0 1 0
HVTH: Trầm Hoàng Nam – CH1301100 Trang 10
Tiểu luận Biểu diễn tri thức và suy luận GVHD: PGS. TS Đỗ Văn Nhơn
β
1 1 0 1 0
δ
0 1 0 1 0
a 1 0 1 1 0
b 1 1 1 0 0
c 0 -1 -1 0 -1
S 0 0 -1 0 -1
c
h
0 0 0 0 -1
Trên cột (2), hiệu (1+1+1 + (1)) = 4 nên dòng c được kích hoạt.
(1) (2) (3) (4) (5)
α
1 0 0 1 0
β
1 1 0 1 0
δ
0 1 0 1 0
a 1 0 1 1 0
b 1 1 1 0 0
c 0 1 1 0 1
S 0 0 -1 0 -1
c
h
0 0 0 0 -1
Trên cột (3), hiệu (1+1+1 - (-1)) = 4 nên dòng S được kích hoạt.
(1) (2) (3) (4) (5)
α
1 0 0 1 0
HVTH: Trầm Hoàng Nam – CH1301100 Trang 11
Tiểu luận Biểu diễn tri thức và suy luận GVHD: PGS. TS Đỗ Văn Nhơn
β
1 1 0 1 0
δ
0 1 0 1 0
a 1 0 1 1 0
b 1 1 1 0 0
c 0 1 1 0 1
S 0 0 1 0 1
c
h
0 0 0 0 -1
Trên cột (5), hiệu (1+1 + (1)) = 3 nên dòng hC được kích hoạt.
Các hàm xử lý các ma trận ngữ nghĩa:
// Lấy vị trí yếu tố chưa biết.
private int GetElementNotKnow(int k)
// Kích hoạt yếu tố chưa biết.
private void activationElementKnow()
// Kích hoạt theo cơ chế lan truyền.
private void spreadingActivation(int j, int ElementNotKnow)
// Xử lý
private void Solution()
HVTH: Trầm Hoàng Nam – CH1301100 Trang 12
Tiểu luận Biểu diễn tri thức và suy luận GVHD: PGS. TS Đỗ Văn Nhơn
4. Giao diện chương trình
Chương trình được xây dựng trên môi trường visual studio 2010, ngôn
ngữ C#
HVTH: Trầm Hoàng Nam – CH1301100 Trang 13
Tiểu luận Biểu diễn tri thức và suy luận GVHD: PGS. TS Đỗ Văn Nhơn
5. Cách sử dụng chương trình demo
Nhập vào các giá trị lúc đầu của tam giác vào các textbox màu vàng trên
chương trình.
• Chọn giá trị cần tính trong combobox phía bên phải.
• Nhấn nút Tính để thực hiện tính tam giác theo mạng ngữ nghĩa đã
được cài đặt.
• Sau khi tính xong, ta có thể nhất nút Làm bài khác để tiếp tục làm
hoặc Thoát để thoát chương trình
HVTH: Trầm Hoàng Nam – CH1301100 Trang 14
Tiểu luận Biểu diễn tri thức và suy luận GVHD: PGS. TS Đỗ Văn Nhơn
CHƯƠNG 3
KẾT LUẬN
Vấn đề biểu diễn tri thức đóng vai trò quan trọng trong thiết kế và xây
dựng một hệ cơ sở tri thức và một hệ giải bài toán thông minh. Phương pháp
biểu diễn tri thức thích hợp sẽ tạo nên một hệ thống mạnh. Các phương pháp
biểu diễn tri thức đều có những ưu điểm nhất định trong việc biểu diễn từng
dạng tri thức. Không một kỹ thuật riêng lẻ nào có thể biểu diễn đầy đủ các
khía cạnh của tri thức mà chỉ biểu diễn được một phần của tri thức đa dạng
và chưa hướng tới một mô hình tri thức bao hàm nhiều dạng thông tin và
nhiều dạng sự kiện khác nhau. Do vậy, cần có sự kết hợp của các phương
pháp biểu diễn khác nhau trong thiết kế để xây dựng một cơ sở tri thức cho
một hệ giải toán thông minh, thiết kế một tác nhân thông minh, để máy tính
có thể sử dụng được tri thức, có thể xử lý được tri thức, dưới dạng thuận tiện
cho máy tính giúp thu thập được thông tin, dữ liệu cùng với những tri thức
để ta có được những quyết định phán đoán trong mọi lĩnh vực.
Xu hướng phát triển của phần mềm trong tương lai sẽ mở rộng thêm
nhiều chức năng nữa, có thể trả lời được nhiều câu hỏi hơn cho người dùng,
cũng như sẽ tạo nên giao diện thân thiện và đẹp hơn.
Xin chân thành cám ơn thầy PGS. TS. Đỗ Văn Nhơn đã tận tình giúp đỡ
em hoàn thành bài báo cáo, cảm ơn các thầy cô và các bạn trong lớp đã giúp
đỡ tôi trong lúc thực hiện để có được kết quả này.
Học viên thực hiện
Trầm Hoàng Nam
HVTH: Trầm Hoàng Nam – CH1301100 Trang 15
Tiểu luận Biểu diễn tri thức và suy luận GVHD: PGS. TS Đỗ Văn Nhơn
TÀI LIỆU THAM KHẢO
[1] PGS. TS. Đỗ Văn Nhơn, Bài giảng môn Biểu Diễn Tri Thức Và Ứng
Dụng
[2] GS.TSKH Hoàng Kiếm, Giải một bài toán trên máy tính như thế nào.
[3] GS. TSKH. Hoàng Kiếm, PGS.TS. Đỗ Phúc, PGS. TS. Đỗ Văn Nhơn,
Giáo trình các hệ cơ sở tri thức, NXB ĐH QG TPHCM, 2009.
HVTH: Trầm Hoàng Nam – CH1301100 Trang 16
MỤC LỤC
CHƯƠNG II 6
GIẢI BÀI TOÁN TAM GIÁC SỬ DỤNG MẠNG NGỮ NGHĨA 6
CHƯƠNG 3 15
KẾT LUẬN 15
TÀI LIỆU THAM KHẢO 16