LABORATORIUM PEMBELAJARAN ILMU KOMPUTER FAKULTAS ILMU KOMPUTER UNIVERSITAS BRAWIJAYA
BAB NAMA NIM TANGGAL JENIS ASISTEN
: LOGIC PROGRAMMING : KELOMPOK 1 :: 25/04/2018 : TUGAS : - BRENDY OSCAR MUNTHE - MOH. IQBAL YUSRON
ACC
A. DEFINISI MASALAH 1. Kesukaan
a. Terjemahkan pengetahuan di bawah ke dalam KB FOL 1. Budi suka apapun yang disukai Ani 2. Budi suka siapapun yang suka teh anget atau suka soto 3. Amir tidak suka siapapun yang suka soto 3. Ani suka Soto 4. Budi suka teh anget 5. Budi suka Ani 6. Ani suka Amir 7. Amir suka soto b. Terjemahkan query ke dalam FOL 1. Apakah Ani suka Soto? 2. Apakah Budi suka teh anget? 3. Apakah Budi suka Soto? 4. Apakah Ani suka Budi? 5. Apakah Budi suka Amir? 6. Apakah Amir suka Ani? 7. Apakah Amir suka Budi? 8. Apakah Amir suka teh anget? c. Menuliskan FOL ke dalam Bahasa prolog d. Menuliskan hasil dari masing-masing query 2. Lemari novel a. Menerjemahkan kalimat ke dalam KB FOL b. Menerjemahkan query ke dalam FOL c. Menuliskan FOL ke dalam Bahasa prolog d. Menuliskan hasil dari masing-masing query
Knowlede Base untuk lemari novel :
Dalam lemari novel Budi, semua lemari berisi buku karya penulis Indonesia dan bagus menurut budi. Menurut Budi, buku yang bagus mempunyai ciri-ciri yaitu memiliki alur cerita yang bagus dan best seller. Apabila buku terjual lebih dari 50 ribu buku per tahun maka buku tersebut dikatakan best seller. Pada lemari novel Ani, semua lemari novelnya berisi novel-novel best seller dan memiliki penghargaan nasional atau internasional. Laskar pelangi merupakan novel yang memiliki alur cerita yang bagus, memiliki penghargaan nasional maupun internasional dan sudah terjual lebih dari satu juta kopi, melebihi syarat 50 ribu novel per tahun serta novel ini merupakan karya penulis Indonesia yang bernama Andrea Hirata. Novel berjudul Pulang karya penulis Indonesia yang bernama Leila S. Chudori memiliki alur cerita cukup bagus, sudah mendapatkan penghargaan nasional namun tidak terlalu banyak terjual di pasaran. Karya penulis asal Brazil bernama Paulo Coelho yang berjudul Alchemist memiliki alur cerita yang sama bagusnya dengan Laskar pelangi. Novel ini telah mendapatkan banyak penghargaan internasional serta sudah terjual banyak hingga melebihi 50 ribu novel per tahunnya. Query :
1. Apakah Novel Laskar Pelangi ada di lemari novel Budi? 2. Apakah Novel Alchemist ada di lemari novel Budi? 3. Apakah Novel Pulang ada di lemari novel Budi? 4. Apakah Novel Laskar Pelangi ada di lemari novel Ani? 5. Apakah Novel Alchemist ada di lemari novel Ani? 6. Apakah Novel Pulang ada di lemari novel Ani? 7. Novel apakah yang ada di lemari novel Budi dan Ani? 8. Novel apakah yang tidak ada di lemari novel Budi maupun Ani? B. JAWAB 1. Kesukaan a. Terjemahkan pengetahuan di bawah ke dalam KB FOL
Budi suka apapun yang disukai Ani = TELL(KB, suka(BUDI,x):- suka(ANI,x)) Budi suka siapapun yang suka teh anget atau suka soto = TELL(KB, suka(BUDI,x):- suka(x,TEH ANGET) ; suka(x,SOTO)) Amir tidak suka siapapun yang suka soto = TELL(KB, tidaksuka(AMIR,x):- suka(x,SOTO))
Ani suka Soto = TELL(KB,suka(ANI, SOTO)) Budi suka teh anget = TELL(KB,suka(BUDI, TEH ANGET)) Budi suka Ani = TELL(KB,suka(BUDI, ANI)) Ani suka Amir = TELL(KB,suka(ANI, AMIR)) Amir suka soto = TELL(KB,suka(AMIR, SOTO)) b. Terjemahkan query ke dalam FOL 1. Apakah Ani suka Soto? = suka(ANI, SOTO) 2. Apakah Budi suka teh anget? = suka(BUDI, TEH ANGET) 3. Apakah Budi suka Soto? = suka(BUDI, SOTO) 4. Apakah Ani suka Budi? = suka(ANI, BUDI) 5. Apakah Budi suka Amir? = suka(BUDI, AMIR) 6. Apakah Amir suka Ani? = suka(AMIR, ANI) 7. Apakah Amir suka Budi? = suka(AMIR, BUDI) 8. Apakah Amir suka teh anget? = suka(AMIR, TEH ANGET) c. FOL ke dalam Bahasa prolog 1
suka(ani,soto).
2
suka(budi,'teh anget').
3
suka(budi,ani).
4
suka(ani,amir).
5
suka(amir,soto).
6 7 8 9 10 11
suka(budi,X):suka(ani,X). suka(budi,X):suka(X,'teh anget'); suka(X,soto). tidaksuka(amir,X):suka(X,soto).
12 13
suka(ani,soto).
14
suka(budi,’teh anget’).
15
suka(budi,soto).
16
suka(ani,budi).
17
suka(budi,amir).
18
suka(amir,ani).
19
suka(amir,budi).
20
suka(amir,’teh anget’).
d. Menuliskan hasil dari masing-masing query
2. Knowlede Base untuk lemari novel : a. Menerjemahkan kalimat ke dalam KB FOL TELL(KB,alurbagus('LASKAR PELANGI')) TELL(KB,nasional('LASKAR PELANGI')) TELL(KB,internasional('LASKAR PELANGI')) TELL(KB,bestseller('LASKAR PELANGI')) TELL(KB,negara(INDONESIA,'LASKAR PELANGI')) TELL(KB,penulis('ANDREA HIRATA','LASKAR PELANGI')) TELL(KB,alurbagus(PULANG)) TELL(KB,tidakbestseller(PULANG)) TELL(KB,nasional(PULANG)) TELL(KB,tidakinternasional(PULANG)) TELL(KB,negara(INDONESIA,PULANG)) TELL(KB,penulis('LEILA S. CHUDORI',PULANG)) TELL(KB,penulis('PAULO COELHO',ALCHEMIST)) TELL(KB,negara(BRAZIL,ALCHEMIST)) TELL(KB,alurbagus(ALCHEMIST)) TELL(KB,internasional(ALCHEMIST)) TELL(KB,tidaknasional(ALCHEMIST)) TELL(KB,bestseller(ALCHEMIST)) TELL(KB,lemari(BUDI,x):- negara(INDONESIA,x),bagus(BUDI,x)) TELL(KB,bagus(BUDI,x):- alurbagus(x),bestseller(x)) TELL(KB,lemari(ANI,x):- bestseller(x),nasional(x);internasional(x)) TELL(KB,tidaklemari(BUDI,x):- negara(BRAZIL,x),tidakbestseller(x); negara(INDONESIA,x),tidakbestseller(x)) TELL(KB,tidaklemari(ANI,x):- tidakbestseller(x),tidaknasional(x); tidakinternasional(x))
b. Menerjemahkan query ke dalam FOL Apakah Novel Laskar Pelangi ada di lemari novel Budi? lemari(BUDI,'LASKAR PELANGI') Apakah Novel Alchemist ada di lemari novel Budi? lemari(BUDI,ALCHEMIST) Apakah Novel Pulang ada di lemari novel Budi? lemari(BUDI,PULANG) Apakah Novel Laskar Pelangi ada di lemari novel Ani? lemari(ANI,'LASKAR PELANGI') Apakah Novel Alchemist ada di lemari novel Ani? lemari(ANI,ALCHEMIST) Apakah Novel Pulang ada di lemari novel Ani? lemari(ANI,PULANG) Novel apakah yang ada di lemari novel Budi dan Ani? lemari(BUDI,X),lemari(ANI,X) Novel apakah yang tidak ada di lemari novel Budi maupun Ani? tidaklemari(BUDI,X),tidaklemari(ANI,X) c. Menuliskan FOL ke dalam Bahasa prolog
1
alurbagus('LASKAR PELANGI').
2
alurbagus('PULANG').
3
alurbagus('ALCHEMIST').
4
bestseller('LASKAR PELANGI').
5
bestseller('ALCHEMIST').
6 7 8 9 10 11
tidakbestseller('PULANG'). nasional('PULANG'). nasional('LASKAR PELANGI'). tidaknasional('ALCHEMIST'). internasional('LASKAR PELANGI'). internasional('ALCHEMIST'). tidakinternasional('PULANG').
12
negara('INDONESIA','LASKAR PELANGI').
13
negara('INDONESIA','PULANG').
14
negara('BRAZIL','ALCHEMIST').
15
penulis('ANDREA HIRATA','LASKAR PELANGI').
16
penulis('LEILA S. CHUDORI','PULANG').
17 18 19 20 21
penulis('PAULO COELHO','ALCHEMIST'). bagus(budi,X):alurbagus(X), bestseller(X).
22
lemari(budi,X):-
23
negara('INDONESIA',X),
24 25 26 27 28 29 30 31
bagus(budi,X).
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
lemari(ani,X):bestseller(X), nasional(X); internasional(X). tidaklemari(budi,X):negara('BRAZIL',X), tidakbestseller(X); negara('INDONESIA',X), tidakbestseller(X). tidaklemari(ani,X):tidakbestseller(X), tidaknasional(X); tidakinternasional(X). lemari(budi,'LASKAR PELANGI'). lemari(budi,'ALCHEMIST'). lemari(budi,'PULANG'). lemari(ani,'LASKAR PELANGI'). lemari(ani,'ALCHEMIST'). lemari(ani,'PULANG'). lemari(budi,X),lemari(ani,X).
d. Menuliskan hasil dari masing-masing query
C. KESIMPULAN 1. Apa pengertian dari Logic Programming? Jelaskan.
Logic Programming atau biasa disingkat dengan PROLOG merupakan pemprograman dengan menerapkan algoritma komputasi tersusun atas logika dan kontrol. Dengan menggunakan bahasa deklaratif yang mana fakta dan aturan diberikan dan kemudian diselesaikan oleh relasi-relasi yang terdapat pada PROLOG. 2. Apa perbedaan logic programming dengan First Order Logic?
Logic Programming : merepresentasi pengetahuan berdasarkan Rules. First Order Logic : merepresentasi pengetahuan berdasarkan Logika. 3. Bagaimana struktur pemrograman prolog? Jelaskan
Domains (menyatakan jenis suatu variable). Predicates (digunakan untuk mendeklarasikan predikat, diawali dengan huruf kecil). Clauses (digunakan untuk mendefinisikan predikat yang terdiri dari fakta dan aturan). Goal (tempat pernyataan (query) diberikan atau meminta prolog untuk mencapai tujuan yang dikehendaki).
4. Jelaskan langkah-langkah dalam melakukan logic programming
Pertama, menentukan domainnya, contoh :
orang=symbol
matakuliah=string
nilai=integer Kedua, menentukan predicatesnya, contoh :
kuliah(orang,mk).
nilai(orang,mk,nilai).
lulus(orang,mk). Ketiga, menentukan clausesnya, contoh :
kuliah(adi,"logika").
kuliah(adi,"fisika").
kuliah(budi,"logika").