1. Trang chủ
  2. » Luận Văn - Báo Cáo

nghiên cứu lập trình logic tập trả lời và ứng dụng

73 16 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 73
Dung lượng 1,68 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 1

BỘ 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 2

LỜ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 3

LỜ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 4

MỤ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 5

2.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 6

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 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 9

CÁC CHỮ VIẾT TẮT

Trang 11

MỞ ĐẦ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 12

Chươ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 13

Chươ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 15

Trong đó 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) =∪ CP 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 18

Mô 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 19

Ví 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 20

Chú ý 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 22

Mặ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 23

husband(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 25

Tồ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 26

r(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 27

Chươ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 28

sau:

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 29

A 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 30

Tậ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 31

Rõ 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 32

thì đố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 33

Mệ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 34

trì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 35

Cá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 36

Ví 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:

Ngày đăng: 23/12/2020, 08:23

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm