Laman

Selasa, 26 Oktober 2010

Basic Concept: Fact and Rules

FACT and RULES in PROLOG


1. FACT

Fact merupakan ekspresi predikat yang menyatakan pernyataan deklaratif tentang masalah utama suatu project. Prolog fact merupakan salah satu terapan dalam Fact tersebut. Prolog fact bertujuan utama untuk mendefinisikan suatu predikat dengan menjelaskan tentang elemen-elemen yang memenuhi di dalam predikat tersebut. Apabila terdapat suatu variable pada Prolog, itu bisa jadi diasumsikan sebagai sebuah hal yang bersifat universal. Untuk lebih jelasnya lagi dapat dijelaskan sebagai berikut:

sayang (ayah, ibu).

/* Ayah sayang Ibu */

sayang (X, ibu).

/* Semua orang sayang ibu */

sayang (ayah, Y).

/* Ayah sayang semua orang */

sayang (Y, ayah), sayang (ayah, Y).

/* Semua orang sayang ayah dan ayah sayang semua orang */

sayang (ayah, ibu) ; sayang (ayah, anak).

/* Ayah sayang ibu atau ayah sayang anak */

tidak (sayang(ayah, kelinci)).

/* Ayah tidak sayang kelinci */

Sayang (ayah, ibu) :- sayang(ayah, anak).

/* Ayah sayang ibu jika ayah sayang anak */

2. RULES

Sejauh ini kita telah melihat bagaimana untuk mewakili fakta dan queri. Sekarang kita beralih ke rules. Rules memungkinkan kita untuk membuat pernyataan bersyarat. Setiap aturan dapat memiliki beberapa variasi, yang disebut klausa. Klausa ini memberikan kita pilihan yang berbeda tentang bagaimana melakukan inferensi. Prolog rules itu digunakan untuk mendefinisikan sebuah predikat yang telah digunakan di dalam Prolog Fact. Di dalam prolog rules biasanya menggunakan tanda :- yang berarti (…. jika…….).

Contoh dari valid rules

friends(X,Y) :- likes(X,Y),likes(Y,X).            

/* X and Y are friends if they like each other */

hates(X,Y) :- not(likes(X,Y)). 
 /* X hates Y if X does not like Y. */
enemies(X,Y) :- not(likes(X,Y)),not(likes(Y,X)).  

/* X and Y are enemies if they don't like each other */


Contoh dari invalid rules



left_of(X,Y) :- right_of(Y,X)                     
/* Missing a period */
likes(X,Y),likes(Y,X) :- friends(X,Y).            
/* LHS is not a single literal */
not(likes(X,Y)) :- hates(X,Y).                    
/* LHS cannot be negated */

*example rules from http://cs.trincoll.edu/

Tidak ada komentar:

Posting Komentar