Cơ chế hoạt động của Prolog

Một phần của tài liệu MỘT SỐ PHƯƠNG PHÁP BIỂU DIỄN TRI THỨC VÀ NGÔN NGỮ PROLOG TRONG LẬP TRÌNH LOGIC (Trang 25)

Là cách suy diễn đối sánh (pattern matching) để so khớp mệnh đề và hợp nhất biến (unification) để tìm kiếm mục tiêu bằng kỹ thuật đệ quy theo hướng tìm quay lui (backtracking).

Phép hợp nhất động cơ dùng cho đối sánh (pattern matching) và lượng giá vị từ

Khi Prolog xét tìm lời giải cho mục tiêu (goal) mà ta đưa vào, nó sẽ kiểm tra từng mệnh đề của chương trình tử trên xuống (top-bottom) để tìm mênh đề xứng hợp. Khi tìm thấy một mệnh đề là xứng hợp (match) với mục tiêu, nó sẽ kết buộc các giá trị này với các biến tự do. Và như vậy, mục tiêu và mệnh đề là đồng nhất, mục tiêu được gọi là hợp nhất (unify) với mệnh đề.

Các biến trong Prolog có thể có một và chỉ một kết buộc. Khi cho một giá trị thông qua việc gán hay hợp nhất cục bộ, chúng không bao giờ nhận một giá trị mới, trừ trường hợp thông qua một giá trị lần ngược (backtracking)

2.2.11Tìm kiếm bằng kỹ thuật đệ quy và nhát cắt Đệ quy:

Cũng như ngôn ngữ lập trình hàm LISP, đệ quy là cơ chế chính trong lập trình Prolog.

Dùng thủ tục cắt để điều khiển tìm kiếm trong Prolog:

Được biểu diễn bằng dấu !, để ngăn chặn việc quay lui (backtracking) . Nếu gặp nhát cắt ở vế phải của luật, sẽ không có sự quay lui ở vế trái của luật

Biểu diễn tri thức và ứng dụng

chứa nhát cắt. Nếu nhát cắt sẽ được thực hiện lại thì mục tiêu hiện thời sẽ sai (fail). Do vậy, sẽ không thử lại vị từ trước nhát cắt.

Ví dụ: Để tránh quay lui trong một chương trình Prolog có cấu trúc điều khiển if có dạng

f(X):-pred(X), then(X). f(X):-not pred(X), else(X). Ta thay bằng nhát cắt: f(X):-pred(X),!,then(X). f(X):-else(X).

Một phần của tài liệu MỘT SỐ PHƯƠNG PHÁP BIỂU DIỄN TRI THỨC VÀ NGÔN NGỮ PROLOG TRONG LẬP TRÌNH LOGIC (Trang 25)