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). Mời các bạn cùng tham khảo nội dung chi tiết.
5.1 Giới thiệu Chương 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 xử lý ngôn ngữ tự nhiên 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 5.2 Cú pháp Ví dụ owns(john,house) owns(mary,house) kiện young(john) rich(X) :- owns(X,house) luật talent(X) :- rich(X), young(X) Chương trình tập mơ tả logic vị từ 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ừ diễn giải thơng qua kiện luật, kết thúc ký tự ‘.’ Prolog trả lời câu hỏi nhờ chế suy luận dựa kiến thức cung cấp Truy vấn Lê Thanh Hương – Khoa CNTT - ĐHBKHN Chương trình ?- consult(‘E:\\swi_prolog\\test.pl’) ?- talent(john) YES ?- talent(X) X = john 5.2.1 Sự kiện 5.2.2 Luật Sử dụng d để định đị h nghĩa hĩ ột vịị từ ((quan hệ) ới d dựa ttrên ê vị từ (quan hệ) biết Gồm phần, phân cách dấu : Ví dụ: Sự kiện điều ta công nhận 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 vị từ cần xác định; VP điều kiện để VT nhận giá trị VP gồm lời gọi vị từ khác, ngăn cách dấu “,” Tham số truyền vị từ không biểu thức Ví dụ: Tên vị từ bắt đầu kí tự thường Chuỗi kí tự đặt ‘ ‘ Biến bắt đầu chữ hoa giaithua(N-1,kq) %sai Lê Thanh Hương – Khoa CNTT - ĐHBKHN Lê Thanh Hương – Khoa CNTT - ĐHBKHN 5.3 Cơ chế tìm lời giải Prolog nguoi(socrate) nguoi(xeda) vua(xeda) Truy vấn 5.3 Cơ chế tìm lời giải Prolog r1 - nguoi(socrate) r2 - nguoi(xeda) r3 - vua(xeda) Chương trình ?- nguoi(X), vua(X) X=socrate, vua(socrate) ? consult( ?consult(‘E:\\swi E:\\swi_prolog\\a.pl prolog\\a.pl’) ) ?- vua(xeda) YES ?- nguoi(X), vua(X) X = xeda Lê Thanh Hương – Khoa CNTT - ĐHBKHN Không thành công Quay lui Lê Thanh Hương – Khoa CNTT - ĐHBKHN X=xeda, vua(xeda) Thành công 5.3 Cơ chế tìm lời giải Prolog Điều khiển trình quay lui (backtracking) Prolog tự động quay lui cần ầ thiết ế So khớp Tạo mối liên kết thông số phần câu hỏi thông số kiện luật chương trình Thực thi tiếp luật luật Nếu thực thi thành công (các biến phần câu hỏi tình trạng bound) Ỉ có lời giải Có thể điều khiển trình thực thi chương trình cách lại thứ tự mệnh đề Nhát cắt tốn tử dùng để ngăn cản q trình backtracking Prolog nhát cắt Ví dụ: f(X,0):- X