Thứ Ba, 18 tháng 11, 2008

Làm quen với prolog...

há há... cuối cùng cũng bít cái prolog là cái quái j... nó cũng zui zui lâu lâu cũng lảng nhách=))
Cố lên ku Tiến ơi...
NHỮNG ĐIỂM CẦN LƯU Ý TRONG PROLOG
Cách biểu diễn quan hệ:
Prolog là một chương trình gồm Sự Kiện(Event)(còn gọi là Cơ Sở(fact)) và Luật (Rule).
Kí hiệu biến: chữ đầu in hoa.
Sự kiện:
P(A0, … , An): A0, …, An có tính chất P.
P(A,B): A có quan hệ P với B.
Luật:
Gồm nhiều sự kiện, định nghĩa một quan hệ bằng một số quan hệ khác.
Trong hình minh họa:
woman(mia) à mia có tính chất là phụ nữ
loves(marcellus,mia) à marcellus, mia có quan hệ iu nhau (J)
dòng 14 là một luật à quan hệ X ganh tị (jealous(X,Y)) với Y khi X và Y cùng có quan hệ yêu với Z.
Mô tả sử dụng SWI-prolog Editor:
Đầu tiên cài SWI-Prolog tại trang web: http://www.swi-prolog.org/
à chọn version thích hợp
Cài SWI-Prolog Editor: http://lernen.bildung.hessen.de/informatik/swiprolog/indexe.htm
Sau khi cài đặt thành công sẽ có giao diện như trên.
Lưu ý khi làm bài:
Ø Lưu đúng source folder để chạy.(chọn icon thứ 3 từ trên xuống trong Phần hỗ trợ source code)
Ø Truy vấn bắt đầu bằng ?- kết thúc .
Ø Trước khi bắt đầu chương trình dùng :
o [tên file thực thi không có đuôi].
o listing. (xem kiểm tra các đoạn code sẽ thực thi)
Ví dụ minh họa:
Chương trình 1:
Phần chương trình (viết trong phần soạn thảo)(file lưu là alo.pl, source folder trong document).
% Author:
% Date: 11/18/2008

woman(mia).
woman(jody).
woman(yolanda).
loves(vincent,mia).
loves(marcellus,mia).
loves(pumpkin,honeybunny).
loves(honeybunny,pumpkin).
jealous(X,Y):- loves(X,Z),loves(Y,Z).
%quan hệ ganh tị nếu hai người cùng iu người thứ 3
Phần truy vấn:
Welcome to SWI-Prolog (Multi-threaded, 32 bits, Version 5.6.62)
Copyright (c) 1990-2008 University of Amsterdam.
SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to redistribute it under certain conditions.
Please visit http://www.swi-prolog.org for details.

For help, use ?- help(Topic). or ?- apropos(Word).

1 ?- [alo].
% alo compiled 0.00 sec, 1,564 bytes
true.

3 ?- listing.

loves(vincent, mia).
loves(marcellus, mia).
loves(pumpkin, honeybunny).
loves(honeybunny, pumpkin).

woman(mia).
woman(jody).
woman(yolanda).

jealous(A, B) :-
loves(A, C),
loves(B, C).
true.

4 ?- woman(X).
X = mia ;
X = jody ;
X = yolanda.
%liệt kê các giá trị có tính chất là phụ nữ, nhấn enter để liệt kê ra tất cả các giá trị.
5 ?- man(Y).
ERROR: toplevel: Undefined procedure: man/1 (DWIM could not correct goal) %Khong quan he man
6 ?- man(X).
ERROR: toplevel: Undefined procedure: man/1 (DWIM could not correct goal)
7 ?- loves(marcellus,X).
X = mia.
% những người có quan hệ iu với marcellus
8 ?- jealous(marcellus,X).
X = vincent

Không có nhận xét nào: