Anda di halaman 1dari 4

1.

Prolog merupakan salah satu paradigma pemrograman deklaratif yang


berbasiskan representasi logika. Sebagai salah satu paradigma pemrograman
deklaratif, terdapat dua ciri utama dari Prolog yaitu Rekursi (recursion) dan
unifikasi (unification). Jelaskan apa yang anda ketahui terkait dengan makna
dari rekursi dan unifikasi pada Prolog! Sertakan juga contoh rekursi dan proses
unifikasi dalam Prolog!

2. Diberikan serangkaian unifikasi pada sepasang Prolog terms berikut,

a. woman(X) = woman(Y).

b. wizard(harry) = wizard(Z).

c. loves(vincent,X) = loves(X,Y).

d. date(DD,MM,YY) = date(MM,8,2016).

e. date(X,X,X) = date(8,8,9).

f. X is 5 + 5, Y is 2 + 2, calculate(X,Y) = calculate(10,4).

g. thief(robinhood) = thief(X), rich(king) = rich(Y).

h. marry(simon,betty) = marry(X,X).

Untuk setiap unifikasi di atas, tentukan apakah proses unifikasi akan berhasil/
gagal untuk dilakukan. Saat unifikasi berhasil dilakukan, tentukan nilai
instansiasi dari setiap varibel!

3. Sebagai salah satu bahasa pemrograman logika, program Prolog tersusun atas
facts, rules dan queries. Ketiganya merupakan variasi dari suatu representasi
yang disebut sebagai clauses. Sebuah clauses tersusun atas komponen-
komponen yang lebih sederhana yang disebut sebagai terms. Gambarkan bagan
yang menunjukkan kelompok-kelompok dari terms dan jelaskan aturan
penyusunan dari setiap kelompok tersebut!

4. Pada Prolog terdapat dua jenis kelas rekursif yaitu tail recursive dan regular
recursive. Jelaskan apa yang anda ketahui terkait dengan tail recursive dan
perbedaannya dengan regular recursive! Berikan sebuah contoh yang
merepresentasikan perbedaan tail recursive dan regular recursive!
5. Diberikan sebuah program Prolog berikut,

menikah(ani,budi).

menikah(budi,betty).


ortuDari(andi,betty).

ortuDari(ani,betty).


dan sebuah query,


?- mertua(A,B)

Gambarkan pohon pencarian untuk seluruh jawaban dari query di atas!

6. Diberikan sebuah program Prolog berikut,

capitalOf(jakarta,indonesia).
capitalOf(kuala_lumpur,malaysia).
capitalOf(bangkok,thailand).
capitalOf(manila,philippines).

connected(jakarta,kuala_lumpur).

Berdasarkan program di atas tentukan sebuah jawaban untuk rangkaian queries


berikut!

a. connected(X,Y).

b. connected(kuala_lumpur,X).

c. country_connected(malaysia,B).

d. country_connected(X, malaysia).

7. Boneka-boneka Matryoshka (stacking dolls) merupakan sekumpulan boneka


dengan ukuran dari kecil ke besar, dimana boneka yang berukuran yang lebih
kecil diletakkan ke dalam boneka yang lebih besar secara terus menerus.
Gambar 1 menunjukkan salah satu contoh dari boneka-boneka Matryoshka
untuk mempermudah pemahaman anda terhadap permasalahan yang
diberikan!
Gambar 1. Boneka-boneka Matryoshka

Berdasarkan sebuah program P berikut,


directly_contain(neko_bus, miminzuku).

directly_contain(miminzuku, zuk).

directly_contain(zuk, min).

directly_contain(min, walnut).

Lengkapilah program P di atas dengan menggunakan dua buah rule agar saat
diberikan query-query: contain(neko_bus, min), contain(neko_bus,
walnut), contain(zuk, min) dan contain(miminzuku,min) program
akan memberikan jawaban yes/true!

8. Buatlah sebuah predikat delete_all(L, X, Result) dengan L merupakan sebuah


List yang berisikan integer, X merupakan sebuah integer dan Result merupakan
sebuah sebuah List yang berisikan seluruh elemen L yang bernilai lebih besar
dari X!

9. Terdapat sebuah predikat min(L, X) dengan variabel L (argumen pertama)


berupa sebuah prolog list yang berisikan sekumpulan integer dan X merupakan
nilai terkecil yang terkandung dalam list L. Berdasarkan definisi dari predikat
min/2 di atas, buatlah sebuah program tanpa memanfaatkan teknik
accumulator sesuai definisi predikat min/2! Kemudian buatlah program lain
dengan memanfaatkan teknik tail recursive!

10. Definisikan sebuah predikat occurences(X,L,C) yang akan mengembalikan


jawaban true/yes ketika X merupakan sebuah atom, L merupakan sebuah
prolog list, dan C merupakan jumlah kemunculan X dalam L ke dalam sebuah
program Prolog!
Contoh query dan jawaban untuk no. 6:
?- occurences(1,[a,b,c,1,1,c,d,e,1], X).

X=3.

?- occurences(5,[1,2,3,4,5,1,2,3,4,5,a],2).

yes.

11. Definisikan sebuah predikat palindrome(X) yang akan bernilai yes/true ketika X
merupakan sebuah list of alfabet yang bersifat palindrom! 


Contoh query dan jawaban untuk no. 7:

?- palindrome([t,a,c,o,c,a,t]

yes

?- palindrome([a,n,i,b,u,d,i])

no

Anda mungkin juga menyukai