LAPORAN PRAKTIKUM
KECERDASAN BUATAN
PERTEMUAN 2
DASAR-DASAR PROLOG
NAMA
: Rena Prasetya Ady
NIM : 115410020
JURUSAN : TI / S1
Sekolah Tinggi Manajemen
Informatika dan Komputer
Yogyakarta
2012
PERTEMUAN
2
DASAR-DASAR PROLOG
MAKSUD
DAN TUJUAN
TUJUAN
1. Mengetahui apa yang dimaksud dengan
pemrograman logika (PROgramming in LOGic)
2. Dapat mengkonversi dari bahsa natural (natural
language) ke bahasa PROLOG dan begitu juga sebaliknya
3. Mengetahui konsep dasar fakta-fakta (facts),
aturan-aturan (rule), predikat-predikat dan variable.
DASAR
TEORI
Pemrograman Logika
Prolog dikenal sebagai bahasa
deskriptif, yang berarti dengan diberikan serangkai fakta-fakta dan
aturan-aturan, Prolog, dengan menggunakan cara berpikir deduktif, akan dapat
menyelesaikan permasalah suatu program. Ini dikontraskan dengan bahasa computer
tradisioanal seperti C, BASIC, Pascal yang dikenal sebagai bahasa procedural.
Dalam bahasa procedural, programmer harus memberikan instruksi tahap demi tahap
agar computer dapat dengan pasti bagaimana menyelesaikan permasalahan yang
diberikan. Dengan kata lain, programmer harus tahu terlebih dahulu bagaimana
cara menyelesaikan permasalahan sebelum diinstruksikan ke computer. Lain jika
dibandingkan dengan programmer Prolog. Programmer Prolog hanya membutuhkan
deskripsi/gambaran permasalahan, lalu menerjemahkan ke bahasa Prolog.
Selanjutnya tinggal system Prolog yang menentukan bagaimana mencari solusinya
Prolog didasarkan pada klausa-klausa
Horn, yang merupakan himpunan bagian dari system formal yang dinamakan logika
predikat. Logika predikat menyederhanakan cara agar jelas bagaimana berpikir
akan dilakukan. Prolog menggunakan variasi sintak logika predikat yang telah
disederhanakan dengan demikian sintaknya mudah dimengerti dan sangat merip dengan
bahas natural.
Prolog mempunyai mesin inferensi
yang merupakan suatu prosesberpikir logis mengenai informasi. Mesin inferensi
mempunyai pencocok pola yang akan mengambil informasi yang telah disimpan dan
kemudian mencocokkan jawaban atas pertanyaan. Satu feature penting dari Prolog
adalah bahwa sehubungan mencari jawaban logis atas pertanyaan yang diajukan, ia
dapat berhubungan dengan banyak alternative dan mencari semua kemungkinan dari
pada hanya satu solusi.
Logika Predikat dibangun agar mudah
menerjemahkan ide-ide berbasis logika menjadi bentuk tertulis. Prolog mengambil
keunggulan dari sintak ini untuk membangun suatu bahasa pemrograman yang
berbasis logika. Dalam logika predikat, pertama kali harus membuang kata-kata
yang tidak dibutuhkan dari suatu kalimat. Kemudian mentransformasikan kalimat
tersebut dengan mencari relasi terlebih dahulu, kemudian setelah itu melakukan
pengelompokan object. Object kemudian menjadi argument dari relasi atas object
tersebut. Berikut ini merupakan contoh kalimat bahasa natural yang
ditransformasikan menjadi sintak logika perdikat :
Bahasa
Natural
|
Logika
Predikat
|
Eskrim
rasanya enak
|
enak(eskrim)
|
Mawar
berwarna merah
|
merah(mawar)
|
Mitfah
menyukai mobil
|
suka(mitfah,mobil)
|
Wening
suka bakso jika bakso rasanya enak
|
suka(wening,bakso)
if enak(bakso)
|
PEMBAHASAN
Pembahasan Praktik
Praktek 1
PREDICATES
nondeterm
dapat_membeli(symbol, symbol)
nondeterm
orang(symbol)
nondeterm
mobil(symbol)
suka(symbol,
symbol)
dijual(symbol)
CLAUSES
dapat_membeli(X,
Y):-orang(X), mobil(Y), suka(X, Y), dijual(Y).
orang(nur).
orang(yudi).
orang(dian).
orang(heni).
mobil(atoz).
mobil(kijang).
suka(dian, atoz).
suka(yudi, pecel).
suka(heni, buku).
suka(nur, komputer).
dijual(kijang).
dijual(atoz).
dijual(buku).
GOAL
dapat_membeli(Siapa,
Apa).
Hasil setelah Test Goal
:
Pada program diatas jika uji goal dengan
menekan tombol akselerator Ctrl+G, maka akan muncul Siapa=dian, Apa=atoz. Hal
ini dikarenakan syarat dapat_membeli adalah X dapat membeli Y jika X adalah
merupakan orang, Y adalah mobil, X menyukai Y dan Y tersebut dijual.
Karena dalam program ini yang memenuhi semua
syarat tersebut hanya dian dan atoz, maka yang muncul hanya satu solusi
tersebut yaitu X = dian dan Y = atoz.
Praktek 2
Menyisipkan kode dibawah ini pada CLAUSES :
suka(heni, kijang).
Hasil setelah Test Goal
:
Pada program diatas jika uji goal dengan
menekan tombol akselerator Ctrl+G, maka akan muncul 2 solusi yaitu :
Siapa=dian, Apa=atoz
Siapa=heni, Apa=kijang
Hal ini dikarenakan syarat dapat_membeli
adalah X dapat membeli Y jika X adalah merupakan orang, Y adalah mobil, X
menyukai Y dan Y tersebut dijual.
Karena dalam program ini yang memenuhi semua
syarat tersebut ada 2 solusi, maka yang muncul solusi tersebut yaitu X = dian
dan Y = atoz dan X = heni dan Y = Kijang.
Praktek 3
Mengganti GOAL dengan :
1. suka(_, Apa).
Hasil
setelah Test Goal :
Pada pengujian GOAL diatas akan
menampilkan semua benda yang disukai, tanpa menampilkan siapa yang menyukai
benda tersebut. Karena yang disukai ada 5 benda, maka yang akan muncul adalah 5
solusi.
2. suka(Siapa, _).
Hasil setelah Test Goal
:
Pada pengujian GOAL diatas akan
menampilkan semua orang yang menyukai, tanpa menampilkan apa saja yang disukai
oleh orang tersebut. Karena orang yang menyukai ada 5 orang, maka yang akan
muncul adalah 5 solusi.
3. dapat_membeli(_,
Apa).
Hasil
setelah Test Goal :
Pada pengujian GOAL diatas akan
menampilkan semua benda yang dapat dibeli, tanpa menampilkan siapa yang dapat
membeli benda tersebut. Karena yang dapat dibeli hanya ada 2 benda, maka yang
akan muncul adalah 2 solusi.
Hal ini dikarenakan hanya benda tersebut
yang memenuhi syarat tentang Y harus merupakan mobil dan Y dijual.
4. dapat_membeli(Siapa,
_).
Hasil
setelah Test Goal :
Pada pengujian GOAL diatas akan
menampilkan semua orang yang dapat membeli, tanpa menampilkan apa saja yang
dapat dibeli oleh orang tersebut. Karena orang yang dapat membeli ada 2 orang,
maka yang akan muncul adalah 2 solusi.
Hal ini dikarenakan hanya benda tersebut
yang memenuhi syarat tentang X harus merupakan orang, X suka dengan Y.
TUGAS
1.
Prolog menjadi bahasa natural
a. Dian adalah orang
b. Atoz merupakan sebuah mobil
c. Dian menyukai atoz
d. Atos dijual
e. X dapat membeli Y jika X adalah orang dan Y
merupakan sebuah mobil dan X menyukai Y dan Y dijual
f. Apa yang disukai
2. Bahasa
natural menjadi bahasa Prolog
a. hobi(Ricky, catur)
b. malas(Embang)
c. vegetarian(Yusida)
d. main(Kusdiar, gitar)
e. merah(mobil), milik(Sadek), merk(BMW)
f. pemain(Awan, piano), asal(Pontianak), suku(Jawa)
g. baik(orang) :- penyayang(sifat),
dermawan(sifat)
h. pintar(orang) :- nilai(Matematika, tinggi) ;
nilai(IPA, tinggi) ; nilai(IPS, tinggi)
i. pasti(orang, mati)
3. Program
dalam Bahasa Prolog
PREDICATES
nondeterm anak(STRING,STRING)
nondeterm istri(STRING, STRING)
nondeterm pria(STRING)
nondeterm wanita(STRING)
nondeterm usia(STRING, integer)
nondeterm cucu(STRING cucu, STRING kakek)
nondeterm ibu(STRING ibu, String anak)
nondeterm adik(STRING adik, STRING kakak)
nondeterm kakek(STRING kakek, STRING cucu)
CLAUSES
anak("Jhon", "James").
anak("James", "Peter").
anak("Sue", "Ann").
istri("Mary", "Peter").
istri("Ann", "James").
pria("Jhon").
pria("James").
pria("Peter").
wanita("Mary").
wanita("Sue").
wanita("Ann").
usia("Jhon", 10).
usia("Sue", 13).
cucu(A, B) :- anak(A, C), anak(C, B).
ibu(A, B) :- anak(B, A), wanita(A).
adik(A, B) :- usia(A, 10), usia(B, 13).
kakek(A, B) :- anak(B, C), anak(C, A),
pria(A).
GOAL
kakek("James", X).