Phương pháp Toán trong tin học – Ứng dụng lập trình Prolog trong Hệ chuyên gia
LỜI CÁM ƠN
Em xin chân thành cảm ơn PGS.TS. Đỗ Văn Nhơn đã tận tình truyền thụ
cho chúng em những kiến thức về Phương pháp toán trong tin học. Tuy thời
gian học không nhiều nhưng chúng em đã học hỏi được từ thầy những kiến
thức cơ bản của môn học.
Vì thời gian có hạn và kiến thức còn hạn chế nên bài thu hoạch chắc
chắn còn những khiếm khuyết. Em rất mong thầy lượng thứ và hướng dẫn để
chúng em có thể hoàn thiện tốt hơn.
Kính chúc thầy và gia đình sức khoẻ dồi dào. Chúc thầy thành công hơn
nữa trên con đường khoa học và trong công tác giảng dạy.
Hồ Chí Minh, ngày 25 tháng 12 năm 2010
Học viên : Hoàng Lê Nhật Anh
SVTH : Hoàng Lê Nhật Anh
1
Phương pháp Toán trong tin học – Ứng dụng lập trình Prolog trong Hệ chuyên gia
MỤC LỤC
CHƯƠNG I GIỚI THIỆU 3
I.1 Đặt vấn đề 3
I.2 Mục đích, yêu cầu khi thực hiện đề tài 4
I.3 Các bước thực hiện 4
I.4 Kết quả dự kiến 4
CHƯƠNG II CƠ SỞ LÝ THUYẾT 5
II.1 Hệ chuyên gia 5
II.1.1 Định nghĩa hệ chuyên gia 5
II.1.2 Hoạt động của hệ chuyên gia 5
II.1.3 Những thành phần cơ bản của một hệ chuyên gia 6
II.1.4 Biểu diễn tri thức trong hệ chuyên gia 7
II.2 UML 8
II.2.1 Lý thuyết UML 8
II.2.2 Các quy ước trong UML 9
đó.
- Máy tính và vấn đề giải quyết tình huống của con người .
Ban đầu máy tính được thiết kế chỉ với mục đích đơn giản là giúp con
người tính toán trên phép tính số học đối với các con số. Nhưng với sự phát
triển nhanh theo từng ngày, máy tính không còn là một công cụ tính toán đơn
giản nữa mà nó trở thành một công cụ đa tiện ích, từ giải quyết công việc
kinh doanh, buôn bán, trao đổi thông tin đến vui chơi giải trí…Máy tính trở
nên thông minh hơn khi người ta xây dựng các chương trình mô phỏng trí tuệ
con người hay còn gọi là trí tuệ nhân tạo. Các chương trình này có khả năng
suy nghĩ, giải quyết các vấn đề giống như một chuyên gia (expert) thuộc về
một lĩnh vực nào đó.
- Xây dựng hệ chuyên gia về nhận biết biển báo giao thông.
Khi tham gia giao thông trên đường nhất là đường có nhiều phương tiện
qua lại, thì chúng ta thường thấy rằng có rất nhiều biển báo được cắm ở hai
bên nhằm chỉ dẫn cho người điều khiển phương tiện cách thực hiện đúng luật
giao thông tại nơi quy định, sao cho bảo đảm sự an toàn tuyệt đối đối với
mình và mọi người. Nhưng có một điều là có rất nhiều người tham gia giao
thông khi gặp các biển báo, họ không biết biển báo này là biển báo gì, cách
thực hiện các chỉ dẫn như thế nào cho đúng luật. Vì vậy, có rất nhiều tai nạn
SVTH : Hoàng Lê Nhật Anh
3
Phương pháp Toán trong tin học – Ứng dụng lập trình Prolog trong Hệ chuyên gia
giao thông xẩy ra khi người tham gia giao thông không thực hiện đúng luật
tại nơi có đặt biển báo, làm thiệt hại về người và của.
Với những kiến thức về Hệ chuyên gia, Logic học, Lập trình Prolog cũng
như các kiến thức liên quan khác. Em đã xây dựng một chương trình mô
phỏng một chuyên gia, có khả năng nhận biết các biển báo giao thông, bằng
cách hỏi người sử dụng thông tin về biển báo đó.
I.2 Mục đích, yêu cầu khi thực hiện đề tài
- Mục đích của đề tài: Từ những hiểu biết vốn có và tìm hiểu qua phương
Hệ chuyên gia sử dụng các tri thức của những chuyên gia để giải quyết
các vấn đề khác nhau thuộc mọi lĩnh vực.
II.1.2 Hoạt động của hệ chuyên gia
Một hệ chuyên gia gồm ba thành phần chính là cơ sở tri thức (knowledge
base), máy suy diễn (inference engine), và hệ thống giao tiếp với người sử
dụng (user interface). Cơ sở tri thức chứa các tri thức để từ đó máy suy diễn
tạo ra câu trả lời cho người sử dụng qua hệ thống giao tiếp.
Hoạt động của hệ chuyên gia dựa trên tri thức
Hình 1 . Hoạt động của hệ chuyên gia.
SVTH : Hoàng Lê Nhật Anh
5
Máy suy diễn
(Inference
Engine)
Cơ sở tri thức
(Knowledege
base)
Hệ
thống
giao
tiếp
(User
Interface)
Người sử dụng
(User)
Phương pháp Toán trong tin học – Ứng dụng lập trình Prolog trong Hệ chuyên gia
Mỗi hệ chuyên gia chỉ đặc trưng cho một lĩnh vực vấn đề nào đó như y
Khả năng thu nhận tri thức
Giao diện người sử dụng
Giao diện người sử dụng
Phương pháp Toán trong tin học – Ứng dụng lập trình Prolog trong Hệ chuyên gia
suy diễn theo các phương pháp mà nó đã định. Có thể thấy rằng là máy suy
diễn cũng là hạt nhân trong hệ chuyên gia.
- Hệ thống giao tiếp
Còn gọi là bộ đối thoại làm nhiệm vụ giao tiếp giữa hệ chuyên gia và
người sử dụng. Thành phần này là tri thức từ người sử dụng như các câu hỏi,
các yêu cầu mà trong nhiều trường hợp là các đề nghị người sử dụng cân
thiệp vào từng nơi tiếp xúc. Giao diện đưa ra các kết luận, lời giải thích cho
người sử dụng. Lí do quan trọng chính vì sự can thiệp để tiến tới độ xử lý.
- Lịch công việc (agenda). Danh sách các luật ưu tiên do máy suy diễn tạo ra
thỏa mãn các sự kiện, các đối tượng có mặt trong bộ nhớ làm việc.
- Bộ nhớ làm việc (working memory). Cơ sở dữ liệu toàn cục chứa các sự
kiện phục vụ cho các luật.
- Khả năng giải thích (explaination facility). Giải nghĩa cách lập luận của hệ
thống cho người sử dụng.
- Khả năng thu nhận tri thức (Aquisition facility). Cho phép người sử dụng
bổ sung các tri thức vào hệ thống một cách tự động thay vì tiếp nhận tri thức
bằng cách mã hóa tri thức một cách tường minh. Khả năng thu nhận tri thức
là yếu tố mặc nhiên của nhiều hệ chuyên gia.
II.1.4 Biểu diễn tri thức trong hệ chuyên gia
Tri thức của một hệ chuyên gia có thể được biểu diễn theo nhiều cách
khác nhau. Thông thường có một số cách sau.
- Biểu diễn tri thức bằng luật sản xuất: Các luật sản xuất thường được viết
dưới dạng IF THEN, có hai dạng như sau:
IF <điều kiện> THEN <hành động>
Hoặc
IF <điều kiện> THEN <kết luận> DO <hanh động>
8
Phương pháp Toán trong tin học – Ứng dụng lập trình Prolog trong Hệ chuyên gia
UML sẽ cho ta biết cách tạo ra và đọc hiểu được một mô hình được cấu trúc
tốt, nhưng nó không cho ta biết những mô hình nào nên tạo ra và khi nào tạo ra
chúng. Đó là nhiệm vụ của quy trình phát triển phần mềm.
II.2.2 Các quy ước trong UML
- Actor (tác nhân)
Bất cứ vật gì tương tác với hệ thống được xem như một Actor. Nó có thể có
nhiều vai trò, và Actor không cần phải là một người hoặc một User, mà có thể là
bất cứ vật gì tương tác với hệ thống.
- Use Case (UC):
Use Case mô tả ai đó sử dụng hệ thống như thế nào, mô tả tương tác giữa
người sử dụng với hệ thống phần mềm để thực hiện các thao tác giải quyết
công việc cụ thể nào đó. Use Case không cho biết hệ thống làm việc bên
trong như thế nào. Nó không phải là thiết kế, cũng không phải là kế hoạch cài
đặt, nó là một phần của vấn đề cần giải quyết. Tiến trình của hệ thống được
chia nhỏ thành các Use Case để có thể nhận ra từng bộ phận của nó một cách
rõ ràng và để nhiều người có thể cùng xử lý.
Use Case là nền tảng của phân tích hệ thống. Việc tìm ra đầy đủ các UC
đảm bảo rằng hệ thống sẽ xây dựng đáp ứng mọi nhu cầu của người sử dụng.
Mỗi UC là tập hành động. Mỗi hành động là cái gì đó mà hệ thống làm, nó là
hạt nhân được hệ thống thực hiện hoàn toàn hay không thực hiện phần nào.
SVTH : Hoàng Lê Nhật Anh
9
Phương pháp Toán trong tin học – Ứng dụng lập trình Prolog trong Hệ chuyên gia
II.2.3 Các sơ đồ trong UML
- Sơ đồ trường hợp sử dụng Use Case diagram.
Use Case diagram là sơ đồ cung cấp một cách nhìn tổng quan nhất về toàn
bộ hệ thống. Trong đó bao gồm tất cả các tác nhân (Actor) và các trường hợp
sử dụng (Use Case) có liên quan đến hệ thống. Sơ đồ này được cấu tạo từ ba
Hình 4: Biển báo nguy hiểm
SVTH : Hoàng Lê Nhật Anh
12
Phương pháp Toán trong tin học – Ứng dụng lập trình Prolog trong Hệ chuyên gia
Hình 5: Biển chỉ dẫn
SVTH : Hoàng Lê Nhật Anh
13
Phương pháp Toán trong tin học – Ứng dụng lập trình Prolog trong Hệ chuyên gia
Hình 6: Biển hiệu lệnh
Từ các hình dạng của các loại biển báo, ta có thể thiết kế hệ thống như sau:
Hệ thống gồm có tác nhân là Người sử dụng và Hệ chuyên gia.
Người sử dụng cần tư vấn về các loại biển báo từ Hệ chuyên gia, và sẽ nhận được
sự tư vấn thông qua việc trả lời các câu hỏi.
SVTH : Hoàng Lê Nhật Anh
14
Phương pháp Toán trong tin học – Ứng dụng lập trình Prolog trong Hệ chuyên gia
III.2 Mô hình Usecase
Hình 7: Mô hình Usecase của hệ thống
III.3 Biểu đồ tuần tự
Biểu đồ tuần tự thể hiện các bước thực hiện cơ bản của người sử dụng cần sự tư
vấn về các loại Biển báo từ Hệ chuyên gia
SVTH : Hoàng Lê Nhật Anh
15
Phương pháp Toán trong tin học – Ứng dụng lập trình Prolog trong Hệ chuyên gia
Hình 8: Biều đồ tuần tự của việc tư vấn
III.4 Biểu đồ hoạt động
Biểu đồ hoạt động thể hiện trình tự các hoạt động diễn ra giữa người sử dụng và
Hệ chuyên gia trong quá trình hỏi.
SVTH : Hoàng Lê Nhật Anh
16
lệnh của Prolog. Phần cơ sở dữ liệu về nhận biết biển báo giao thông được
xây dựng dựa trên các đặc điểm, hình dáng, đặc trưng của biển báo đó.
SVTH : Hoàng Lê Nhật Anh
18
Phương pháp Toán trong tin học – Ứng dụng lập trình Prolog trong Hệ chuyên gia
Chẳng hạn, ta thấy rằng hầu hết các biển báo thường có các hình dáng như:
hình tròn, hình tam giác, hình chữ nhật. Trong số đó có biển báo có đường
viền bao quanh, một số khác thì không có. Phần nền và màu là phần phía
trong biển, trên phần nền thường có một hình đặc trưng nào đó. Thông
thường thì ý nghĩa của biển báo liên quan phần lớn ở hình đặc trưng này. Do
đó, chỉ cần xác định được hình đặc trưng, chúng ta có thể dễ nhận biết sự
khác biệt của biển báo đó so với biển khác.
Hai biển báo cấm người đi bộ và cấm xe mô tô sau là ví dụ: Hình10: biển báo cấm người đi bộ và cấm xe moto
Ta có thể biểu diễn sự khác nhau theo mệnh đề IF-THEN
IF
Hình của biển báo là hình tròn và
Biển báo có đường viền và
Đường viền màu đỏ và
Hình đặc trưng là hình người và
Hình đặc trưng bị gạch chéo
THEN
Biển báo là biển cấm người đi bộ
IF
Hình của biển báo là hình tròn và
Biển báo có đường viền và
Đường viền màu đỏ và
Hình đặc trưng là hình người lái xe moto
bienhinh(tron),
bienco(duong_vien),
duongvienmau(do).
% Hình tam giác viền đỏ
htgvd(bien):-
bienhinh(tamgiac),
bienco(duong_vien),
duongvienmau(do).
% Các loại Biển báo hình tròn, viền đỏ
bienbao(cam_nguoi_di_bo):-
htvd(bien),
conenmau(trang),
hinhdactrung(hinh_nguoi),
trenhinhco(gach_cheo).
bienbao(nhuong_cho_nguoi_di_bo):-
htgvd(bien),
conenmau(vang),
hinhdactrung(co_gach_ngang_duoi_hinh_nguoi).
bienbao(cam_xe_moto_2_3_banh):-
SVTH : Hoàng Lê Nhật Anh
21
Phương pháp Toán trong tin học – Ứng dụng lập trình Prolog trong Hệ chuyên gia
htvd(bien),
conenmau(trang),
hinhdactrung(gach_cheo_xemoto).
bienbao(cam_xe_oto):-
htvd(bien),
conenmau(trang),
hinhdactrung(xe_oto).
bienbao(cam_di_nguoc_chieu):-
bienbao(cam_do_xe):-
htvd(bien),
conenmau(xanh),
hinhdactrung(mot_gach_cheo_maudo).
% Biển báo hình lục giác, nền đỏ, chữ STOP
bienbao(dung_lai):-
bienhinh(khac),
bienco(duong_vien),
duongvienmau(trang),
conenmau(do),
hinhdactrung(chuSTOP).
SVTH : Hoàng Lê Nhật Anh
23
Phương pháp Toán trong tin học – Ứng dụng lập trình Prolog trong Hệ chuyên gia
% Các loại Biển báo hình tam giác viền đỏ
bienbao(giao_nhau_duong_khong_uu_tien):-
htgvd(bien),
conenmau(vang),
hinhdactrung(muitenbicatngang).
bienbao(giao_nhau_duong_cung_cap):-
htgvd(bien),
conenmau(vang),
hinhdactrung(chu_thap).
bienbao(giao_nhau_co_den_giao_thong):-
htgvd(bien),
conenmau(vang),
hinhdactrung(den_giao_thong).
bienbao(giao_nhau_voi_duong_sat_co_rao_chan):-
htgvd(bien),
conenmau(vang),
hinhdactrung(mui_ten),
huongmuiten(re_phai).
bienbao(bat_buoc_re_trai_hoac_di_thang):-
bienhinh(tron),
conenmau(xanh),
hinhdactrung(mui_ten),
SVTH : Hoàng Lê Nhật Anh
25