PERTEMUAN KE-4
UNIFIKASI DAN LACAKBALIK
(UNIFICATION AND BACKTRACKING)
Disusun Oleh :
Nama : MHD Syaiful Adnan
NIM : 125410115
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_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_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.
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).
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.
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).
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)).
masa_percobaan("Vina Panduwinata").
masa_percobaan("Helmi Yahya").
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)).
masa_percobaan("Vina Panduwinata").
masa_percobaan("Helmi Yahya").
PERTANYAAN/TUGAS
Input
DOMAINS
nama,jender,pekerjaan,benda,alasan,zat = symbol
umur = integer
PREDICATES
nondeterm orang(nama,umur,jender,pekerjaan)
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):-
pembunuh(Pembunuh):-
orang(Pembunuh,_,_,_),
terbunuh(Terbunuh),
Terbunuh <> Pembunuh,
dicurigai(Pembunuh),
ternodai(Pembunuh,Zat),
ternodai(Terbunuh,Zat).
GOAL
pembunuh(X).
Output
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.