- Back to Home »
- Artificial intelligence , Prolog »
- Klausa dan Predikat dalam Prolog
Posted by : Unknown
Jumat, 04 April 2014
Klausa dan Predikat dalam Prolog
Klausa
Klausa
merupakan unit penyusun dari program prolog. Klausa dibagi menjadi dua yaitu
Fakta
Contoh
- suka(andi, eskrim).
Bisa
dibaca andi suka eskrim
- anakperempuan(lila, agus)
Bisa dibaca lila anakperempuan dari
agus.
- cat(felix).
Bisa
dibaca felix adalah kucing
Aturan
Contoh
- orangtua(X,Y) :- anak(Y,X).
Bisa
dibaca X adalah orangtua Y jika Y adalah anak dari X
- paman(X,Y) :- orangtua(Z,Y),
saudaralaki(X,Z).
Bisa
dibaca X adalah paman dari Y jika Z adalah orangtua dari Y dan X adalah
saudaralaki dari Z
Predikat
Hubungan
yang merepresentasikan klausa. contoh
- Klausa
suka(andi, eskrim) maka predikatnya adalah suka.
- Klausa
anakperempuan(lila, agus) maka predikatnya adalah anakperempuan.
Variabel
Variabel
merupakan sebuah interpretasi yang digunakan untuk menemukan nilai dari sebuah
klausa. Variabel harus diawali dengan huruf besar.
Contoh
-
suka(andi,X) .
X = eskrim
-
anakperempuan(lila, X).
X = agus
Variabel
yang memiliki beberapa value kamu dapat memunculkan nilai lain dengan menekan
tombol (;)
Deskripsi
Rekrusif dari Sebuah Hubungan
Nah ini yang
gak kalah penting, Rekursif ini digunakan untuk mencari seluruh dari child dari
sebuah tree. Intinya, misalkan terdapat sebuah keluarga terdapat kakek, ayah,
dan anak. Maka untuk mendapatkan seluruh keturunan dari kakek, yaitu kakek,
ayah, anak, anaknya anak dan seterusnya kita membutuhkan rekursif.
Representasinya
seperti berkut
turunan(X,Y)
:- antiturunan(Y,X).
turunan(X,Y)
:- antiturunan(Y,Z), turunan(X,Z).
Contoh soal
1. Dari suatu pohon keluarga berikut
buatlah suatu program prolog yang menyatakan predikat anak, perempuan,
lakilaki, orangtua, paman, bibi, kakek, nenek, menikah, saudaralaki,
saudaraperempuan !
Jawab :
anak(ida, anto).
anak(ida, wati).
anak(ita, anto).
anak(ita, wati).
anak(budi, anto).
anak(budi, wati).
anak(dina, budi).
anak(dina, lila).
anak(hadi, ita).
anak(hadi, deni).
anak(andi, ida).
anak(andi, rudi).
anak(rita, ida).
anak(rita, rudi).
perempuan(wati).
perempuan(ita).
perempuan(ida).
perempuan(rita).
perempuan(dina).
lakilaki(anto).
lakilaki(deni).
lakilaki(budi).
lakilaki(rudi).
lakilaki(hadi).
lakilaki(andi).
menikah(anto,wati).
menikah(deni,ita).
menikah(budi,lila).
menikah(rudi,ida).
orangtua(A,B,C):-anak(C,A),menikah(A,B),
(A)\==(B).
saudaralaki(X,Y):-orangtua(A,B,X),
orangtua(A,B,Y), lakilaki(Y), (X)\==(Y).
saudaraperempuan(X,Y):-orangtua(A,B,X),
orangtua(A,B,Y), perempuan(Y), (X)\==(Y).
paman(X,Y):-anak(Y,Z),
saudaralaki(Z,X).
bibi(X,Y):-anak(Y,Z),
saudaraperempuan(Z,X).
kakek(X,Y):-anak(Y,Z),anak(Z,X),
lakilaki(X).
nenek(X,Y):-anak(Y,Z),anak(Z,X),
perempuan(X).
2. Dari suatu organisasi berikut
buatlah suatu program prolog yang menyatakan predikat atasanlangsung,
bawahanlangsung, anakbuah !
Jawab :
bawahanlangsung(burhan, adi).
bawahanlangsung(bahrun, burhan).
bawahanlangsung(bisrin, burhan).
bawahanlangsung(fahri, bahrun).
bawahanlangsung(farah, bahrun).
bawahanlangsung(ferdi, bisrin).
atasanlangsung(X,Y):-bawahanlangsung(Y,X).
anakbuah(X,Z):-atasanlangsung(Z,X).
anakbuah(X,Z):-atasanlangsung(Z,Y),anakbuah(X,Y).