Anda di halaman 1dari 9

LAPORAN PRAKTIKUM KECERDASAN BUATAN

PERTEMUAN KE-4
UNIFIKASI DAN LACAKBALIK
(UNIFICATION AND BACKTRACKING)

Disusun Oleh :
Nama : MHD Syaiful Adnan
NIM : 125410115

SEKOLAH TINGGI MANAJEMEN DAN INFORMATIKA


AKAKOM YOGYAKARTA
2013
PEMBAHASAN PRAKTIKUM

Contoh1
Input
DOMAINS
judul,pengarang = symbol
halaman = unsigned

PREDICATES
buku(judul, halaman)
nondeterm ditulis_oleh(pengarang, judul)
nondeterm buku_tebal(judul)

CLAUSES
ditulis_oleh(emha, "Markesot Bertutur").
ditulis_oleh(kahill, "Sang Nabi").

buku("Sang Nabi", 132).


buku("Markesot Bertutur", 379).

buku_tebal(Judul):-
ditulis_oleh(_, Judul),
buku(Judul, Tebal),
Tebal > 300.

GOAL
ditulis_oleh(X, Y).

Output

CLAUSES
ditulis_oleh(emha, "Markesot Bertutur").
ditulis_oleh(kahill, "Sang Nabi").

buku("Sang Nabi", 132).


buku("Markesot Bertutur", 379).

buku_tebal(Judul):-
ditulis_oleh(_, Judul),
buku(Judul, Tebal),
Tebal > 300.

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.

M.Syaiful Adnan/125410115/STMIK AKAKOM Yogyakarta Page 2


Contoh2
Input

PREDICATES
nondeterm jenis(symbol, symbol)
nondeterm adalah(symbol, symbol)
hidup (symbol, symbol)
nondeterm dapat_berenang(symbol)

CLAUSES
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).

GOAL
dapat_berenang(Apa).

Output

PREDICATES
nondeterm jenis(symbol, symbol)
nondeterm adalah(symbol, symbol)
hidup (symbol, symbol)
nondeterm dapat_berenang(symbol)

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
jenis(vertebrata,hewan).
jenis(ikan,hewan).

adalah(zebra,vertebrata).
adalah(lele,ikan).
adalah(tuna,ikan).

M.Syaiful Adnan/125410115/STMIK AKAKOM Yogyakarta Page 3


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).

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.

Disini saya akan menguji goal apa yang dapat berenang jawabannya 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.

Contoh3
Input
DOMAINS
nama = symbol

PREDICATES
nondeterm ayah(nama, nama)
setiap_orang

CLAUSES
ayah(sunarto,cici).
ayah(andi,udin).
ayah(roland,yansen).
setiap_orang:-
ayah(X,Y),
write(X," adalah ayah ",Y,"\n"),
fail.
setiap_orang.

GOAL
setiap_orang.

M.Syaiful Adnan/125410115/STMIK AKAKOM Yogyakarta Page 4


Output

CLAUSES
ayah(sunarto,cici).
ayah(andi,udin).
ayah(roland,yansen).
setiap_orang:-
ayah(X,Y),
write(X," adalah ayah ",Y,"\n"),
fail.
setiap_orang.

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 perintahfail. Perintah fail sendiri untuk memaksa
kegagalan sehingga memicu terjadinya lacak balik.

Contoh4
Input
PREDICATES
beli_mobil(symbol,symbol)
nondeterm mobil(symbol,symbol,integer)
warna(symbol,symbol)

CLAUSES
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).

GOAL
beli_mobil(jaguar, Y).

M.Syaiful Adnan/125410115/STMIK AKAKOM Yogyakarta Page 5


Output

CLAUSES
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).

Pada variable mobil dan warna terjadi pendeklarasiandata ke dalam variable. beli_mobil(Model,Warna):-
mobil(Model,Warna,Harga), warna(Warna,seksi),!, Harga < 25000.Merupakan aturan yang ada di dalam
program, menggunakan predikatcut (!), cut sendiri berfungsi untuk tidak akan memungkinkan terjadinya
lacakbalik melewati perintah cut.

Untuk hasil oututnya sendiri Setelah goal di jalankan, maka hasilnya no solution, ini dikarenakan
pendeklarasian pada section goal tidak sesuai dengan data/aturan pada clauses, terjadilah no solution.

Contoh5
Input
DOMAINS
nama = symbol
ipk = real

PREDICATES
nondeterm mahasiswa_teladan(nama)
nondeterm mahasiswa(nama, ipk)
masa_percobaan(nama)

CLAUSES
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").

M.Syaiful Adnan/125410115/STMIK AKAKOM Yogyakarta Page 6


GOAL
mahasiswa_teladan(X).

Output

PREDICATES
nondeterm mahasiswa_teladan(nama)
nondeterm mahasiswa(nama, ipk)
masa_percobaan(nama)

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
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").

Pada section sclauses, 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.

PERTANYAAN/TUGAS
Input

DOMAINS
nama,jender,pekerjaan,benda,alasan,zat = symbol
umur = integer

PREDICATES
nondeterm orang(nama,umur,jender,pekerjaan)

M.Syaiful Adnan/125410115/STMIK AKAKOM Yogyakarta Page 7


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):-

M.Syaiful Adnan/125410115/STMIK AKAKOM Yogyakarta Page 8


motif(uang),
orang(X,_,_,pencopet).

pembunuh(Pembunuh):-
orang(Pembunuh,_,_,_),
terbunuh(Terbunuh),
Terbunuh <> Pembunuh,
dicurigai(Pembunuh),
ternodai(Pembunuh,Zat),
ternodai(Terbunuh,Zat).

GOAL
pembunuh(X).

Output

Langkahnya visual prolog memberikan jawaban terhadap GOAL

dalam kasus ini ditemukan 1 solution yaitu X adalah Budi, disini si Budi ditetapkan sebagai pembunuh
dari si Siti, dalam kasus ini Siti terbunuh dengan cara di Pentung.
dan dalam kasus ini juga siBudi ternodai oleh darah begitu juga siSiti. dalam hal ini cara kerja dari
sesuatua yang dilakukan dengan cara dipentung adalah kaki palsu, dan balok. Nah dalam hal ini bukti
dari kaki palsu adalah miliknya si Budi, sdangkan untuk balok tidak ada.

ini lah yang menyebabkan mengapa siBudi ditetapkan sebgai pembunuh dari siSiti.

KESIMPULAN
Dalam praktikum kali ini saya dapat menyimpulkan dimana unifikasi dan lacakbalik ini kita dapat
melihat atau membaca secara detail apa yang terjadi dalam suatu kasus.

LISTING
Terlampir.

M.Syaiful Adnan/125410115/STMIK AKAKOM Yogyakarta Page 9

Anda mungkin juga menyukai