Bài giảng "Trí tuệ nhân tạo - Chương 5: Ngôn ngữ lập trình Prolog" cung cấp cho người học các kiến thức: Giới thiệu, cú pháp, cơ chế tìm lời giải của Prolog, danh sách (list). nội dung chi tiết. | . Giới thiệu Chương 5. 5 Ngôn ngữ lập trình Prolog 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) để đặc tả vấn đề Ứng dụng nhiều trong xử lý ngôn ngữ tự nhiên và TTNT. Turbo Prolog, Visual Prolog, B-Prolog, SWIProlog, Lê Thanh Hương g Khoa CNTT Đại học Bách khoa Hà Nội Lê Thanh Hương – Khoa CNTT - ĐHBKHN 2 . Cú pháp Ví dụ owns(john,house). owns(mary,house). sự kiện young(john). rich(X) :- owns(X,house). luật talent(X) :- rich(X), young(X). 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ừ được diễn giả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 Truy vấn Lê Thanh Hương – Khoa CNTT - ĐHBKHN 3 Chương trình ?- consult(‘E:\\swi_prolog\\’). ?- talent(john). YES ?- talent(X). X = john 4 1 Sự kiện Luật Sử dụng d để định đị h nghĩa hĩ một ột vịị từ ((quan hệ) mới ới d dựa ttrên ê các vị từ (quan hệ) đã biết. Gồm 2 phần, phân cách bởi dấu : Ví dụ: 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). giaithua(N,Kq):- N1 is N-1, giaithua(N1,Kq1), Kq is Kq1*N. VT là vị từ cần xác định; VP là điều kiện để VT nhận giá trị đúng VP gồm các lời gọi vị từ khác, ngăn cách bởi dấu “,” Tham số truyền trong các vị từ không được là biểu thức. Ví dụ: Tên vị từ bắt đầu bằng kí tự thường Chuỗi kí tự đặt trong ‘ ‘ Biến bắt đầu bằng chữ hoa. giaithua(N-1,kq). %sai Lê Thanh Hương – Khoa CNTT - ĐHBKHN Lê Thanh Hương – Khoa CNTT - ĐHBKHN 5 . Cơ chế tìm lời giải của Prolog nguoi(socrate). nguoi(xeda). vua(xeda). Truy vấn . Cơ chế tìm lời giải của Prolog r1 - nguoi(socrate). r2 - nguoi(xeda). r3 - vua(xeda). Chương trình ?- nguoi(X), vua(X). X=socrate, vua(socrate) ?