1 Ngôn Ngôn ng ng ữ ữ l l ậ ậ p p tr tr ì ì nh nh Prolog Prolog This is trial version www.adultpdf.com 2 1. Giớithiệu PROgramming in LOGic (sử dụng cách tiếp cận logic) Alain Calmerauer & Philippe Roussel, 1972 Dùng ngôn ngữ mô tả/khai báo (declarative language) để đặctả vấn đề Ứng dụng nhiều trong xử lý ngôn ngữ tự nhiên và TTNT. Turbo Prolog, Visual Prolog, B-Prolog, SWI- Prolog, … This is trial version www.adultpdf.com 3 2. Cú pháp Chương trình là tập các mô tả logic vị từ dưới dạng chuẩn Horn Không có cấu trúc điều khiển (rẽ nhánh, lặp) Không có phép gán Vị từ đượcdiễngiải thông qua sự kiện và luật, kết thúc bằng ký tự ‘.’. Prolog trả lời các câu hỏi nhờ cơ chế suy luận dựa trên kiến thức được cung cấp This is trial version www.adultpdf.com 4 Ví dụ owns(john,house). owns(mary,house). young(john). rich(X) :- owns(X,house). talent(X) :- rich(X), young(X). sự kiện luật ?- consult(‘E:\\swi_prolog\\test.pl’). ?- talent(john). YES ?- talent(X). X = john Chương trình Truy vấn This is trial version www.adultpdf.com 5 2.1 Sự kiện Sự kiện là những điều ta công nhận là đúng Ví dụ: cat(tom). khoang_cach(‘Hà nội’,’TP Hồ Chí Minh’,2000). Tên vị từ bắt đầubằng kí tự thường Chuỗikítựđặt trong ‘ ‘ Biếnbắt đầubằng chữ hoa. This is trial version www.adultpdf.com 6 2.2 Luật Sử dụng để định nghĩa một vị từ (quan hệ) mới dựa trên các vị từ (quan hệ) đã biết. Gồm2 phần, phân cách bởidấu:- Ví dụ: giaithua(N,Kq):- N1 is N-1, giaithua(N1,Kq1), Kq is Kq1*N. VT là vị từ cầnxácđịnh; VP là điềukiện để VT nhận giá trịđúng VP gồmcáclờigọivị từ khác, ngăncáchbởi dấu“,” This is trial version www.adultpdf.com 7 2.2 Luật Nếu nhiềuluậtcóVT giống nhau, các luật phảiviếtliêntiếp nhau. Ví dụ: me(X,Y) :- me(X,Z), anh(Z,Y). bac(X,Y) :- anh(X,Z), bo(Z,Y). bac(X,Y) :- anh(X,Z), me(Z,Y). Tham số truyền trong các vị từ không đượclà biểuthức. Ví dụ: giaithua(N-1,kq). %sai This is trial version www.adultpdf.com 8 3. Cơ chế tìm lờigiảicủaProlog nguoi(socrate). nguoi(xeda). vua(xeda). ?- consult(‘E:\\swi_prolog\\a.pl’). ?- vua(xeda). YES ?- nguoi(X), vua(X). X = xeda Chương trình Truy vấn This is trial version www.adultpdf.com 9 3. Cơ chế tìm lờigiảicủaProlog ?- nguoi(X), vua(X). X=socrate, vua(socrate) r1 - nguoi(socrate). r2 - nguoi(xeda). r3 - vua(xeda). Không thành công Quay lui X=xeda, vua(xeda) Thành công This is trial version www.adultpdf.com 10 3. Cơ chế tìm lờigiảicủaProlog 1. So khớp 2. Tạomốiliênkếtgiữa các thông sốởphần câu hỏi và các thông số củacácsự kiệnvà luậttrongchương trình. 3. Thựcthitiếpcácluật. 4. Nếuthực thi thành công (các biến ở phần câu hỏi đã ở tình trạng bound) Æ có lờigiải This is trial version www.adultpdf.com . 1972 Dùng ngôn ngữ mô tả/khai báo (declarative language) để đặctả vấn đề Ứng dụng nhiều trong xử lý ngôn ngữ tự nhiên và TTNT. Turbo Prolog, Visual Prolog, B -Prolog, SWI- Prolog, … This. 1 Ngôn Ngôn ng ng ữ ữ l l ậ ậ p p tr tr ì ì nh nh Prolog Prolog This is trial version www.adultpdf.com 2 1. Giớithiệu PROgramming. version www.adultpdf.com 8 3. Cơ chế tìm lờigiảicủaProlog nguoi(socrate). nguoi(xeda). vua(xeda). ?- consult(‘E:\swi _prolog a.pl’). ?- vua(xeda). YES ?- nguoi(X), vua(X). X = xeda Chương trình Truy vấn This is trial