Bài giảng Trí tuệ nhân tạo - Chương 7: Logic và suy diễn. Lập trình logic Prolog - Nguyễn Nhật Quang

Trí Tuệ Nhân Tạo  
Nguyễn Nhật Quang  
Viện Công nghệ Thông tin và Truyền thông  
Trường Đại học Bách Khoa Hà Nội  
Năm học 2009-2010  
Nội dung môn học:  
„ Giới thiệu về Trí tuệ nhân tạo  
„ Tác tử  
„ Giải quyết vấn đề: Tìm kiếm, Thỏa mãn ràng buộc  
„
Logic và suy di
ễ
n  
‰ Lập trình logic Prolog  
(Dựa trên bài giảng  
csc.villanova.edu/~dmatusze/8310summer2001/index.html/prolog1.ppt)  
„ Biểu diễn tri thức  
„ Suy diễn với tri thức không chắc chắn  
„ Học máy  
„ Lập kế hoặch  
Trí tuệ nhân tạo  
2
Lập trình logic  
„ Một chương trình logic biểu diễn một cơ sở tri thức (một  
t
ậ
p các m
ệ
nh
đề
logic)  
„ Các mệnh đề logic phải ở dạng chuẩn Horn  
p
1
∧
p
2
∧
…
∧
p
n
→
q
1
∨
q
2
∨
…
∨
q
m  
„ Nếu n=0, m=1, thì q1 là một sự kiện (fact)  
„
N
ế
u n
≥
1, m=1, thì (p
1
∧
p
2
∧
…
∧
p
n
→
q
1
) là m
ộ
t
lu
ậ
t  
(rule)  
„ Nếu n≥1, m>1, thì tương đương với luật (p1 ∧ p2 ∧ … ∧  
pn ∧ ¬q1 ∧ ¬q2 ∧ … ∧ ¬qm-1 → qm)  
Trí tuệ nhân tạo  
3
Ngôn ngữ lập trình logic Prolog  
„ Prolog = Programming Logic  
„ M
ộ
t ngôn ng
ữ
l
ậ
p trình logic 
đượ
c s
ử
d
ụ
ng r
ấ
t ph
ổ
bi
ế
n  
„ Trong ngôn ngữ Prolog  
‰ Các luật và các sự kiện là các tiên đề (axioms)  
‰ Câu hỏi, được đưa ra bởi người dùng, là định lý cần chứng minh  
„ Prolog áp dụng phương pháp suy diễn quay lui (Back  
Chaining) để chứng minh  
„ Để chứng minh P(a)  
‰ Tìm sự kiện P(t) hoặc luật (Q1 ∧ Q2 ∧ … ∧ Qn → P(t))  
‰
N
ế
u tìm
đượ
c s
ự
ki
ệ
n P(t), thay th
ế
t=a,
đị
nh lý
đượ
c ch
ứ
ng minh  
‰ Nếu tìm được luật (Q1 ∧ Q2 ∧ … ∧ Qn → P(t)), thì cần tiếp tục chứng  
minh các giả thiết  
‰ Nếu có các biến, tìm cách thay thế các biến này bằng các giá trị, sao cho  
đích chứng minh được thỏa mãn  
Trí tuệ nhân tạo  
4
Phần mềm SWI-Prolog  
„ SWI-Prolog là một công cụ lập trình Prolog được sử  
d
ụ
ng r
ấ
t ph
ổ
bi
ế
n, có các phiên b
ả
n ch
ạ
y trên các h
ệ  
điều hành Windows, MacOS, và Linux  
„
B
ả
n quy
ề
n s
ử
d
ụ
ng ph
ầ
n m
ề
m SWI-Prolog là mi
ễ
n phí  
cho mục đích học tập và nghiên cứu  
„
SWI-Prolog có th
ể
t
ả
i v
ề
t
ừ đị
a ch
ỉ
:
http://www.swi-  
prolog.org/  
Trí tuệ nhân tạo  
5
Ví dụ về chương trình Prolog (1)  
„ Suy diễn logic  
‰ Tuấn là một sinh viên của HUT  
‰ Mọi sinh viên của HUT đều học môn Toán rời rạc  
‰
Tu
ấ
n có h
ọ
c môn Toán r
ờ
i r
ạ
c không?  
„ Chương trình Prolog  
‰ studentHUT(tuan).  
‰ studDiscretMath(X) :- studentHUT(X).  
‰ ?- studDiscretMath(tuan).  
Trí tuệ nhân tạo  
6
Ví dụ về chương trình Prolog (2)  
„ Sự kiện: Tuấn là một sinh viên của HUT  
‰ studentHUT(tuan).  
„ Luật: Mọi sinh viên của HUT đều học môn Toán rời rạc  
‰ studDiscretMath(X) :- studentHUT(X).  
„ Câu hỏi (của người dùng): Tuấn có học môn Toán rời  
rạc không?  
‰ ?- studDiscretMath(tuan).  
„ Các câu hỏi có cùng dạng như các sự kiện  
Trí tuệ nhân tạo  
7
Chạy chương trình Prolog (1)  
„ Sử dụng một chương trình soạn thảo (vd: Notepad) để  
t
ạ
o ra ch
ươ
ng trình (c
ơ
s
ở
tri th
ứ
c)  
„ Ghi lại chương trình trong một tập tin định dạng văn bản  
(text only) sử dụng đuôi của tập tin là .pl  
„ Ví dụ một chương trình Prolog:  
studentHUT(tuan).  
studDiscretMath(X) :- studentHUT(X).  
Trí tuệ nhân tạo  
8
Chạy chương trình Prolog (2)  
„ Để chạy chương trình Prolog:  
‰ (Với hệ điều hành Windows), kích đúp lên tập tin chương trình,  
hoặc  
‰ Chạy phần mềm SWI-Prolog, và tham vấn (consult) tới tập tin  
chương trình  
?- consult('C:\\PrologPrograms\\myPrologProg.pl').  
„
Sau
đ
ó,
đư
a ra câu h
ỏ
i mong mu
ố
n  
?- studDiscretMath(tuan).  
„
Prolog
đư
a ra câu tr
ả
l
ờ
i  
Yes  
Trí tuệ nhân tạo  
9
Prolog – Chứng minh định lý  
„ Prolog trả về giá trị Yes có nghĩa là “chứng minh được”  
„ Prolog trả về giá trị No có nghĩa là “không thể chứng  
minh”  
?- stud_DiscretMath(hai).  
No  
„ Closed world assumption: Chương trình Prolog biết tất  
cả về những gì nó cần biết  
„ Prolog cung cấp các giá trị cho các biến khi cần, để có  
th
ể
hoàn ch
ỉ
nh m
ộ
t ch
ứ
ng minh  
?- stud_DiscretMath(X).  
X = tuan  
Trí tuệ nhân tạo  
10  
Cú pháp: Các cấu trúc  
„ Một cấu trúc (structure) gồm một tên (name) và không,  
m
ộ
t, ho
ặ
c nhi
ề
u tham s
ố
(arguments)  
„ Bỏ đi cặp dấu ngoặc (), nếu như không có tham số  
„
Các ví d
ụ
c
ủ
a c
ấ
u trúc  
‰ sunshine  
‰ man(socrates)  
‰ path(garden, south, sundial)  
Trí tuệ nhân tạo  
11  
Cú pháp: Các mệnh đề cơ sở  
„ Một cấu trúc chính là một mệnh đề cơ sở (base clause)  
„ Một mệnh đề cơ sở biểu diễn một sự kiện (fact)  
„ Các ví dụ của mệnh đề cơ sở  
‰ john.  
‰ mary  
‰
bill  
‰ loves(john, mary).  
‰ loves(mary, bill).  
Trí tuệ nhân tạo  
12  
Cú pháp: Biểu diễn luật  
„ Một luật được biểu diễn bao gồm  
‰ Một cấu trúc (biểu diễn mệnh đề kết luận của luật – mệnh đề  
THEN)  
‰ Ký hiệu :-  
‰ Một danh sách các cấu trúc (biểu diễn mệnh đề giả thiết của luật  
– mệnh đề IF), ngăn cách nhau bởi dấu ,  
„
Các ví d
ụ
c
ủ
a lu
ậ
t  
‰ mortal(X) :- man(X).  
‰ happy(X) :- healthy(X), wealthy(X), wise(X).  
„ Dấu , giữa các cấu trúc có nghĩa như toán tử logic AND  
Trí tuệ nhân tạo  
13  
Cú pháp: Các vị từ logic  
„ Một vị từ (predicate) là một tập hợp các mệnh đề với  
cùng tên và m
ộ
t s
ố
(>=1) các tham s
ố  
„ Ví dụ: Các mệnh đề biểu diễn vị từ loves  
loves(john, mary).  
loves(mary, bill).  
loves(chuck, X) :- female(X), rich(X).  
Trí tuệ nhân tạo  
14  
Cú pháp: Chương trình  
„ Một chương trình (program) là một tập hợp các mệnh  
đề  
„ Các mệnh đề trong chương trình có thể được sắp xếp  
theo bất kỳ trật tự (thứ tự) nào  
„ Các mệnh đề của một vị từ được sử dụng (được xét đến)  
theo đúng trật tự của chúng trong chương trình  
Trí tuệ nhân tạo  
15  
Cú pháp: Các biến và hằng  
„ Các biến bắt đầu bằng chữ cái in hoa hoặc ký tự đặc biệt  
Vd: X, Socrates, _result  
„ Các hằng không bắt đầu bằng chữ cái in hoa hoặc ký tự  
đặ
c bi
ệ
t  
Vd: x, socrates  
„ Các hằng chứa các ký tự đặc biệt, hoặc bắt đầu với chữ  
cái in hoa, thì phải đặt vào trong cặp ký tự nháy đơn ''  
Vd: 'C:\\My Documents\\examples.pl'  
„ Để hiển thị ký tự nháy đơn, thì phải sử dụng: '' hoặc \'  
Trí tuệ nhân tạo  
16  
Cú pháp: Chú thích  
„ Được đặt trong cặp dấu: /*…*/  
„ Hoặc được đặt sau dấu %  
„ Ví dụ  
‰ parent(x,y). % sự kiện mô tả x là cha mẹ của y  
Trí tuệ nhân tạo  
17  
Cú pháp: Các lỗi hay gặp  
„ Phân biệt giữa chữ hoa và chữ thường là rất quan trọng  
„ Không được có khoảng trắng (space characters) giữa  
tên và danh sách tham số của một cấu trúc  
‰ Biểu diễn h
ợ
p l
ệ
: man(socrates).  
‰ Biểu diễn không hợp lệ: man (socrates).  
„ Kết thúc của mỗi mệnh đề phải có dấu chấm (.)  
‰ Có thể đặt dấu chấm ở dòng kế tiếp  
Trí tuệ nhân tạo  
18  
Suy diễn lùi trong Prolog  
„ Giả sử chúng ta có cơ sở tri thức (chương trình Prolog):  
loves(chuck, X) :- female(X), rich(X).  
female(jane).  
female(mary).  
rich(mary).  
„ Giả sử người dùng đặt câu hỏi  
loves(chuck, X)  
„ Quá trình suy diễn lùi (Back chaining) của Prolog:  
‰ female(X) = female(jane), X = jane.  
rich(jane).  
‰ female(X) = female(mary), X = mary.  
rich(mary). : thành công (chứng minh được!)  
: thất bại (không thể chứng minh được!)  
Trí tuệ nhân tạo  
19  
Các lời gọi  
„ Mỗi lời gọi (call) trong chương trình Prolog được thể hiện  
b
ở
i:  
call  
fail  
exit  
redo  
„ Mỗi cấu trúc (trong chương trình Prolog) có bốn cổng  
(ports): call, exit, redo, fail  
„ Cổng exit kết nối với cổng call  
„ Cổng fail kết nối với cổng redo  
Trí tuệ nhân tạo  
20  
Tải về để xem bản đầy đủ
pdf 46 trang Thùy Anh 17700 Free
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Trí tuệ nhân tạo - Chương 7: Logic và suy diễn. Lập trình logic Prolog - Nguyễn Nhật Quang", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_tri_tue_nhan_tao_chuong_7_logic_va_suy_dien_lap_tr.pdf