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
Lập trình logic Prolog
(Dựa trên bài giảng
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
Các mệnh đề logic phải ở dạng chuẩn Horn
1 2 … n 1 2 … m
Nếu n=0, m=1, thì q1 là một sự kiện (fact)
1 2 n 1
(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
Mlng rt phbin
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))
t=a,
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ử
điều hành Windows, MacOS, và Linux
cho mục đích học tập và nghiên cứu
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
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) để
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').
ó,
?- studDiscretMath(tuan).
a ra câu trli
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ó
?- 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,
Bỏ đi cặp dấu ngoặc (), nếu như không có tham số
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
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 ,
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
Ví dụ: Các mệnh đề biểu diễn vị từ loves
loves(john, mary).
loves(mary, bill).
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 bit
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 hp 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
call
fail
exit
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 đủ
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:
bai_giang_tri_tue_nhan_tao_chuong_7_logic_va_suy_dien_lap_tr.pdf

