DANH MỤC CÁC THUẬT NGỮ Chương trình logic nền Ground program Chương trình tập trả lời Chương trình logic mở rộng Chương trình logic dạng tuyển mở rộng Answer Set Program Extended Logic P
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO
LUẬN VĂN THẠC SĨ KHOA HỌC
CÔNG NGHỆ THÔNG TIN
NGƯỜI HƯỚNG DẪN KHOA HỌC PGS.TS TRƯƠNG CÔNG TUẤN
Huế, 2014
Trang 2LỜI CAM ĐOAN
Tôi cam đoan đây là công trình nghiên cứu của riêng tôi dưới sự hướng dẫn khoa học của thầy giáo PGS.TS Trương Công Tuấn
Các kết quả nêu trong luận văn là trung thực, có nguồn gốc rõ ràng, được trích dẫn đầy đủ và chưa từng công bố trong bất kỳ công trình khoa học nào
Tác giả luận văn
Võ Thị Nhỏ
Trang 3LỜI CẢM ƠN
Luận văn được hoàn thành dưới sự hướng dẫn khoa học của thầy PGS.TS Trương Công Tuấn, trường Đại học Khoa học Huế Tôi xin bày tỏ lòng biết ơn chân thành, sâu sắc nhất đến thầy về sự hướng dẫn khoa học, tận tình, chi tiết và luôn tạo mọi điều kiện tốt nhất để tôi có thể hoàn thành luận văn này
Tôi xin kính gửi lời cảm ơn đến quý thầy cô giáo trong Khoa Công nghệ thông tin trường Đại học Khoa học Huế, quý thầy cô giáo ở các đơn vị trực thuộc Đại học Huế, các thầy cô cán bộ phòng Sau Đại học cùng những thầy
cô thỉnh giảng đã trực tiếp giảng dạy, truyền đạt kiến thức và cung cấp những nguồn tư liệu quý báu cho tôi trong suốt quá trình học tập và nghiên cứu Bên cạnh đó, tôi xin được dành những tình cảm tốt đẹp và lời cảm ơn đến trường Đại học Tiền Giang - Khoa Công nghệ thông tin, cùng các Phòng, Ban, Trung tâm trong Trường Đại học Tiền Giang đã tạo mọi điều kiện thuận lợi để tôi có điều kiện cơ sở vật chất học tập và hoàn thành tốt luận văn
Tôi xin bày tỏ lòng biết ơn đến những người thân trong gia đình và bạn
bè, đồng nghiệp đã luôn động viên, giúp đỡ, tạo điều kiện để cho tôi hoàn thành luận văn này
Tôi chân thành tri ân
Huế, tháng 09 năm 2014
Học viên
Võ Thị Nhỏ
Trang 4MỤC LỤC
Trang
TRANG PHỤ BÌA
LỜI CAM DOAN
LỜI CẢM ƠN
DANH MỤC CÁC THUẬT NGỮ iii
DANH MỤC CÁC KÝ HIỆU v
CÁC CHỮ VIẾT TẮT vi
DANH MỤC CÁC HÌNH VẼ vii
MỞ ĐẦU 1
Chương 1 TỔNG QUAN VỀ CHƯƠNG TRÌNH LOGIC 3
1.1 Một số định nghĩa 3
1.2 Chương trình logic dương 4
1.3 Phủ định trong các chương trình logic 9
1.4 Các tính chất của mô hình bền vững 13
1.5 Lập luận từ các mô hình bền vững 15
1.6 Tiểu kết chương 1 16
Chương 2 NGỮ NGHĨA TẬP TRẢ LỜI CỦA CHƯƠNG TRÌNH LOGIC 17
2.1 Ràng buộc 17
2.2 Phủ định mặc định và phủ định mạnh 18
2.3 Cú pháp và ngữ nghĩa tập trả lời của chương trình logic mở rộng 19
2.4 Các tính chất của tập trả lời 22
Trang 52.5 Ví dụ về biểu diễn tri thức bằng chương trình logic mở rộng 23
2.6 Tiểu kết chương 2 31
Chương 3 NGỮ NGHĨA TẬP TRẢ LỜI CỦA CHƯƠNG TRÌNH LOGIC DẠNG TUYỂN MỞ RỘNG VÀ ỨNG DỤNG BIỂU DIỄN TRI THỨC 32
3.1 Cú pháp và ngữ nghĩa chương trình logic dạng tuyển mở rộng 33
Trong phần này trình bày về các khái niệm liên quan đến chương trình logic dạng tuyển mở rộng và ngữ nghĩa của lớp chương này [10] 33
3.2 Ví dụ biểu diễn tri thức sử dụng chương trình logic EDLP 36
3.3 Cài đặt một số bài toán với hệ thống SMODELS và DLV mở rộng 37
3.3.1 Giới thiệu hệ thống SMODELS và DLV mở rộng 38
3.3.2 Cài đặt và chạy demo ứng dụng 39
3.4 Tiểu kết chương 3 54
KẾT LUẬN 55
TÀI LIỆU THAM KHẢO 56
PHỤ LỤC 58
Trang 6DANH MỤC CÁC THUẬT NGỮ
Chương trình logic nền Ground program
Chương trình tập trả lời
Chương trình logic mở rộng
Chương trình logic dạng tuyển mở rộng
Answer Set Program Extended Logic Program Extended Disjunctive Logic Program
Điểm bất động nhỏ nhất Least fixpoint
Lập trình logic
Lập trình logic tập trả lời
Logic programming Answer Set Logic programming
Ngữ nghĩa mô hình bền vững Stable model semantics
Toán tử hệ quả trực tiếp The immediate consequence
Trang 9CÁC CHỮ VIẾT TẮT
Trang 11MỞ ĐẦU
Sự ra đời và phát triển của lập trình logic trong những thập niên vừa qua
đã đóng vai trò hết sức quan trọng trong nhiều lĩnh vực Vào năm 1972, Alain Colmerauer là người đầu tiên thực hiện hệ thống lập trình logic, được gọi là Prolog (Programming logic) Tên gọi Prolog được xuất phát từ cụm từ tiếng
Pháp Programmation en logique, nghĩa là "lập trình theo logic" Mục tiêu của
Prolog là giúp người dùng mô tả lại bài toán trên ngôn ngữ của logic, dựa trên
đó, máy tính sẽ tiến hành suy diễn tự động dựa vào những cơ chế suy diễn có sẵn (hợp nhất, quay lui và tìm kiếm theo chiều sâu, …) để tìm câu trả lời cho người dùng Phép hợp nhất là nền tảng của mọi hoạt động trong Prolog để tìm
ra câu trả lời
Hiện nay, một hướng mở rộng của lập trình logic được gọi là lập trình tập trả lời (ASP) đã và đang được nhiều nhà khoa học quan tâm ASP có thể dùng để biểu diễn các dạng tri thức khác nhau của thế giới thực ASP được xem như một ngôn ngữ có ngữ nghĩa dạng khai báo và cũng dựa trên ngữ nghĩa mô hình bền vững của chương trình logic thông thường, đã được chứng minh là rất phù hợp cho nhiều lĩnh vực ứng dụng Nhiều công trình nghiên cứu có giá trị về lập trình tập trả lời đã được công bố Cụ thể, các tác giả trong [3,5,6,7,8,10] đã nghiên cứu về lập trình tập trả lời và ứng dụng để biểu diễn tri thức Hệ thống SMODELS [4], [11] thường được sử dụng cho việc cài đặt và thực thi đối với lớp chương trình logic với ngữ nghĩa tập trả lời
Luận văn nghiên cứu về lập trình logic tập trả lời và ứng dụng để biểu diễn tri thức, tiến hành cài đặt một số chương trình minh họa bằng phần mềm tích hợp Smodels và DLV mở rộng Những nội dung nghiên cứu của luận văn này là có ý nghĩa về mặt lý thuyết cũng như ứng dụng trong thực tiễn
Cấu trúc nội dung luận văn gồm phần mở đầu, ba chương nội dung, phần kết luận, hướng phát triển của đề tài và phần phần phụ lục
Trang 12Chương 1 trình bày những khái niệm cơ sở của chương trình logic, ngữ nghĩa mô hình nhỏ nhất của chương trình logic, ngữ nghĩa mô hình bền vững của chương trình logic thông thường
Chương 2 trình bày cú pháp và ngữ nghĩa của chương trình logic mở rộng (ELP) theo tiếp cận ngữ nghĩa tập trả lời Các chương trình này cho phép phủ định mạnh và phủ định mặc định được phép xuất hiện trong các mệnh đề Cách tiếp cận ngữ nghĩa của lớp chương trình này là sự mở rộng của ngữ nghĩa mô hình bền vững
Chương 3 trình bày cú pháp và ngữ nghĩa của chương trình logic dạng tuyển mở rộng (EDLP) và ứng dụng lớp chương trình này trong việc biểu diễn tri thức thông qua một số bài toán minh họa Các bài toán này được trình bày chi tiết từ việc biểu diễn bằng chương trình logic dạng tuyển mở rộng đến việc cài đặt và thực thi bằng hệ thống trình biên dịch lập trình logic tập trả lời Phần phụ lục trình bày việc cài đặt và thực thi một số ví dụ minh họa trong các chương bằng phần mềm tích hợp Smodel và DLV mở rộng
Phần kết luận nêu những kết quả đã đạt được và hướng phát triển của đề tài
Do thời gian có hạn và bản thân chỉ mới bước đầu nghiên cứu về lĩnh vực này nên không thể tránh khỏi những thiếu sót, kính mong sự giúp đỡ và góp ý thêm của quý Thầy, Cô và các bạn
Trang 13Chương 1 TỔNG QUAN VỀ CHƯƠNG TRÌNH LOGIC
Chương một trình bày các khái niệm cơ sở của chương trình logic, lớp chương trình đơn giản nhất của chương trình logic được gọi là chương trình logic dương sẽ được xem xét trước tiên cùng với ngữ nghĩa mô hình nhỏ nhất của nó [2] Tiếp theo, chương 1 sẽ trình bày việc mở rộng các chương trình logic dương khi cho phép toán tử phủ định not xuất hiện trong thân các quy tắc, được gọi là chương trình logic thông thường và tiếp cận ngữ nghĩa mô hình bền vững của lớp chương trình này [9] Đây là những kiến thức làm tiền
đề cho các nghiên cứu tiếp theo về lập trình logic tập trả lời
1.1 Một số định nghĩa
Định nghĩa 1.1 [1] (Bộ ký tự) Bộ ký tự bao gồm các lớp ký hiệu sau:
1 Hằng, thường ký hiệu là các chữ cái thường a, b, c,
2 Biến, thường ký hiệu bởi các chữ cái in hoa X, Y, Z,
3 Các ký hiệu hàm, thường ký hiệu bởi f, g, h,
4 Các ký hiệu vị từ, thường ký hiệu bởi p, q, r,
5 Các hằng vị từ: true, false
6 Các ký hiệu kết nối(phủ định), (tuyển), (hội), (suy ra)
7 Các ký hiệu lượng từ: (với mọi), (tồn tại)
8 Dấu ngoặc đơn trái (, dấu ngoặc đơn phải), dấu phẩy,
Mỗi ký hiệu hàm, ký hiệu vị từ có kèm theo một số tự nhiên xác định để chỉ số các đối số tham gia cùng với ký hiệu hàm hoặc ký hiệu vị từ đó, gọi là ngôi của chúng
Trên cơ sở bộ ký tự đã cho, người ta đưa ra định nghĩa về hạng thức Hạng thức là yếu tố quan trọng của công thức logic, được xây dựng từ các hằng, biến, hàm và được định nghĩa hình thức như sau:
Trang 14Định nghĩa 1.2 [1] (Hạng thức) Gọi A là bộ ký tự Hạng thức được định
nghĩa đệ qui như sau:
(i) Mỗi hằng trong A là một hạng thức,
(ii) Mỗi biến trong A là một hạng thức,
(iii) Nếu f là ký hiệu hàm n-ngôi trong A và t1, ,t n là các hạng thức thì
f(t1, ,tn) là một hạng thức,
(iv) Hạng thức chỉ được sinh ra bởi các quy tắc trên
Một hằng được xem là ký hiệu hàm 0-ngôi Hằng và biến là các hạng thức nguyên tố, hạng thức nền là hạng thức không chứa biến
Định nghĩa 1.3 [1](Nguyên tố) Một nguyên tố có dạng p(t1,…,t n ), trong đó p
là ký hiệu vị từ n-ngôi và các đối t1, ,t n là các hạng thức Nguyên tố nền là
nguyên tố không chứa biến
Ví dụ 1.1 Xét nguyên tố me(Hoa,Mai), trong đó vị từ me là vị từ 2-ngôi để
chỉ mối quan hệ mẹ Hoa, Mai là các hằng và me(Hoa,Mai) có ý nghĩa là Hoa
là mẹ của Mai
Định nghĩa 1.4 [1] (Literal) Literal là một nguyên tố, gọi là literal dương và
litaral âm là phủ định của nguyên tố, ký hiệu p, với p là một nguyên tố
Ký hiệu phủ định còn được gọi là phủ định mạnh (strong negation)
hoặc phủ định cổ điển (classical negation) Các literal p và p được gọi là
ngược nhau
Trong phần tiếp theo sẽ xem xét lớp chương trình logic đơn giản nhất –
chương trình logic dương
1.2 Chương trình logic dương
Định nghĩa 1.5 [1] (Chương trình logic dương) Chương trình logic dương là
một tập hữu hạn khác rỗng các mệnh đề (hoặc quy tắc) có dạng:
a b1,…,b n (1)
Trang 15Trong đó n 0, a, b i là các nguyên tố, a được gọi là đầu và b1,…,bn được gọi
là thân của quy tắc, dấu phẩy ký hiệu thay cho phép hội ()
Trong mệnh đề (1), nếu n = 0 thì nó được gọi là mệnh đề đơn vị (unit clause), nghĩa là mệnh đề có dạng: a , đó là mệnh đề với thân rỗng, ký hiệu có
thể bỏ qua
Ví dụ 1.2 Xem chương trình logic dương sau:
yeuthuong(X,Y) phunu(X)con(Y,X) (1)
phunu(Mai)
con(Hoa,Mai)
Trong mệnh đề (1), nguyên tố phunu(X) để chỉ X là một phụ nữ, nguyên tố con(Y,X) để chỉ Y là con của X, yeuthuong(X,Y) là nguyên tố để chỉ X thương yêu Y Ý nghĩa của công thức (1) là: mọi phụ nữ đều thương yêu con của họ
và các mệnh đề đơn vị có ý nghĩa: Mai là một phụ nữ và Hoa là con của Mai
Ví dụ 1.3 Xem chương trình logic dương chỉ gồm 1 mệnh đề sau:
connected(X) hub(Y), link(Y,X)
Quy tắc trên có ý nghĩa là nếu Y là đơn vị điều khiển trung tâm và có đường kết nối đến một đơn vị X thì X được kết nối
Ví dụ 1.4 Xem chương trình logic sau để định nghĩa số chẵn
Trang 16Định nghĩa 1.6 [1] (Vũ trụ/Cơ sở/Thể hiện Herbrand) Cho P là chương trình
logic dương
Vũ trụ Herbrand của P, ký hiệu UP, là tập các hạng thức nền được xây
dựng từ các hằng và các ký hiệu hàm trong P
Cơ sở Herbrand của P, ký hiệu BP, là tập các nguyên tố nền được xây
dựng từ các vị từ trong P có đối là các hạng thức nền trong vũ trụ Herbrand
U P
Một thể hiện Herbrand (hoặc đơn giản là thể hiện) của P là một tập
con tùy ý của cơ sở Herbrand B P của P
Một thể hiện Herbrand có thể được xem như một tập các nguyên tố nền
có giá trị đúng trong một ngữ cảnh đã cho Vũ trụ Herbrand của chương trình logic dương P luôn luôn là vô hạn nếu trong P có ít nhất một ký hiệu hàm có
số đối số lớn hơn 0
Ví dụ 1.5Xét chương trình logic dương P ở ví dụ 1.4:
Vũ trụ Herbrand của P là: U P = {0, s(0), s(s(0)), s(s(s(0))), }
Cơ sở Herbrand của P là:
B P = {sochan(0), sochan(s(0)), sochan(s(s(0))), }
Một số thể hiện Herbrand của P là:
I1 = {sochan(0)}
I2 = {sochan(0), sochan(s(0))}
I3 = {sochan(s n (0)) | n {0, 2, 4,…}}
I4 = B P
Định nghĩa 1.7 [1] (Hiện hành nền) Một hiện hành nền của mệnh đề C có
dạng (1) là một mệnh đề C’ nhận được từ C bằng cách thay thế các biến trong
C bởi các hạng thức nền trong vũ trụ Herbrand U P Ký hiệu ground(C) là tập tất cả hiện hành nền của C và đặt ground(P) =∪ CP ground(C)
Trang 17Định nghĩa 1.8 [1] (Mô hình) Cho I là một thể hiện của chương trình logic
dương P Lúc đó I là mô hình của
- mệnh đề nền (không chứa biến) C = a b1,…,bm ký hiệu I C nếu {b1,…,bm} I hoặc a I;
- mệnh đề C, ký hiệu I C nếu I C’ với mọi C’ ground(C);
- chương trình P, ký hiệu I P nếu I C với mọi mệnh đề C của P
Ví dụ 1.6 Xét các thể hiện I1,I2, I3, I4 của chương trình logic P trong ví dụ 1.4, rõ ràng I1 không phải là mô hình của P vì mặc dầu I1 là mô hình của mệnh
đề sochan(0) nhưng I1 không phải là mô hình của mệnh đề r2 vì tồn tại mệnh
đề nền sochan(s(s(0))) sochan(0) của r2 mà I1 không phải là mô hình của
mệnh đề nền này Cũng vậy, I2 cũng không phải là mô hình của P vì mệnh đề
tồn tại mệnh đề nền:
sochan(s(s(s(0)))) sochan(s(0))
của r2 mà I2 không phải là mô hình của nó.Tuy nhiên, I3 là mô hình của
P Ta có I3 là mô hình của r1 I3 cũng là mô hình của r2 Thật vậy, xét mệnh đề:
sochan(s(s(t)))) sochan(t)
là một hiện hành nền nào đó của mệnh đề r2, trong đó t U P Rõ ràng
mệnh đề sochan(s(s(t))) sochan(t) đúng vì sochan(t) và sochan(s(s(t)))) đều thuộc I3 Vậy I3 là mô hình của P Ta cũng có ngay I4 là mô hình của P
Định nghĩa 1.9 [1] (Mô hình cực tiểu) Cho P là chương trình logic dương, M
là mô hình cực tiểu của P nếu không tồn tại mô hình J của P sao cho J M
Định lý 1.1 [2] Mọi chương trình logic dương đều có mô hình cực tiểu duy
nhất (được gọi là mô hình nhỏ nhất), ký hiệu LM P
Định nghĩa 1.10 [2] (Ngữ nghĩa chương trình logic dương) Cho P là chương
trình logic dương, ngữ nghĩa của P là mô hình nhỏ nhất LM P của P
Trang 18Mô hình nhỏ nhất LM P có thể tính được bằng cách sử dụng toán tử hệ
quả trực tiếp nhờ vào một quá trình lặp Ta có định nghĩa sau:
Định nghĩa 1.11 [2] (Toán tử hệ quả trực tiếp) Cho P là chương trình logic
dương Đặt là toán tử được xác định như sau: Với mỗi I B P
2 ,
T P (I) = { A B P | tồn tại A A1,…, A n thuộc ground(P)
và {A1,…, A n} I }
trong đó B P
2 là tập các tập con của cơ sở Herbrand B P T P được gọi là toán tử
hệ quả trực tiếp trên đó B P
2
Định lý 1.2 [2] Cho P là chương trình logic dương Lúc đó:
- Toán tử T P đơn điệu và có điểm bất động nhỏ nhất lfp(T P),
- lfp(T P ) là mô hình nhỏ nhất LM P của P và dãy hội tụ về
Trang 19Ví dụ 1.8 Xét chương trình logic P gồm các mệnh đề:
h(0,0)
t(a,b,r)
p(0,0,b)
p(f(X),Y,Z) p(X,Y,Z’), h(X,Y), t(Z,Z’,r)
h(f(X),f(Y)) p(X,Y,Z’), h(X,Y), t(Z,Z’,r)
Vậy LMP = {h(0,0), t(a,b,r), p(0,0,b), p(f(0),0,a), h(f(0),f(0))}
1.3 Phủ định trong các chương trình logic
Các chương trình logic dương biểu diễn cho tri thức dương và cho phép
mô hình hóa khá nhiều bài toán khác nhau, các mệnh đề trong chương trình
mô tả các đối tượng xác định và mối quan hệ giữa chúng Các quan hệ này được thể hiện rõ trong mô hình nhỏ nhất - chứa các nguyên tố nền là hệ quả logic của chương trình Tuy nhiên, có nhiều trường hợp đòi hỏi một cấu trúc
để mô hình hóa khái niệm phủ định Phủ định là một khái niệm ngôn ngữ tự nhiên và thường gặp trong nhiều tình huống thực tế
Định nghĩa 1.12 [2] (Chương trình logic thông thường) Chương trình logic
thông thường là một tập hữu hạn khác rỗng các mệnh đề có dạng:
a b1,…,b m , not c1,…,not cn
trong đó n, m 0, a và bi, cj là các nguyên tố
Trang 20Chú ý rằng thân quy tắc chứa các lietral phủ định not c1,…,not cn Giá trị chân lý của literal phủ định là ngược với giá trị chân lý của litaral dương
của nó Literal not a sẽ được xem là sai nếu giá trị chân lý của literal dương a
không được chứng minh một cách hữu hạn thông qua phép hợp giải SLD Vì vậy phủ định not còn được gọi là phủ định do thất bại (negation as fairlure)
hoặc phủ định mặc định (default negation) Để ý rằng phép phủ định trong
logic cổ điển, còn gọi là phủ định mạnh (strong negation), ký hiệu , là khác với phép phủ định not trong lập trình logic Chúng ta sẽ xem xét kỹ hơn việc kết hợp cả hai loại phủ định này ở chương 2
Ví dụ 1.9 Xem chương trình logic thông thường sau đây:
man(dung) single(X) man(X), not husband(X)
husband(X) fail
Câu truy vấn ?- single(X)
Ta nhận được câu trả lời là X = Dung
Về mặt trực giác, câu trả lời X = Dung là nhận được vì sự kiện husband(Dung) không thể chứng minh từ P Để chứng minh single(Dung) ta
có thể sử dụng quy tắc đầu tiên của chương trình, bởi vì man(Dung) là đúng
và không có cách nào chứng minh sự kiện husband(Dung) là đúng trong P
Tuy nhiên với chương trình logic trong ví dụ sau:
man(dung) single(X) man(X), not husband(X)
husband(X) man(X), not single(X)
thì ta sẽ gặp thất bại khi tìm câu trả lời cho truy vấn ?single(X) bởi vì single(Dung) và husband(Dung) là phụ thuộc lẫn nhau qua phép phủ định
Phép hợp giải SLD sẽ lặp vô hạn khi trả lời câu truy vấn này
Trang 21Đối với chương trình logic thông thường, khi các mệnh đề có chứa phủ định ở thân thì ngữ nghĩa của nó trở nên phức tạp hơn nhiều Lúc này chương trình có thể có nhiều mô hình cực tiểu và không có mô hình nhỏ nhất Chẳng hạn, chương trình logic trên có hai mô hình cực tiểu:
Định nghĩa 1.13 [9] (Phép biến đổi Gelfond - Lifschitz) Cho P là chương
trình logic Gọi ground(P) là hiện hành của P Đối với mọi thể hiện M của P,
ký hiệu P M là chương trình nhận được từ ground(P) bằng cách loại bỏ:
1 Các quy tắc có literal phủ định not A trong thân của nó, với A M
2 Tất cả literal not A trong thân của các quy tắc còn lại
Điều kiện 1 và 2 ở trên ấn định giá trị chân lý cho các literal phủ định
Nếu A M thì thân quy tắc có chứa literal not A không thể trở thành đúng
Trang 22Mặt khác, nếu A M thì not A có thể giả sử là đúng và được loại bỏ khỏi thân quy tắc chứa nó
Rõ ràng P M là chương trình không có phủ định, nó là chương trình logic
Định nghĩa 1.14 [9] (Mô hình bền vững) Thể hiện M của chương trình logic
P được gọi là mô hình bền vững của P nếu M là mô hình nhỏ nhất của P M
Trang 23husband(X) man(X), not single(X)
Lúc đó hiện hành của P là:
Ground(P) = { man(Dung), woman(Anh)
single(Dung) man(Dung), not husband(Dung)
single(Anh) man(Anh), not husband(Anh)
husband(Dung) man(Dung), not single(Dung)
husband(Anh) man(Anh), not single(Anh) }
Các mô hình bền vững của P là:
M1 = {man(Dung), woman(Anh), single(Dung)}
M2 = {man(Dung), woman(Anh), husband(Dung)}
1.4 Các tính chất của mô hình bền vững
Phần này trình bày một số tính chất quan trọng của các mô hình bền vững Trước tiên ta sẽ xem xét mối quan hệ giữa mô hình bền vững và mô hình cực tiểu của chương trình logic
Định nghĩa 1.15 [9] Cho I là một thể hiện của chương trình logic thông
thường P Lúc đó I là mô hình của
- mệnh đề nền (không chứa biến) C = a b1,…,bm,not c1,…,not cn, ký
hiệu I C nếu {b1,…,bm} I hoặc {a, c1,…,cn} I ;
Trang 24- mệnh đề C, ký hiệu I C nếu I C’ với mọi C’ ground(C);
- chương trình P, ký hiệu I P nếu I C với mọi mệnh đề C của P
Định lý 1.3 [9] Cho P là chương trình logic Lúc đó:
1 Mọi mô hình bền vững của P đều là mô hình của P
2 Mô hình bền vững của P là mô hình cực tiểu của P
Hệ quả 1.1 [9] Các mô hình bền vững là không thể so sánh nhau được, nghĩa
là nếu M1 và M2 là các mô hình bền vững của chương trình logic P thì M1
M2 và M2 M1.
Các mô hình bền vững là sự tổng quát hóa ngữ nghĩa đối với chương
trình logic dương, điều này được thể hiện bởi kết quả sau:
Định lý 1.4 [9] Đối với chương trình logic dương thì mô hình bền vững chính
là mô hình nhỏ nhất của nó
Ví dụ 1.14 Xét chương trình logic P:
p(a)
r(X) p(X), not q(X)
lúc đó P có 2 mô hình cực tiểu là M1 = {p(a), r(a)} và M2 = {p(a), q(a)} Ta
có M1 là mô hình bền vững của P còn M2 thì không phải
Để ý điều làm cho M2 khác với M1 là ở chỗ không có quy tắc cũng như
sự kiện nào trong P đảm bảo sự xuất hiện của q(a) trong mô hình
Định lý 1.5 [1] Cho P là chương trình logic và I là một thể hiện của P Đặt
T P (I) = { a | tồn tại a b1,…, b n , not c1, ,not cn thuộc ground(P) Sao cho{b1,…, bn} I, {c1, ,cn} I = }
Nếu I là mô hình của P thì TP(I) = I
Trang 25Tồn tại mô hình là điểm bất động cực tiểu của toán tử TP nhưng không
phải là mô hình bền vững Ta xem ví dụ sau:
Do LM( = {a} = M1 và LM( = M2 nên M1 là mô hình
bền vững của P và M2 thì không phải
1.5 Lập luận từ các mô hình bền vững
Bởi vì một chương trình logic có thể có một hoặc nhiều hoặc không có
mô hình bền vững Vấn đề đặt ra là cách thức suy luận từ P sẽ được xác định
như thế nào Đối với một mô hình bền vững cụ thể, một nguyên tố nền a được xem là đúng nếu a M và sai nếu a M Điều này thường được mở rộng để
suy luận từ tất cả mô hình bền vững của P theo hai dạng đối ngẫu nhau [7]:
Lập luận bất chấp (Brave Reasoning): Một nguyên tố nền a là hệ quả
bất chấp (brave consequence) của P, ký hiệu b nếu a thuộc vào một mô hình bền vững M nào đó của P
Lập luận thận trọng (Cautious Reasoning) Một nguyên tố nền a là hệ
quả thận trọng (brave consequence) của P, ký hiệu b nếu a thuộc mọi mô hình bền vững M của P
Ví dụ 1.16 Xem chương trình logic P ở ví dụ 1.14
p(a)
Trang 26r(X) p(X), not q(X)
Lúc đó P b r(a) và P c r(a) vì r(a) đúng trong mọi mô hình bền vững Tuy nhiên với P’ = P {q(a)} thì cả hai P’ b r(a) và P ’ c r(a) đều không thỏa mãn vì r(a) là sai trong mô hình bền vững duy nhất của {p(a), q(a)} của P’
1.6 Tiểu kết chương 1
Chương 1 đã trình bày cú pháp của chương trình logic dương và chương trình logic thông thường Đối với chương trình logic dương, ngữ nghĩa của nó là mô hình nhỏ nhất, trong khi ngữ nghĩa mô hình bền vững được thiết lập cho chương trình logic thông thường (có chứa phép phủ định mặc định not) Các tính chất ngữ nghĩa cũng như vấn đề lập luận từ các mô hình bền vững được trình bày chi tiết cùng với các ví dụ minh họa Trong chương 2 sẽ tiếp tục tìm hiểu hướng mở rộng của các chương trình logic thông thường khi cho phép đồng thởi cả hai dạng phủ định (phủ định mặc định và phủ định mạnh) được phép xuất hiện trong các mệnh đề của chương trình
Trang 27Chương 2 NGỮ NGHĨA TẬP TRẢ LỜI CỦA CHƯƠNG TRÌNH LOGIC
Chương 2 tiếp tục trình bày việc mở rộng về cú pháp của các chương trình logic thông thường và định nghĩa ngữ nghĩa tập trả lời (answer set semantics) của lớp chương trình logic mở rộng này [10] Có ba mở rộng của
các chương trình logic thông thường để dẫn đến khái niệm lập trình tập trả lời:
(i) Ràng buộc, là các quy tắc có phần đầu rỗng, chẳng hạn:
canh(X,Y), do(X), do(Y)
để buộc các nút liền kề trong một đồ thị không được phép có màu đỏ;
(ii) Phủ định mạnh (hoặc phủ định cổ điển) ở các nguyên tố, chẳng hạn
docthan(Dung) với ý nghĩa là Dung được biết chắc chắn là độc thân;
(iii) Các quy tắc tuyển, nghĩa là cho phép tuyển () được xuất hiện trong đầu quy tắc, chẳng hạn:
nam(X) nu(X) nguoi(X) với ý nghĩa người chỉ có thể là nam hoặc nữ
Việc mở rộng này không chỉ là một yêu cầu mà còn để có thể mã hóa các bài toán Các chương trình cho phép chứa cả phủ định mạnh và phủ định mặc định được gọi là chương trình logic mở rộng (ELP – Extended Logic Program) và nếu các ELP cho phép có các quy tắc tuyển, ta nhận được lớp chương trình ELP dạng tuyển và được gọi là chương trình logic tuyển mở rộng (EDLP – Extended Disjunctive Logic Program)
Trang 28sau:
false B1,…,Bm
trong đó Bi là các literal, hằng vị từ false có thể bỏ qua
Ví dụ 2.1 Ràng buộc male(X), female(X) để chỉ X chỉ giới tính của X chỉ có
thể là nam (male) hoặc nữ (female)
2.2 Phủ định mặc định và phủ định mạnh
Trong chương 1 ta đã định nghĩa các chương trình logic thông thường, nghĩa là các chương trình logic cho phép phủ định mặc định (not) xuất hiện trong các thân quy tắc Ngữ nghĩa tự nhiên của not a là “nếu a không thể
được chứng minh là đúng (được dẫn xuất) bằng cách dùng các quy tắc thì mặc định not a được xem là đúng” Nhưng điều này là khác với “biết chắc rằng a sai” và được biểu diễn bởi a Ta xem ví dụ sau để phân biệt giữa phủ định
mạnh và phủ định mặc định:
Ví dụ 2.2 Giả sử ta đã có quy định: “Ở tại vị trí đường sắt giao nhau, có thể đi
bộ băng qua đường sắt nếu không có chuyến tàu nào đến” và có đối tượng A
đang đứng ở vị trí đường sắt giao nhau L nào đó, A muốn đi bộ băng qua
đường sắt Có thể mã hóa điều này bằng hai quy tắc sau:
dibo vitri(A,L), duongsat(L), not tauhoa(L) (1)
dibo vitri(A,L), duongsat(L), tauhoa(L) (2)
Nếu sử dụng quy tắc (1) thì A không nghĩ rằng tauhoa(L) là đúng, lúc
đó A sẽ quyết định đi bộ băng qua đường sắt mặc dầu A không biết chắc là không có chuyến tàu nào đến Tri thức của A có thể cập nhật lại, nếu ta thêm vào sự kiện tauhoa(L) đúng thì A sẽ từ chối đi bộ qua đường sắt
Còn nếu dùng quy tắc (2) thì A chỉ có thể đi bộ băng qua đường sắt nếu
A biết chắc chắn là không có chuyến tàu nào đến Rõ ràng việc quyết định của
Trang 29A sẽ “an toàn” khi dùng quy tắc (2) Tuy nhiên quy tắc (1) lại phản ánh rõ ràng về tri thức của A là không thể biểu diễn trạng thái của thế giới một cách
đầy đủ
Có một cách để biểu diễn thông tin âm bằng cách dùng nguyên tố phủ định mạnh, trong đó chỉ rõ các sự kiện trong cơ sở tri thức, chẳng hạn, sự kiện
broken(battery) để chỉ battery là không bị hỏng Nếu tri thức này được dùng
để kết luận broken(battery) trong một quy tắc khác thì có thể dẫn đến sự
không nhất quán và dẫn đến việc loại bỏ tất các mô hình dựa trên cơ sở tri thức đó
Một áp dụng có ích đối với phủ định mạnh là kết hợp với phủ định mặc
định để biểu diễn các quy tắc mặc định (default rule), chẳng hạn ta có thể biểu
trong đó n 1, l0 là literal hoặc false và tất cả các li là các literal, not là ký
hiệu của phủ định mặc định Literal mở rộng là một biểu diễn có dạng l hoặc not l Trong quy tắc (2.1) nếu l0 là false thì nó được gọi là một ràng buộc và false có thể bỏ qua
Trừ khi có quy định khác, ta giả sử các literal trong quy tắc (2.1) đều là literal nền
Trong chương 2 ta sẽ sử dùng một số ký hiệu sau đây:
̅ là ngược của literal l
Trang 30Tập{not li, ,not li+k} được ký hiệu not {li, ,li+k} Nếu r là quy tắc có
dạng (1) thì:
head(r) = {l0},
pos(r) = {l1, ,lm},
neg(r) = {lm+1, ,ln},
body(r) = pos(r), not neg(r)
Với P là chương trình logic mở rộng thì:
head(P) =∪ rP head(r),
pos(P) =∪ rP pos(r),
neg(P) =∪ rP neg(r)
lit(P) là tập tất cả các literal nền được xây dựng từ các vị từ trong P
Định nghĩa 2.3 [10] Cho P là chương trình logic mở rộng, X là một tập các
litral nền Lúc đó l lit(P) là đúng trong X nếu l X; l là sai trong X nếu
̅ ; ngược lại l là chưa biết False là sai trong X
Ngữ nghĩa tập trả lời của chương trình logic mở rộng P là một tập các tập trả lời, đó là một tập nhất quán các literal nền của P [10] Định nghĩa
chính xác các tập trả lời sẽ được thực hiện trước hết đối với chương trình logic mở rộng không chứa phủ định mặc định not Ta nói rằng một tập các
literal nền X của P là đóng trong P nếu với mọi quy tắc head body của P thì head đúng trong X khi body đúng trong X
Định nghĩa 2.4 [10] (Tập trả lời – phần 1) Cho P là chương trình logic mở
rộng, không chứa ký hiệu phủ định not và X là một tập các litral nền của P X được gọi là tập trả lời của P nếu X là tập cực tiểu trong tập các tập đóng của
P
Trang 31Rõ ràng mọi chương trình logic mở rộng mà không chứa phủ định mặc định sẽ có nhiều nhất một tập trả lời Các định nghĩa sau để mở rộng định nghĩa trên đối với chương trình logic tùy ý
Định nghĩa 2.5 [10] Cho P là chương trình logic mở rộng bất kỳ, X là tập các
literal nền của P Thu gọn của P theo X, ký hiệu P X là tập các quy tắc:
l0 l1, ,lm
đối với mọi quy tắc có dạng (1) của P sao cho lm+1, ,ln X
Như vậy P X là chương trình không chứa phủ định mặc định
Định nghĩa 2.6 [10] (Tập trả lời – phần 2) Cho P là chương trình logic mở
rộng và X là một tập các litral nền của P X được gọi là tập trả lời của P nếu X
là tập trả lời của chương trình thu gọn P X
Định nghĩa 2.7 [10] Chương trình logic P suy dẫn literal nền l, ký hiệu P l,
nếu l thuộc mọi tập trả lời của P Câu trả lời của P đối với truy vấn l là Yes nếu P l , no nếu P ̅ , ngoài ra là unknown
Định nghĩa này còn được xem là giả thiết thế giới đóng (CWA) đối với chương trình logic mở rộng
Ví dụ 2.3 Xem chương trình logic P như sau:
p(a) not q(a)
p(b) not q(b)
q(a)
Dùng định nghĩa của tập trả lời, dễ thấy P chỉ có một tập trả lời là S = {q(a), p(b)} Như vậy đối với truy vấn q(a) thì câu trả lời là yes và truy vấn q(b) là unknown
Nếu ta thêm vào chương trình P quy tắc sau:
q(X) not q(X)
Trang 32thì đối với chương trình mới này sẽ có tập trả lời là S = {q(a), q(b), p(b)}, như vậy câu trả lời đối với truy vấn q(b) là trở thành no
Một chương trình có thể có nhiều hơn một tập trả lời hoặc không có tập trả lời nào cả
Ví dụ 2.4 Các chương trình sau không có tập trả lời:
P1 = { p not p}, P2 = {p, p}
Ví dụ 2.5 Xem chương trình sau:
p(a) not p(a)
p(a) not p(a)
Chương trình này có hai tập trả lời là {p(a)} và { p(a)} Như vậy P không thể suy dẫn literal p(a)
Trong phần tiếp theo trình bày một số tính chất của tập trả lời
2.4 Các tính chất của tập trả lời
Mệnh đề 2.1 [10] Với mọi tập trả lời S của chương trình logic P:
(i) Với mọi hiện hành nền của quy tắc có dạng (1) của P, nếu
Trang 33Mệnh đề tiếp theo cho ta cách thức để thu hẹp một chương trình logic
mở rộng về chương trình logic thông thường, nghĩa là chương trình không chứa phủ định Ta cần đến ký hiệu sau đây:
Đối với vị từ p xuất hiện trong P, gọi p’ là vị từ mới cùng ngôi với p Nguyên tố p’( ̅) được gọi là dạng dương của literal âm p( ̅), Như vậy mọi
literal dương là dạng dương của chính nó Dạng dương của literal l được ký hiệu là l+, ký hiệu P+ là chương trình logic nhận được từ P bằng cách thay thế mỗi quy tắc có dạng: l0 l1, ,lm, not l m+1 , ,not ln
bởi quy tắc: , ,
Và thêm quy tắc: p( ̅), p’( ̅)
Đối với mọi nguyên tố p( ̅) của P Đối với mọi tập S các literal, ký hiệu
S+ là tập các dạng dương của các phần tử của S
Mệnh đề 2.3 [10] Một tập nhất quán S các literal nền của chương trình logic
mở rộng P là tập trả lời của P nếu và chỉ nếu S+ là tập trả lời của P+
Mệnh đề 2.2 cho ta một cách thức đơn giản để định giá các câu truy vấn đối với chương trình logic mở rộng Để nhận được câu trả lời đối với truy vấn
p, ta sẽ thực hiện truy vấn p và p’ trên chương trình P+ Nếu câu trả lời của
P+đối với p là yes thì câu trả lời của P đối với p là yes Nếu câu trả lời của
P+đối với p’ là yes thì câu đối với p là no Ngoài ra, câu trả lời đối với p là unknown
2.5 Ví dụ về biểu diễn tri thức bằng chương trình logic mở rộng
Trong phần này, ta trình bày một số ví dụ minh họa việc biểu diễn tri thức bằng chương trình logic mở rộng
Ví dụ 2.6 Xét chương trình logic mở rộng P mô tả việc xác định “trẻ em mồ
côi” Theo [7], trẻ em mồ côi là trẻ có cha lẫn mẹ không xác định Chương
Trang 34trình P biểu diễn bởi các vị từ và qui tắc như sau:
r 1: treem(X) ← nguoi(X), not treem(X)
r 2: cha(F,C) ← nguoi(F), treem(C), not cha(F,C)
r 3: me(M,C) ← nguoi(M), treem(C), not me(M, C)
r 4: khongxacdinh(X) ← nguoi(X), not khongxacdinh(X)
r 5 : chamekhongxacdinh(P) ← cha(F,P), me(M,P),
khongxacdinh(F), khongxacdinh(M)
r 6 : tremocoi(P) ← treem(P), chamekhongxacdinh(P)
r 7: tremocoi(X) ← nguoi(X), not tremocoi(X)
nguoi(Dung) ←, nguoi(Hoa) ←, nguoi(Hanh) ←, nguoi(Phuc) ←, nguoi(An ) ←, nguoi(Lanh) ←
treem(Dung) ←, treem(Hoa) ←
cha(Hanh,Dung) ←, cha(Phuc,Hoa) ←
me(An,Dung) ←, me(Lanh,Hoa) ←,
khongxacdinh(Phuc) ←, khongxacdinh(Lanh) ←,
nguoi(Mai) ←, treem(Mai) ←, me(Lanh,Mai) ←
trong ví dụ này thì nguoi(X) có nghĩa X là một người, treem(X) có nghĩa X là trẻ em, nguoi(F) có nghĩa F là một người cha, nguoi(M) có nghĩa M là một người mẹ, treem(C) có nghĩa C là một đứa trẻ, khongxacdinh(X) có nghĩa X là người không xác định được, khongxacdinh(F), có nghĩa F là người cha không xác định được, khongxacdinh(M) có nghĩa M người mẹ không xác định được, tremocoi(X) có nghĩa X là trẻ mồ côi, tremocoi(P) có nghĩa P là trẻ mồ côi, chamekhongxacdinh (P) có nghĩa P là cha mẹ không xác định được, cha(F,C)
có nghĩa F là cha của đứa trẻ C, me(M,C) có nghĩa M là mẹ của đứa trẻ C, cha(F,P) có nghĩa F là cha của đứa trẻ P, me(M,P) có nghĩa M là mẹ của đứa trẻ P
Trang 35Các quy tắc trong chương trình P có ý nghĩa như sau: Quy tắc r 1 nói
rằng nếu X không được tin là trẻ em thì X không phải là trẻ em Quy tắc r2, r3
nói rằng F/M không được tin là cha/mẹ của trẻ em C thì F/M không là cha/mẹ
của trẻ em C Quy tắc r4 nói rằng X không được tin là không xác định thì X được xác định Quy tắc r5, r6 nói rằng F/M là cha/mẹ không xác định thì P là trẻ mồ côi Quy tắc r7 nói rằng X không được tin là trẻ mồ côi thì X không là trẻ mồ côi Và các mệnh đề đơn vị nói rằng Dung, Hoa, Hanh, Phuc, An, Lanh là người Dung, Hoa là trẻ em; Hanh, An là cha/mẹ của Dung; Phuc, Lanh là cha/mẹ của Hoa Phuc, Lanh là người không xác định Vị từ chamekhongxacdinh(P) có thể bỏ qua nếu nó là false Các quy tắc trên được
mã hóa định nghĩa trẻ mồ côi
Xây dựng chương trình mô phỏng tremocoi.lp ở chương 3 sẽ có 2 tập trả lời sau: M1 là tập trả lời Hoa là trẻ mồ côi, M2 là tập trả lời Dung không phải là trẻ mồ côi
M1 = {tremocoi(Hoa)}
M2 = {tremocoi(Dung)}
Tuy nhiên, nếu ta mở rộng chương trình này bằng cách thêm các mệnh
đề đơn vị sau: nguoi(Mai) ←, treem(Mai) ←, me(Lanh, Mai) ←
Mệnh đề đơn vị này nói Mai là đứa trẻ mồ côi, câu trả lời sẽ là không xác định Về mặt trực giác, câu trả lời X = Mai không phải là câu trả lời đúng vì Mai có người cha không xác định nhưng cũng không nói được mệnh đề đơn
vị là sai vì theo sự biểu diễn cơ sở tri thức trên đứa trẻ mồ côi là cha mẹ không xác định
Ví dụ tiếp theo sẽ minh họa cách sử dụng chương trình logic mở rộng trong việc trả lời các thông tin không xác định trong cơ sở dữ liệu
Trang 36Ví dụ 2.7 [5] Xét một chương trình logic mở rộng P mô tả việc “xét học
bổng” cho sinh viên:
r 1 : dudieukien(X) ←mucdiemxetcao(X)
r 2 : dudieukien(X) ← toithieu(X), mucdiemxethoply(X)
r 3: đuđieukien(X) ← mucdiemxethoply (X), mucdiemxetcao(X)
r 4 : phongvan(X) ← not dudieukien(X), not dudieukien(X)
mucdiemxethoply(Anh) ←, mucdiemxetcao(Anh) ←
trong đó mucdiemxetcao(X) và mucdiemxethoply(X) là mức điểm được xem xét, dudieukien(X) có nghĩa X là đủ điều kiện xét học bổng, phongvan(X) có nghĩa X là được chọn phỏng vấn, toithieu(X) có nghĩa X là mức điểm tối thiểu theo quy định được xét học bổng Và các mệnh đề đơn vị nói rằng X dựa vào
mức điểm xét xem có được chọn hay không?
Quy tắc r1 và r 2 được dùng để tự định nghĩa với X là sinh viên đang được xét mức điểm Quy tắc r 3 nói rằng X sẽ không được chọn nếu điểm thi của X không đạt loại khá trở lên và quy tắc r 4 nói rằng “các sinh viên không xác định được là có được xét học bổng hay không dựa vào ba quy tắc trên sẽ
được phỏng vấn” Tức là “phongvan(X) nếu không biết thông tin về dudieukien(X) và dudieukien(X) Nếu ta thêm vào chương trình P quy tắc
mở rộng có dạng not p, not p có ý nghĩa “không xác định được giá trị của
p” (quy tắc 4) thì dễ thấy rằng các quy tắc của P cho phép ta kết luận là không xác định được dudieukien(X) và dudieukien(X) Tức là không xác định được Anh có được chọn hay không, và từ quy tắc 4 Anh sẽ được phỏng vấn để xét tuyển Mặt khác, nếu Kim là một sinh viên có điểm cao và có số điểm đạt loại khá, thì ta kết luận được dudieukien(Kim)
Xây dựng chương trình mô phỏng xethocbong.lp ở chương 3, các quy tắc của P sẽ có chính xác một tập trả lời M1 sau: