<< Chapter < Page | Chapter >> Page > |
giau(hong).
giau(thuy).
giau(hung).
thich(lan,X):-khoe(X), dep(X), thong_minh(X).
thich(hong,X):-khoe(X), thong_minh(X), giau(X).
thich(thuy,X):-khoe(X), dep(X), thong_minh(X).
thich(ann,X):-dep(X), tot(X), thong_minh(X).
thich(binh,X):-dep(X), khoe(X).
thich(hung,X):-khoe(X), tot(X), thong_minh(X).
ket_ban(X,Y):- gioi_tinh(X,M),
gioi_tinh(Y,N),
M<>N,
thich(X,Y),
thich(Y,X).
Việc giải quyết vấn đề trong ngôn ngữ Prolog chủ yếu dựa vào hai nguyên tắc sau: Đồng nhất, quay lui.
Một quan hệ có thể đồng nhất với một quan hệ nào đó cùng tên, cùng số lượng tham số, các đại lượng con cũng đồng nhất theo từng cặp.
Một hằng có thể đồng nhất với một hằng.
Một biến có thể đồng nhất với một hằng nào đó và có thể nhận luôn giá trị hằng đó.
Chẳng hạn trong ví dụ 2 nói trên nếu ta sử dụng goal dep(lan) thì có kết quả là Yes. Nếu ta dùng goal dep(X) thì sẽ có 3 kết quả: X=lan, X=hong và X=binh.
Khi ta dùng goal dep(lan) thì dep(lan) sẽ đồng nhất với sự kiện dep(lan) trong phần clauses và do hai vị từ đồng nhất với nhau và hai đối số hằng đồng nhất nhau nên kết quả là Yes.
Khi dùng goal dep(X) thì dep sẽ được đồng nhất với dep và biến X đồng nhất với hằng lan, do đó ta có kết quả X=lan. Tương tự X=hong và X=binh.
Giả sử hệ thống đang chứng minh goal g, trong đó g được mô tả như sau:
g :- g1, g2, …, gj-1, gj, …, gn.
Khi các gi kiểm chứng từ trái sang phải, đến gj là sai thì hệ thống sẽ quay lui lại gj-1 để tìm lời giải khác.
Chẳng hạn trong ví dụ 2 nói trên, khi ta yêu cầu Goal: thich(lan,X), ta được X=binh.
Vị từ thich(lan,X) sẽ được đồng nhất với thich(lan,X) trong phần clauses, theo đó hệ thống phải chứng minh thich(lan,X):-khoe(X), dep(X), thong_minh(X).
Prolog dùng bộ ký tự sau: các chữ cái và chữ số (A – Z, a – z, 0 – 9); các toán tử (+, -, *, /,<, =,>) và các ký hiệu đặc biệt.
Một số từ khoá:
Trong prolog có kiểu dữ liệu chuẩn và kiểu do người lập trình định nghĩa.
Là kiểu dữ liệu do prolog định nghĩa sẵn. Prolog cung cấp các kiểu dữ liệu chuẩn là: char, integer, real, string và symbol.
Ví dụ: ‘a’, ‘#’.
Notification Switch
Would you like to follow the 'Ngôn ngữ lập trình' conversation and receive update notifications?