Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 50 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
50
Dung lượng
810,82 KB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO ĐẠI HỌC HUẾ TRƯỜNG ĐẠI HỌC KHOA HỌC LÊ QUỐC BẢO TỊNH TÌMHIỂUVIỆCBIỂUDIỄNTRITHỨCTRONG A-PROLOG LUẬN VĂN THẠC SĨ KHOA HỌC CÔNG NGHỆ THÔNG TIN Huế, 2016 BỘ GIÁO DỤC VÀ ĐÀO TẠO ĐẠI HỌC HUẾ TRƯỜNG ĐẠI HỌC KHOA HỌC LÊ QUỐC BẢO TỊNH TÌMHIỂUVIỆCBIỂUDIỄNTRITHỨCTRONG A-PROLOG CHUYÊN NGÀNH: KHOA HỌC MÁY TÍNH MÃ SỐ: 60 48 01 01 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ế, 2016 LỜI CAM ĐOAN Tơi xin cam đoan luận văn “Tìm hiểuviệcbiểudiễntrithức AProlog” công trình nghiên cứu thân tơi Các số liệu kết nghiên cứu luận văn trung thực chưa công bố cơng trình khác Người viết luận văn Lê Quốc Bảo Tịnh LỜI CẢM ƠN Lời đầu tiên, xin chân thành cảm ơn Thầy Trương Công Tuấn hướng dẫn, định hướng động viên để tơi hồn thành tốt luận văn Xin cảm ơn Quý Thầy, Cô giáo Khoa Công nghệ thông tin Trường Đại học Khoa học – Đại học Huế truyền đạt nhiều kiến thức sâu sắc, quý báu mơn học q trình giảng dạy nội dung hoàn thiện luận văn Xin cảm ơn bạn học viên lớp cao học Khoa học máy tính khóa 2014–2016 đồng nghiệp bên cạnh, động viên suốt thời gian học tập thực luận văn Cuối cùng, xin gửi đến gia đình hỗ trợ tạo điều kiện để yên tâm học tập thực tốt luận văn tốt nghiệp Xin chân thành cảm ơn tất cả! Huế, tháng 04/2016 Học viên Lê Quốc Bảo Tịnh MỤC LỤC TRANG PHỤ BÌA LỜI CAM ĐOAN LỜI CẢM ƠN MỤC LỤC DANH MỤC CÁC THUẬT NGỮ CÁC CHỮ VIẾT TẮT DANH MỤC CÁC HÌNH VẼ MỞ ĐẦU Chương TỔNG QUAN VỀ CHƯƠNG TRÌNH LOGIC .3 1.1 Một số khái niệm sở 1.2 Chương trình logic 1.2.1 Chương trình logic xác định 1.2.2 Chương trình logic thơng thường 1.2.3 Các tính chất ngữ nghĩa 11 1.3 Tiểu kết Chương .12 Chương NGÔN NGỮ A-PROLOG 13 2.1 Phủ định mặc định phủ định mạnh 13 2.2 Cú pháp A-Prolog 14 2.3 Ngữ nghĩa chương trình A-Prolog 15 2.4 Các tính chất ngữ nghĩa .17 2.5 Ví dụ biểudiễntrithức A-Prolog 17 2.6 Tiểu kết Chương .23 Chương MỞ RỘNG CỦA A-PROLOG .24 3.1 Cú pháp ngữ nghĩa DA-PROLOG 24 3.1.1 Cú pháp DA-Prolog 24 3.1.2 Ngữ nghĩa DA-PROLOG .25 3.2 Ví dụ biểudiễntrithức sử dụng DA-PROLOG 26 3.3 Cài đặt số ví dụ với phần mềm SMODELS 28 3.3.1 Giới thiệu phần mềm SMODELS 28 3.3.2 Cài đặt chạy ứng dụng 28 3.4 Tiểu kết Chương .34 KẾT LUẬN 35 TÀI LIỆU THAM KHẢO .36 PHỤ LỤC DANH MỤC CÁC THUẬT NGỮ Chương trình logic Logic program Chương trình logic Ground logic program Cơ sở Herbrand Herbrand base Điểm bất động nhỏ Least fixpoint Lập trình logic Logic programming Lập trình logic tập trả lời Answer Set Logic programming Literal âm Negative literal Mơ hình bền vững Stable model Mơ hình cực tiểu Minimal model Mơ hình nhỏ Least model Ngữ nghĩa mơ hình bền vững Stable model semantics Ngun tố Atom Phủ định mạnh Strong negation Phủ định mặc định Default negation Quy tắc Rule Hiện hành Ground instance Toán tử hệ trực tiếp The immediate consequence operator Vị từ Predicate Vũ trụ Herbarnd Herbrand universe Giả thiết giới đóng Closed world assumption CÁC CHỮ VIẾT TẮT ASP Answer Set Program A-PROLOG Answer Set Prolog DA-PROLOG Disjuntive Answer Set Prolog DANH MỤC CÁC HÌNH VẼ Số hiệu hình vẽ 3.1 3.2 Tên hình vẽ Kết thực thi toán 3.1 SMODELS Kết thực thi toán 3.2 SMODELS Trang 30 34 MỞ ĐẦU Logic tính tốn nhà logic học đưa vào năm 1950, dựa kỹ thuật tự động hóa q trình suy diễn phát triển thành lập trình logic vào năm 1970 Từ hình thành khái niệm quan trọng lập trình khai báo Về ý tưởng, lập trình viên cần đưa khai báo chương trình việcthực cụ thể m áy t í nh tiến hành suy diễn tự động dựa vào chế suy diễn có sẵn (hợp nhất, quay lui tìm kiếm theo chiều sâu,…) để tìm câu trả lời cho người dùng Ngôn ngữ Prolog công cụ thực rõ ý tưởng Nhờ khả khai báo tự nhiên lập trình logic, Prolog nhanh chóng trở nên thơng dụng cho việcbiểudiễntrithức Tính đầy đủ trở nên rõ ràng mối liên hệ chương trình logic với sở liệu suy diễn đưa vào thập kỷ 80 Việc sử dụng lập trình logic sở liệu suy diễn để biểudiễntrithức gọi “cách tiếp cận logic cho việcbiểudiễntri thức” Cách tiếp cận dựa ý tưởng chương trình logic cung cấp đặc thù logic trithức đó, độc lập với cách thực riêng biệt nào, với ngữ cảnh tự do, dễ dàng thao tác suy diễnTrong năm gần có nhiều nghiên cứu mở rộng lập trình logic, mở rộng A-Prolog A-Prolog ngơn ngữ có ngữ nghĩa dạng khai báo dựa ngữ nghĩa mơ hình bền vững chương trình logic thơng thường A-Prolog sử dụng để biểudiễn kiểu trithức khác giới thực Luận văn nghiên cứu việcbiểudiễntrithức A-Prolog Nội dung luận văn trình bày chương Chương 1, trình bày tổng quan chương trình logic, tập trung vào cú pháp ngữ nghĩa 27 taytraikhonggay(Nam) ←, tayphaibigay(Nam)←,tayphaibigay(Nam) ←, ab(r1,Nam) ←ab(r3,Nam) ← Trong đó, taytraikhonggay(X) có nghĩa tay trái người X không bị gãy, tayphaikhonggay(X) có nghĩa tay phải người X khơng bị gãy, taytraibigay(X) có nghĩa tay trái người X bị gãy, tayphaibigay(X) có nghĩa tay phải người X bị gãy, ab(r1,X) có r1 ab tên quy tắc r1 biểudiễn cho người X không chắn khả cánh tay bị gãy (tức biểudiễn quy tắc r1 theo chương trình P cho); ab(r3,X) hiểu tương tự ab(r1,X) Quy tắc r1 mơ tả câu nói thơng thường cánh tay trái khơng bị gãy, cho phép ta kết luận người bình thường cánh tay khơng bị gãy trừ ta trường hợp đặc biệt Quy tắc r2 biểudiễn để đưa trường hợp đặc biệt người bị gãy cánh tay Quy tắc r3, r4 có ý nghĩa tương tự quy tắc r1, r2 Quy tắc r5 có ý nghĩa tay trái người X bị gãy tay phải người X bị gãy Quy tắc r6, r7 biểudiễn cánh tay bị gãy theo giả thiết giới đóng Vậy ta có chương trình DA-Prolog với quy tắc chương trình có hai tập trả lời sau: M1 = {taytraigay(Nam), ab(r1,Nam), tayphaikhonggay(Nam), tayphaibigay(Nam)} M2 = {tayphaigay(Nam), ab(r3,Nam), taytraikhonggay(Nam), taytraibigay(Nam)} 3.3 Cài đặt số ví dụ với phần mềm SMODELS 3.3.1 Giới thiệu phần mềm SMODELS SMODELS phần mềm lập trình tính tập câu trả lời (ASP) Chương trình SMODELS viết theo tiêu chuẩn (mở rộng) ký hiệu lập 28 trình logic Nó bao gồm hai phần, smodels dùng tìm mơ hình bền vững cho mơ hình logic thơng thường, Lparse font-end chuyển đổi chương trình người dùng sang hình thức mà smodels hiểu Smodels phát triển phòng thí nghiệm thuyết khoa học máy tính Đại học kỹ thuật Helsinki – Phần Lan Patril Simons Lparse viết vởi Tommi Syrjanen Phiên smodels (sm), Lparse (lp) tài liệu liên quan tham khảo theo địa http://www.tcs.hut.fi/Software/smodels Đây phần mềm miễn phí, cài đặt hệ điều hành Unix/Linux Windows Ở đây, hệ thống SMODELS cài đặt hệ điều hành Windowns Để gọi SMODELS đơn giản theo cú pháp “lparse file | smodels 0” với file tập tin văn chứa chương trình logic 3.3.2 Cài đặt chạy ứng dụng Bài tốn 3.1 Cài đặt tốn ví dụ 2.5 xác định “trẻ mồ cơi” Chương trình A-Prolog mơ tả tốn ví dụ 2.5 Chương trình A-Prolog cài đặt phần mềm SMODELS sau: Vào - Có trẻ mồ cơi trẻ khơng mồ cơi Vị từ tremocoi(X), có nghĩa X đứa trẻ mồ côi Ra - Xác định trẻ mồ côi Trẻ mồ cơi trẻ có cha lẫn mẹ khơng xác định Chương Trình nguoi(binh) nguoi(trang) nguoi(hanh) 29 nguoi(phuc) nguoi(an) nguoi(lanh) treem(binh) treem(trang) cha(hanh,binh) cha(phuc,trang) me(an,binh) me(lanh,trang) khongxacdinh(phuc) khongxacdinh(lanh) -treem(X):- nguoi(X), not treem(X) -cha(F,C):- nguoi(F), treem(C), not cha(F,C) -me(M,C):- nguoi(M), treem(C), not me(M,C) -khongxacdinh(X):- nguoi(X), not khongxacdinh(X) chamekhongxacdinh(P):- cha(F,P),me(M,P), khongxacdinh(F), khongxacdinh(M) tremocoi(P):- treem(P), chamekhongxacdinh(P) -tremocoi(X):- nguoi(X), not tremocoi(X) Thực thi chương trình phần mềm SMODELS ta nhận tập trả lời cho hình sau: 30 Hình 3.1 Kết thực thi toán 3.1 phần mềm SMODELS Bài toán 3.2 Cài đặt toán ví dụ 2.6 “chế độ hỗ trợ” cho trẻ mồ cơi Chương trình A-Prolog mơ tả tốn ví dụ 2.6 Chương trình A-Prolog cài đặt phần mềm SMODELS sau: Vào - Có trẻ mồ cơi trẻ khơng mồ cơi Vị từ tremoicoi(X) có nghĩa X trẻ mồ cơi - Chương trình hỗ trợ cho trẻ mồ cơi Vị từ chuongtrinh(N) có nghĩa N chương trình hỗ trợ cho trẻ em Ra - Xác định trẻ mồ côi hưởng chế độ hỗ trợ theo chương trình nào, trẻ khơng mồ cơi hưởng chế độ hỗ trợ Chương Trình chuongtrinh(0) chuongtrinh(1) %% Mặc định d1: Một đứa trẻ mồ côi hưởng theo chương trình 31 hotro(X,1):- ghi(X), tremocoi(X), not ab(d1(X)), not -hotro(X,1) %% Mặc định d2: Một đứa trẻ hưởng chương trình hotro(X,0):- ghi(X), treem(X), not ab(d2(X)), not -hotro(X,0) %% MỘt trẻ không hưởng nhiều chương trình -hotro(X,N2):- chuongtrinh(N1), chuongtrinh(N2), ghi(X), hotro(X,N1), N1 != N2 %% Một đứa trẻ mồ côi không hưởng chương trình -hotro(X,0):- ghi(X), tremocoi(X) %% Mặc định d2 khơng thể áp dụng đứa trẻ trẻ mồ côi ab(d2(X)):- ghi(X), not -tremocoi(X) %% X không hưởng chương trình X khơng xác định -hotro(X,N):- ghi(X), khongxacdinh(X), chuongtrinh(N) %% X không dược hỗ trợ chương trình X khơng đứa trẻ -hotro(X,N):- ghi(X), -treem(X), chuongtrinh(N) %% Kiểm tra bạn khong biết biết X trẻ mồ côi kiemtra(X):- ghi(X), not -tremocoi(X), not tremocoi(X) %% Dữ liệu ghi(trang) cha(phuc,trang) me(lanh,trang) treem(trang) ghi(phuc) 32 cha(thien,phuc) me(thanh,phuc) khongxacdinh(phuc) cho(lanh) khongxacdinh(lanh) ghi(binh) treem(binh) me(an,binh) %% Mở rộng sở trithức %% Binh có người cha Hạnh cha(hanh,binh) ghi(hanh) %% Chúng tơi có đầy đủ thơng tin người -khongxacdinh(P):- ghi(P), not khongxacdinh(P) %% Chúng tơi có đầy đủ thông tin đứa trẻ -treem(X):- ghi(X), not treem(X) %% P coi đứa trẻ mồ côi cha mẹ đứa trẻ không xác định tremocoi(P):- treem(P), chamekhongxacdinh(P) %% Chúng ta biết P đứa trẻ mồ côi cha mẹ chúng không xác định -tremocoi(P):- ghi(P), not cothetremocoi(P) cothetremocoi(P) :- ghi(P), treem(P), not -chamekhongxacdinh(P) 33 chame(X,P):- cha(X,P) chame(X,P):- me(X,P) chamekhongxacdinh(P):- cha(X,P), khongxacdinh(X), me(Y,P), khongxacdinh(Y) -chamekhongxacdinh(P):- chame(X,P), -khongxacdinh(X) Thực thi chương trình phần mềm SMODELS ta nhận tập trả lời cho hình sau: Hình 3.2 Kết thực thi tốn 3.2 phần mềm SMODELS 3.4 Tiểu kết Chương Chương trình bày cú pháp ngữ nghĩa DA-Prolog biểudiễntrithức thông qua số ví dụ tốn minh họa Giới thiệu phần mềm SMODELS thực thi số ví dụ chương trình A-Prolog Ngồi phần phụ lục, số ví dụ minh họa chương cài đặt thực thi SMODELS 34 KẾT LUẬN Luận văn tập trung tìmhiểuviệcbiểudiễntrithức A-Prolog Các kết mà luận văn đạt là: Tìmhiểu khái niệm sở chương trình logic ngữ nghĩa lớp chương trình Tìmhiểu cú pháp ngữ nghĩa ngôn ngữ A-Prolog Cách tiếp cận ngữ nghĩa A-Prolog mở rộng ngữ nghĩa mơ hình bền vững chương trình logic thơng thường Tìmhiểu cú pháp ngữ nghĩa DA-Prolog Ứng dụng A-Prolog DA-Prolog để biểudiễntrithức thơng qua số ví dụ Tìmhiểu phần mềm lập trình logic SMODELS, ngơn ngữ Lparse Thực thi số tốn ví dụ SMODELS Hướng phát triển luận văn: Nghiên cứu kỹ thuật định giá truy vấn A-Prolog 35 TÀI LIỆU THAM KHẢO TIẾNG VIỆT Lê Mạnh Thạnh – Trương Công Tuấn (2011), Giáo trình chương trình Datalog, Nhà xuất Đại học Huế TIẾNG ANH Apt K R (1990), Logic Programming, Elsevier Science Publishers Jose Julio Alferes, Luis Moniz Pereira (2006), Reasoning with Logic Programming, Springer-Verlag, Berlin Heidelberg NewYork, London Paris Tokyo, Hong Kong Barcelona, Budapest Micheal Gelfond (2002), “Representing Knowledge in A-Prolog”, Volume 2408 of Computational Logic: Logic Programming and Beyond, Essays in Honour of Robert A Kowalski Michael Gelfond and Nicola Leone (2002) “Logic Programming and Knowledge Representation – the A-Prolog prespective” Department of Computer Science, Texas Tech University Lubbock, Texas, 79409-3104 and Department of Mathematics, University of Calabria, 87030 Rende (CS), Italy Michael Bartholomew and Joohyung Lee(2012), Stable models of formulas with intensional functions In Proceedings of International Conference on Principles of Knowledge Representation and Reasoning (KR), pages 2–12 36 M Gelfond, V Lifschitz (1988), “The stable model semantics for logic programming”, In Proceedings of the 5th International Conference on Logic Programming, Seattle, USA, The MIT Press, pp 1070-1080 Paolo Ferraris, Joohyung Lee, and Vladimir Lifschitz(2011), Stable models and circumscription Artificial Intelligence, 175:236–263 Thomas Eiter, Giovambattista Ianni and Thomas Krennwallner, (2013), “ Answer Set Programming: A Primer”, Institut fur Informations systeme, Technische Universit at Wien Favoritestrabe 9-11 10 Vladimir Lifschitz, Leora Morgenstern, and David Plaisted (2008) Knowledge representation and classical logic In Frank van Harmelen, Vladimir Lifschitz, and Bruce Porter, editors, Handbook of Knowledge Representation, pages 3–88 37 PHỤ LỤC A – Mã hóa ví dụ 1.7 chương hệ thống SMODELS p(X) :- r(X), not q(X) q(X) :- r(X), not p(X) r(1) Hình Kết thực thi ví dụ 1.7 hệ thống SMODELS B – Mã hóa ví dụ 1.8 chương hệ thống SMODELS a :- not b 38 b :- not a c :- a, not b Hình Kết thực thi ví dụ 1.8 hệ thống SMODELS C – Mã hóa ví dụ 1.9 chương hệ thống SMODELS s :- not q q :- not s p :- q, not s f :- s, not p 39 Hình Kết thực thi ví dụ 1.9 hệ thống SMODELS D – Mã hóa ví dụ 1.10 chương hệ thống SMODELS p(a) r(X) :- p(X), not q(X) Hình Kết thực thi ví dụ 1.10 hệ thống SMODELS E – Mã hóa ví dụ 2.2 chương hệ thống SMODELS q(a) p(a) :- not q(a) p(b) :- not q(b) 40 Hình Kết thực thi ví dụ 2.2 hệ thống SMODELS F – Mã hóa ví dụ 2.4 chương hệ thống SMODELS p(a):- not -p(a) -p(a):- not p(a) Hình Kết thực thi ví dụ 2.4 hệ thống SMODELS G – Mã hóa ví dụ 3.2 chương hệ thống SMODELS nam(X) :- nguoi(X), not nu(X) 41 nguoichuavo(X) :- nam(X), not lapgiadinh(X) nguoi(dung) Hình Kết thực thi ví dụ 3.2 hệ thống SMODELS ... 2.2 S0 = S1 2.5 Ví dụ biểu diễn tri thức A- Prolog Trong phần này, ta trình bày số ví dụ minh hoạ việc biểu diễn tri thức A- Prolog Ví dụ 2.5 Xét chương trình A- Prolog P mơ tả việc xác định “trẻ em... bày mở rộng A- Prolog, gọi DA -Prolog, phần đầu mệnh đề chương trình A- Prolog có ch a phép tuyển logic Trong chương tập trung vào cú pháp, ngữ ngh a DA -Prolog minh h a việc biểu diễn tri thức Phần... ngh a dạng khai báo d a ngữ ngh a mơ hình bền vững chương trình logic thơng thường A- Prolog sử dụng để biểu diễn kiểu tri thức khác giới thực Luận văn nghiên cứu việc biểu diễn tri thức A- Prolog