LAPORAN PRAKTIKUM
KECERDASAN BUATAN
MODUL 4
NAMA: TRI WIJAYANTO
NIM: 115410126
JURUSAN: TI/S1
LABORATORIUM TERPADU
SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN KOMPUTER AKAKOM
YOGYAKARATA
2012
PEMBAHASAN PRAKTIKUM MODUL 4
PRAKTIKUM 1
DOMAINS
judul,pengarang = symbol
halaman
= unsigned
Pembahasan : Di dalam section domains terdapat beberapa variable
yaitu; judul, pengarang, dan halaman. Dan dengan tipe data symbol dan unsigned.
PREDICATES
buku(judul, halaman)
nondeterm ditulis_oleh(pengarang, judul)
nondeterm buku_tebal(judul)
Pembahasan : Pada section
predicates, terdapat beberapa pernyataan predikat dan variable variable, yang
berfungsi untuk menjalankan aturan pada section clauses. nondeterm sendiri ialah berfungsi
untuk memberi tahu compiler bahwa predikat tersebut mempunyai lebih dari satu
kemungkinan jawaban (non-deterministik).
CLAUSES à Tempat aturan dan fakta-fakta.
ditulis_oleh(emha, "Markesot
Bertutur").
ditulis_oleh(kahlil, "Sang Nabi").
buku("Sang Nabi", 132).
buku("Markesot Bertutur", 379).
buku_tebal(Judul):-
ditulis_oleh(_, Judul),
buku(Judul, Tebal),
Tebal > 300.
Pembahasan : Di section clauses, baris atas adalah pendeklarasian variable,
dimana pernyataan-pernyataan yang ada di masukkan di dalam variable. buku_tebal(Judul):- ditulis_oleh(_,Judul),
buku(Judul,Tebal), Tebal > 300. Printah tersebut merupakan sebuah aturan
yang terjadi didalam program ini.
GOAL
ditulis_oleh(X,
Y).
Pembahasan : Pada section goal, merupakan perintah untuk mencari
penulis buku.
HASIL
PRAKTIKUM 2
PREDICATES
nondeterm jenis(symbol, symbol)
nondeterm adalah(symbol, symbol)
hidup(symbol, symbol)
nondeterm dapat_berenang(symbol)
Pembahasan : Pada bagian ini, maksud
dari nondeterm pada section predicates yang mendahului predicates jenis, yaitu memiliki
lebih dari satu kemungkinan jawaban yang juga memiliki 2 input masukan bertipe
symbol. Begitu juga dengan predicates , dapat_berenang juga memiliki lebih
dari Tipe data symbol adalah tipe data yang berisi rangkaian
karakter-karakter.
CLAUSES à Tempat aturan dan fakta-fakta.
jenis(vertebrata,hewan).
jenis(ikan,hewan).
adalah(zebra,vertebrata).
adalah(lele,ikan).
adalah(tuna,ikan).
hidup(zebra,di_darat).
hidup(kodok,di_darat).
hidup(kodok,di_air).
hidup(tuna,di_air).
dapat_berenang(Y):-
jenis(X,hewan),
adalah(Y,X),
hidup(Y,di_air).
Pembahasan : Pada bagian kedua ini yaitu section clauses
terdapat 2 predikat jenis yaitu jika diterjemahkan ke dalam bahasa natural
menjadi vertebrata adalah jenis hewan dan ikan adalah jenis hewan. Kemudian
pada baris kedua terdapat 3 predikat adalah yang jika diterjemahkan ke dalam
bahasa natural menjadi zebra adalah vertebrata, lele adalah ikan, tuna adalah
ikan. Selanjutnya pada baris ketiga terdapat 4 predikat hidup yang jika
diterjemahkan ke dalam bahasa natural menjadi zebra hidup di darat, kodok hidup
di darat, kodok hidup di laut, dan tuna hidup di air. Pada akhir baris terdapat
rule dapat berenang yaitu jika diterjemahkan ke dalam bahasa natural menjadiY
dapat berenang jika X adalah jenis hewan, Y adalah X, dan Y hidup di air.
GOAL
dapat_berenang(Apa).
Pembahasan : Pada
bagian yang terakhir yaitu goal, kita akan menguji goal apa yang dapat berenang
jawabnya adalah tuna. Hal ini dapat terjadi karena prolog menguji pada bagian
clauses terlebih dahulu kemudian dilanjutkan ke bagian rule. Pada bagian rule,
rule mencocokan pada clauses yaitu jenis(X,hewan)dengan 2 predikat jenis yang
terdapat pada baris jenis kemudian predikat yang ada pada rule selanjutnya
yaitu adalah(Y,X) dicocokan dengan predikat pada baris adalah dan yang terakhir
adalah predikat hidup(Y,di_air) yang ada pada rule dicocokan pada baris predikat
hidup. Jika semua terpenuhi maka prolog akan memcocokan pada bagian terakhir
yaitu goal yang sesuai dengan rule dan memberikan hasil output.
HASIL
PRAKTIKUM 3
DOMAINS
nama = symbol
Pembahasan : Program ini terdapat section domains. Dengan
variable nama dan tipe data symbol.
PREDICATES
nondeterm ayah(nama, nama)
setiap_orang
Pembahasan : Section predicates menggunakan nondeterm di
variable ayah dengan tipe data (nama, nama). Dan pernyataan variable
setiap_orang. nondeterm pada program diatas
berfungsi untuk memberitahu ke compiler Visual Prolog bahwa predikat tersebut
mempunyai lebih dari satu kemungkinan jawaban.
CLAUSES à Tempat aturan dan fakta-fakta.
ayah(sunarto,cici).
ayah(andi,udin).
ayah(roland,yansen).
setiap_orang:-
ayah(X,Y),
write(X," adalah ayah
",Y,"\n"),
fail.
setiap_orang.
Pembahasan : Pada clauses pendeklarasian pada variable ayah,
memasukan data data sesuai tipe data yang dideklarasikan pada variable ayah. setiap_orang:- ayah(X,Y), write(X," adalah ayah
" ,Y, "\n"), fail. Merupakan aturan yang di akhiri dengan perintah fail.
Perintah fail sendiri untuk
memaksa kegagalan sehingga memicu terjadinya lacak balik.
GOAL
setiap_orang.
Pembahasan
:
HASIL
PRAKTIKUM 4
PREDICATES
beli_mobil(symbol,symbol)
nondeterm mobil(symbol,symbol,integer)
warna(symbol,symbol)
Pembahasan : Pada section predicates, pada variable mobil
menggunakan nondeterm dengan tipe data(symbol, symbol, integer), dan terdapat variable
beli_mobil dan warna dengan tipe data yang sama yaitu (symbol, symbol).
CLAUSES à Tempat aturan dan fakta-fakta.
beli_mobil(Model,Warna):-
mobil(Model,Warna,Harga),
warna(Warna,seksi),!,
Harga < 25000.
mobil(ferrari,hijau,25000).
mobil(jaguar,hitam,24000).
mobil(jaguar,merah,26000).
mobil(porsche,merah,24000).
warna(merah,seksi).
warna(hitam,wibawa).
warna(hijau,sejuk).
Pembahasan : Pada variable mobil dan warna terjadi
pendeklarasian data ke dalam variable. beli_mobil(Model,Warna):-
mobil(Model,Warna,Harga), warna(Warna,seksi),!, Harga < 25000. Merupakan aturan yang ada di dalam program,
menggunakan predikat cut (!), cut sendiri berfungsi
untuk tidak akan memungkinkan terjadinya lacakbalik melewati perintah cut.
GOAL
beli_mobil(jaguar, Y).
Pembahasan : Setelah goal
di jalankan, maka hasilnya no solution, ini dikarenakan pendeklarasian pada
section goal tidak sesuai dengan data/aturan pada clauses, terjadilah no
solution.
HASIL
PRAKTIKUM 5
DOMAINS
nama = symbol
ipk =
real
Pembahasan : Program ini menggunakan section
domains, terdapat variael nama dengan tipe data symbol, dan variable ipk dengan
tipe data real.
PREDICATES
nondeterm mahasiswa_teladan(nama)
nondeterm mahasiswa(nama, ipk)
masa_percobaan(nama)
Pembahasan : Pada section predicates, variable mahasiswa_teladan
dengan tipe data (nama) dan variable mahasiswa dengan tipe data (nama, ipk)
menggunakan nondeterm. Dan terpat juga variable masa_percobaan dengan variable (nama).
CLAUSES à Tempat aturan dan fakta-fakta.
mahasiswa_teladan(Nama):-
mahasiswa(Nama, IPK),
IPK>=3.5,
not(masa_percobaan(Nama)).
mahasiswa("Vina Panduwinata", 3.5).
mahasiswa("Helmi Yahya", 2.0).
mahasiswa("Syahrul Gunawan", 3.7).
masa_percobaan("Vina Panduwinata").
masa_percobaan("Helmi Yahya").
Pembahasan : Pada section clauses, pendeklarasian data pada
variable mahasiswa dan masa_percobaan. mahasiswa_teladan(Nama):-
mahasiswa(Nama, IPK), IPK >= 3.5, not(masa_percobaan(Nama)).
Perintah tersebut adalah
merupakan sebuah aturan pada program tersebut yang natinya akan di jalankan
oleh section goal. Seharusnya jika tidak ada perintah not sistem akan mencetak
Vina Panduimata dan Syahrul Gunawan, karena kedua nama tersebut memiliki nilai
lebih dari sama dengan 3,5. Akan tetapi karena diberikan perintah not pada
variabel masa_percobaan , sedangkan vina panduinata termasuk dalam fakta
tersebut maka prolog hanya mencetak syahrul gunawan saja yang memenuhi syarat.
GOAL
mahasiswa_teladan(X).
Pembahasan : Pada section goal, menampilkan variable
mahasiswa_teladan.
HASIL
TUGAS
DOMAINS
nama,jender,pekerjaan,benda,alasan,zat = symbol
umur = integer
PREDICATES
nondeterm
orang(nama,umur,jender,pekerjaan)
nondeterm
selingkuh(nama,nama)
terbunuh_dengan(nama,benda)
terbunuh(nama)
nondeterm
pembunuh(nama)
motif(alasan)
ternodai(nama,zat)
milik(nama,benda)
nondeterm
cara_kerja_mirip(benda,benda)
nondeterm
kemungkinan_milik(nama,benda)
nondeterm
dicurigai(nama)
ClAUSES
orang(budi,55,m,tukang_kayu).
orang(aldi,25,m,pemain_sepak_bola).
orang(aldi,25,m,tukang_jagal).
orang(joni,25,m,pencopet).
selingkuh(ina,joni).
selingkuh(ina,budi).
selingkuh(siti,joni).
terbunuh_dengan(siti,pentungan).
terbunuh(siti).
motif(uang).
motif(cemburu).
motif(dendam).
ternodai(budi,darah).
ternodai(siti,darah).
ternodai(aldi,lumpur).
ternodai(joni,coklat).
ternodai(ina,coklat).
milik(budi,kaki_palsu).
milik(joni,pistol).
cara_kerja_mirip(kaki_palsu,pentungan).
cara_kerja_mirip(balok,pentungan).
cara_kerja_mirip(gunting,pisau).
cara_kerja_mirip(sepak_bola,pentungan).
kemungkinan_milik(X,sepatu_bola):-
orang(X,_,_,pemain_sepak_bola).
kemungkinan_milik(X,gunting):-
orang(X,_,_,pekerja_salon).
kemungkinan_milik(X,Benda):-
milik(X,Benda).
dicurigai(X):-
terbunuh_dengan(siti,Senjata),
cara_kerja_mirip(Benda,Senjata),
kemungkinan_milik(X,Benda).
dicurigai(X):-
motif(cemburu),
orang(X,_,m,_),
selingkuh(siti,X).
dicurigai(X):-
motif(cemburu),
orang(X,_,f,_),
selingkuh(X,Lakilaki),
selingkuh(siti,Lakilaki).
dicurigai(X):-
motif(uang),
orang(X,_,_,pencopet).
pembunuh(Pembunuh):-
orang(Pembunuh,_,_,_),
terbunuh(Terbunuh),
Terbunuh
<> Pembunuh,
dicurigai(Pembunuh),
ternodai(Pembunuh,Zat),
ternodai(Terbunuh,Zat).
GOAL
pembunuh(X).
Hasil
Penjelasan
Program
Setelah program di jalankan, di awal
program akan melakukan proses dari section clauses, melacak data-data orang
yang telah dideklarasikan pada section clauses, yang dimana terdapat data yang
terlibat dalam kasus pembunuhan tersebut.
Dari fakta yang ada, argument X merupakan
argument Pembunuh. Dari argument pembunuh terdapat beberapa pernyataan
persyaratan dan program akan melakukan unifikasi terhadap pernyataan
tersebut.maka program akan mencari fakta orang yang mengetahui pembunuh dalam
kasus tersebut. Pernyataan pertama yang di dapat adalah budi.
Selanjutnya program mencari pernyataan
terbunuh, maka yang ditemukan faktanya adalah siti. Dan kemudian program
melakukan pencarian pada pernyataan dicurigai(X), dari pernyataan tersebut
dilakukan proses pencarian menggunakan unifikasi terhadap pernyataan syarat-syarat
tersebut. Kemudian program akan mencari senjata yang di pakai untuk membunuh,
dengan melakukan proses di variable terbunuh_dengan. Maka fakta yang diperoleh
ialah terbunuh_dengan(siti, pentungan).
Setelah itu program melakukan proses
pencarian fakta benda yang cara kerjanya seperti senjata, maka diperoleh
cara_kerja_mirip(Benda, Senjata). Kemudian prolog memanggil pernyataan tersebut
untuk mengetahui benda yang cara kerjanya mirip pentungan yang telah di
eksekusi pada langkah sebelumnya. maka fakta yang didapat ialah
cara_kerja_mirip(kaki_palsu, pentungan). Dan setelah itu program akan melakukan
prose fakta dari variable kemungkinan_milik(X, Benda), milik (X, Benda). Dari
pernyataan itu maka program mencari fakta bahwa siapa pemilik kaki palsu, dan hasilnya milik(budi, kaki_palsu). Jadi
kaki_palsu itu miliknya Budi.
Kemudian program menjalankan
proses pernyataan dari pembunuh karena masih terdapat pernyataan yang belum dip
roses, yaitu pada variable ternodai(Pembunuh, Zat). Maka dijalankanlah proses
ke dalam pernyataan tersebut, yang menyangkut nama/kata budi, maka hasilnya
didapat ternodai(budi, darah).
Selanjuntya program melakukan proses terakhir
yaitu pada ternodai(Terbunuh, Zat). Maka akan di dapat hasil ternodai(siti,
darah). Dan kesimpulan dari pernyataan-pernyataan dan fakta-fakta yang telah
ada, maka siti memiliki noda sama persis dengan budi. Berdasarkan kesamaan
fakta-fakta tersebut, goal menampilkan bahwa budilah yang membunuh siti.
LISTING
TERLAMPIR
Terimakasih membantu sekali, tugasnya
BalasHapusuntuk software nya menggunakan apa ya?
BalasHapus