26
|
LAPORAN PRAKTIKUM
KECERDASAN
BUATAN
UNIFIKASI
DAN LACAK BALIK
(UNIFICATION
AND BACKTRACKING)
Disusun
Oleh :
HERI PURNAMA
125410101
TI 04
UPT LABORATORIUM
Sekolah Tinggi Manajemen Informatika dan Komputer
AKAKOM
Yogyakarta
2013
DARTAR ISI
Judul.……………………………………………………………………………………….. 01
Daftar
isi..………………………………………………………………………………… 02
Bab 1 : Pendahuluan…………………………………………………………....... 03
A.Tujuan…………………………………………………………………………….. 03
B.Dasar Teori……………………………………………………………………….. 03
Bab 2 : Hasil Praktikum………………………………………………….………… 04
Bab 3 : Analisa Hasil Praktikum……………………………………………….. 05
A.Praktikum
1……………………….……………………………………………….……… 04
B.Praktikum
2……………………………..…………………………………………………
04
C.Praktikum 3……………………..……………………………………………………….. 06
D.Praktikum
4………………………………………….……………………………………. 07
E.Praktikum
5…………………………………………….………………………………….. 08
Bab 4 : Kesimpulan………………………………………………………………… 10
Bab 5 : Tugas………………………………………………………………………….. 11
Bab 1
Pendahuluan
A.Tujuan
Mahasiswa mampu :
1.
Mengerti
apa yang dimaksud unifikasi dan proses terjadinya.
2.
Mengerti cara kerja lacak balik dan
prinsip-prinsipnya.
3.
Dapat mengendalikan proses lacak balik
menggunakan predikat fail, cut (!) dan not.
B.DASAR TEORI
Unifikasi dan lacakbalik
1.
Unifikasi (unification)
Pada waktu Visual prolog mencoba untuk mencocokan
suatu panggilan (dari sebuah subgoal) ke klausa (pada section clauses), maka
proses tersebut melibatkan suatu prosedur yang dikenal dengan unifikasi, yang
mana berusaha untuk mencocokan antara struktur data yang ada di panggilan
(subgoal) dengan klausa yang diberikan. Unifikasi pada prolog
mengimplementasikan beberapa prosedur yang juga dilakukan oleh beberapa bahasa
tradisional seperti melewatkan parameter, menyeleksi tipe data, membangun
struktur, mengakses struktur dan pemberian nilai (assignment). Pada intinya
unifikasi adalah proses untuk mencocokan
dua predikat dan memberikan nilai pada variabel yang bebas untuk mebuat
kedua predikat tersebut identik.
2.
LacakBalik (Backtracking)
Pada waktu menyelesaikan masalah,
seringkali, seseorang harus menelusuri suatu jalur untuk mendapatkan konklusi
yang logis. Jika konklusi ini tidak memberikan jawaban yang dicari, orang
tersebut harus memilih jalur yang lain.
3.
Pengendalian Proses LacakBalik
Mekanisme lacak balik dapat
menghasilkan pencarian yang tidak perlu,akibatnya program menjad tidak
effisien.misalnya adanya beberapa jawaban yang muncul ketika kita hanya butuh solusi tunggal dari
masalah yang diberikan pada Visual Prolog menyediakan 2 alat yang
memperbolehkan kita untuk mengendalikan mekanisme lacak balik yaitui:
·
Predikat fail
Yang digunakan untuk memaksa kegagalan sehingga memicu
adanya lacak balik.Efek dari fail adalah sama dengan 2=3 atau subgoal yang
tidak mungkin lainnya.
·
Predikat cut (ditandai
dengan !)
Yang
digunakan untuk mecegah lacak balik,ditulis berupa sebuah tanda seru(!).Efek
dari sebuah cut adalah tidak akan memungkinkan terjadinya lacak balik melewati
sebuah cut.
Bab 3
Analisa Hasil Praktikum
A).Praktikum 01
·
Listing
DOMAINS
judul,pengarang = symbol
halaman = unsigned
Ø
Pada bagian sesi Domain ini digunakan untuk mendeklarasiakan tipe data yang
digunakan.Pada bagian ini digunakan untuk mendelarasikan untuk variable judul
dan penggarang dengan tipe symbol,tipe ini sama halnya dengan fungsi string
yakni rangkaian karakter.Sedangkan variable halaman dengan tipe
unsigned,unsigned adalah banyaknya kuantitas
yang mempunyai ukuran untuk arsitektur platform untuk sebuah pertanyaan.
PREDICATES
buku(judul, halaman)
nondeterm ditulis_oleh(pengarang, judul)
nondeterm buku_tebal(judul)
Ø Pada
sesi predikat ini mendeklarasiakan 3 nama predikat yang digunakan yakni
·
Nama predikat buku dengan argument
pertama yaitu judul dan argument kedua adalah halaman.
·
Nama predikat ditulis_tebal dengan
argument judul
·
Nama predikat buku_tebal dengan
argument judul
Kata nondeterm digunakan untuk memberitahu visual prolog
bahwa predikat tersebut mempunyai lebih dari satu kemungkinan jawaban.
CLAUSES
Ø Pada
sesi klause ini diberikan fakta atau aturan yang ada dalam program aturan.
ditulis_oleh(emha,"Markesot
Bertutur").
ditulis_oleh(kahlil,"Sang Nabi").
Ø Pada baris-baris
ini berisi fakta yakni markesot Bertutur ditulis oleh emha dan ditulis sana
nabi dituli oleh kahlil.
buku("Sang Nabi",132).
buku("Markesot Bertutur", 379).
Ø Pada
barisan baris kedua ini berisi fakta yakni sang nabi buku berisi 132 halaman
dan markesot bertutur buku mempunyai 379 halaman.
buku_tebal(Judul):-
ditulis_oleh(_,Judul),
buku(Judul,Tebal),
Tebal > 300.
Ø Pada sesi klause yang ini berisi tentang
fakta yakni dapat dibaca “Jika judul ditulis oleh anonym dan judul buku tebal
dan tebal lebih besar dari pada 300 maka judul sama dengan buku tebal”.
GOAL
Ø Ini adalah
body dari sebuah aturan yaitu sederetan sub-sub goal.
ditulis_oleh(X,Y).
Ø goal
yang dituliskan adalah ‘X ditulis oleh Y’.
·
Running
Ø
Dan
dari hasil goal diatas terlihat tampilan seperti diatas bahwa yang
memenuhi aturan yang dideklarsikan pada
clauses adalah penulis emha dengan judul buku markesot bertutur dan penulis
kahil dengan judul buku sang nabi.
B).Praktikum 02
·
Listing
DOMAINS
judul,pengarang = symbol
halaman = unsigned
Ø
Pada sesi domain ini
mendeklarasiakan bahwa nama predikat judul dan pengarang dengan tipe data
symbol.Dan nama predikat halaman dengan tipe datanya unsigned.
PREDICATES
buku(judul,halaman)
nondeterm ditulis_oleh(pengarang,judul)
nondeterm buku_tebal(judul)
Ø
Pada sesi predikat ini ditentukan : nama predikat
buku dengan argumen 1 adalah judul dan argument 2 adalah halaman.
Ø
Nama predikat kedua adalah ditulis_oleh dengan
argumen 1 penggarang dan argument 2 adalah judul.
Ø
Nama predikat ketiga adalah buku_tebal dengan
argumen judul.
CLAUSES
Ø Pada sesi ini berisi fakta-fakta dan aturan yakni:
ditulis_oleh(emha,"Markesot
Bertutur").
ditulis_oleh(kahlil,"Sang Nabi").
Ø fakta
pertama adalah markesot bertutur ditulis emha dan sang nabi ditulis oleh
kahlil.
buku("Sang Nabi",132).
buku("Markesot Bertutur",379).
Ø Fakta
kedua adalah 132 halaman buku adalah sang nabi dan 379 halaman adalah buku
markesot bertutur.
buku_tebal(Judul):-
ditulis_oleh(_,Judul),
buku(Judul,Tebal),
Tebal > 300.
Ø Baris ini
adalah baris sebuah aturan yang mana aturanya adalah jika judul ditulis oleh
anonym dan tebal buku adalah judul dan tebal buku lebih dari 300 maka judul
adalah buku tebal.
GOAL
buku_tebal(X).
Ø Goal
adalah body dari sebuah aturan yakni pada sesi ini ingin mencari X adalah buku
tebal.
·
Running
·
Dari
goal yang dituliskan diatas dapat ditemukan adalah buku tebal adalah Markesot
bertutur ini karena dari aturan atruan yang ada markesot bertutur adalah yang paling memenuhi syarat.
C).Praktikum 03
·
Listing
DOMAINS
nama = symbol
Ø Pada
bagian klause ini nama predikat nama dideklarisikan dengan tipe data symbol
PREDICATES
nondeterm ayah(nama,nama)
setiap_orang
Ø
Pada sesi predikat ini diklarasikan adalah
nama predikat ayah mempunyai argument nama dan nama dan nama predikat
stiap_orang tidak mempunyai argument
Ø Kata
nondeterm diatas digunakan untuk member tahu visual prolog bahwa mempunyai
nilai lebih dari satu.
CLAUSES
Ø
Pada sesi klause ini berisi fakta dan
aturan-aturan.
ayah(sunarto,cici).
ayah(andi,udin).
ayah(roland,yansen).
Ø Pada baris
sesi klause ini ada beberapa fakta yang disertakan yang pertama adalah sunarto
adalah ayah cici fakta kedua adalah andi ayah udin dan fakta ketiga adalah
roland adalah ayah yansen.
setiap_orang:-
ayah(X,Y),
write(X," adalah ayah ",Y,"\n"),
fail.
setiap_orang.
Ø Pada baris
ini berisi aturan yang mana aturanya adalah jika X adalah Y dan X write Y dan
fail maka setiap_orang.
GOAL
Ø Sesi ini
adalah body dari sebuah aturan dengan goal nya adalah setiap_orang
setiap_orang.
·
Running
Ø Kenapa
goalnya bias seperti itu adalah Ketika goal internal sudah sukses, tidak ada
yang memberitahu Visual Prolog untuk melakukan lacakbalik. Akibatnya,
pemanggilan internal ayah hanya akan menghasilkan solusi tunggal.
Sehingga digunakan fail pada predikat setiap_orang
seperti pada contoh program di atas untuk memaksa lacakbalik dan dengan
demikian menemukan semua jawaban yang mungkin.
D).Praktikum 04
·
Listing
PREDICATES
beli_mobil(symbol,symbol)
nondeterm mobil(symbol,symbol,integer)
warna(symbol,symbol)
Ø Didalam
predikat ini ada beberapa nama predikat yang dituliskan yaitu untuk nama
predikat beli_mobil mempunyai 2 argumen dan datanya adalah symbol dan untuk
yang kedua adalah nama predikat mobil mempunyai 3 argumen dan kesemuanya
mempunyai tipe data symbol dan predikat yang terakhir mempunyai nama warna
dengan 2 argumen dengan tipe datanya symbol.
CLAUSES
Ø
Pada sesi ini berisi fakta dan aturan-aturan
yang ada:
beli_mobil(Model,Warna):-
mobil(Model,Warna,Harga),
warna(Warna,seksi),!,
Harga < 25000.
Ø Baris ini adalah aturan yang diberikan yang dapat
didefinisikan bahwa jika model mobil warna dan harga dan warna warna seksi dan
harga lebih besar dari 25000 maka model beli_mobil warna.
mobil(ferrari,hijau,25000).
mobil(jaguar,hitam,24000).
mobil(jaguar,merah,26000).
mobil(porsche,merah,24000).
Ø Pada baris
baris ini berisi fakta-fakta yang ada yang mana dapat didefinisikan pada fakta
pertama adalah :
·
Ferrari adalah mobil hijau dengan harga 25000
·
Jaguar adalah mobil hitam dengan harga 24000
·
Jaguar adalah mobil merah dengan harga 26000
·
Porsche adalah mobil merah dengan harga 24000
warna(merah,seksi).
warna(hitam,wibawa).
warna(hijau,sejuk).
Ø Pada baris
yang ini berisi juga fakta,fakta pertama adalah:
·
Merah adalah warna yang seksi
·
Hitam adalah warna yang wibawa
·
Hijau adalah warna yang sejuk
GOAL
Ø
Sesi ini berisi body dari sebuah atuaran atau
sub goal-goal.
beli_mobil(jaguar, Y).
Ø
Diatas adalah goal yang diberikan pada visual
prolog,dan goal diatas dapat dibaca jaguar dapat beli_mobil Y.
·
Running
Ø Kenapa
hail dari goal seperti itu adalah karena mencari mobil Jaguar yang
mempunyai warna seksi dengan harga yang tidak terlalu mahal. Cut yang
ada pada rule beli_mobil mempunyai asumsi bahwa hanya satu Jaguar
yang mempunyai warna seksi yang ada di database dan jika harganya terlalu
tinggi maka tidak perlu mencari mobil yang lain.Maka hasilnya dapat seperti
itu.
E).Praktikum 05
·
Listing
DOMAINS
nama = symbol
ipk =
real
Ø Pada sesi
ini digunakan untuk mendeklarasikan nama predikat dengan tipe datanya.untuk
argumen nama dengan tipe data symbol dan argumen ipk dengan tipe data real.
PREDICATES
nondeterm mahasiswa_teladan(nama)
nondeterm mahasiswa(nama, ipk)
masa_percobaan(nama)
Ø Pada sesi ini ada asumsinya adalah bahwa nama predikat
mahasiswa_teladan mempunyai argument nama dan nama predikat mahasiswa mempunyai
2 argumen yaitu nama dan ipk sedangkan nama predikat mas_percobaan mempunyai
argument nama.
CLAUSES
Ø
Pada sesi ini berisi fakta dan aturan aturan
yang ada:
mahasiswa_teladan(Nama):-
mahasiswa(Nama, IPK),
IPK>=3.5,
not(masa_percobaan(Nama)).
Ø Baris ini
adalah aturan yang ditetapkan dalam program dan dapat didefinisikan bahwa jika
Nama adalah mahasiswa dan ipk lebih besar sama dengan 3.5 dan nama adalah buakan
masa_percobaan maka nama adalah mahasiswa_teladan
mahasiswa("Vina Panduwinata", 3.5).
mahasiswa("Helmi Yahya", 2.0).
mahasiswa("Syahrul Gunawan", 3.7).
Ø Baris ini
adalah baris fakta-fakta yang ada yang mana faktanya adalah vina panduwinata
adalah mahasiswa dengan ipk 3.5 ,helmi yahya adalah mahasiswa dengan ipk 2.0
dan syachrul gunawan adalah mahasiswa dengan ipk 3.7 .
masa_percobaan("Vina Panduwinata").
masa_percobaan("Helmi Yahya").
Ø Pada baris
ini terdapat berbagai fakta yang ada yaitu vina panduwinata dalam
masa_percobaan dan helmi yahya dalam masa_percobaan.
GOAL
Ø
Sesi ini adalah body dari aturan-aturan yang
ada.
mahasiswa_teladan(X).
Ø
Diatas adalah goal yang ditetapkan yang mana
dapat diartikan bahwa X adalah mahasiswa_teladan.
·
Running
Ø
Diatas adalah hasil dari goal yang telah ditetapkan dan ada satu catatan ketika menggunakan not
yaitu predikat not akan sukses ketika subgoal tidak bisa
dibuktikan kebenarannya. Hal ini untuk mencegah suatu situasi variabel yang
belum diikat akan diikat menggunakan not. Jika
subgoal dengan variabel bebas dipanggil melalui not, maka Visual
Prolog akan mengeluarakan pesan kesalahan Free variables not allowed in ‘not’ or ‘retractall’.
Bab 4
Kesimpulan
Dari Program yang dijalan dalam Visual Prolog diatas saya dapat
menggambil kesimpulan bahwa:
1.
Pada Unifikasi
Unifikasi itu adalah proses
untuk mencocokkan dua predikat dan memberikan nilai pada variabel yang bebas
untuk membuat kedua predikat tersebut identik. Mekanisme ini diperlukan agar
Prolog dapat mengidentifikasi klausa-klausa mana yang dipanggil dan mengikat (bind)
nilai klausa tersebut ke variabel.
2.
Lacak balik
Visual Prolog menggunakan metode ini untuk
menemukan suatu solusi dari permasalahan yang diberikan
3.
Predikat fail
Predikat ini digunakan untuk memaksa kegagalan sehingga memicu
terjadinya lacakbalik
4.
Predikat cut
Predikat ini digunakan
untuk mencegah lacakbalik.
5.
Predikat not
Pada predikat not akan sukses ketika
subgoal tidak bisa dibuktikan kebenarannya
Bab 5
TUGAS
1). Menerangkan langkah demi langkah
bagaimana visual prolog meberikan jawaban
LISTING PROGRAM
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)
motif(alasan)
ternodai(nama,zat)
milik(nama,benda)
nondeterm
cara_kerja_mirip(benda,benda)
nondeterm
kemungkinan_milik(nama,benda)
nondeterm
dicurigai(nama)
nondeterm
pembunuh(nama)
/*Fakta-fakta
tentang pembunuhan*/
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).
/*Basis
pengetahuan*/
cara_kerja_mirip(kaki_palsu,pentungan).
cara_kerja_mirip(balok,pentungan).
cara_kerja_mirip(gunting,pisau).
cara_kerja_mirip(sepatu_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,/*Bukan bunuh diri*/
dicurigai(Pembunuh),
ternodai(Pembunuh,Zat),
ternodai(Terbunuh,Zat).
GOAL
pembunuh(X).
|
Langkah-langkahnya adalah:
1.
Pertama kali Visual Prolog akan mencari
fakta dari rule yang cocok dengan goal, maka ditemukan “pembunuh(Pembunuh).”.Kemudian
mencari pada klausa tersebut untuk mengunifikasi argumennya. Karena X variabel bebas, maka X dapat diunifikasikan ke variabel
manapun. Pembunuh juga merupakan variabel bebas dari headrule pembunuh, maka terjadi unifikasi antara X dan pembunuh, sehingga
“X= pembunuh”
2. Goal yang cocok
dengan head dari rule dan unifikasi membuat Visual Prolog melanjutkan
pengujian pada bagian body dari rule. Untuk menguji body dari rule,
maka akan dipanggil subgoal yang pertama dari body tersebut, yaitu
orang ”(pembunuh,_,_,_)”variable
anonim (“_”) muncul di posisi argumen “usia,jender,pekerjaan.” . Prolog
kemudian akan mencari kecocokan dari subgoal ini mulai dari bagian atas program
hingga ke bagian bawah, Sehingga variabel pelaku akan diikat ke nilai budi dan
subgoal berikutnya akan dipanggil, yaitu “terbunuh(Terbunuh).”
3. Visual
Prolog sekarang akan memulai pencarian untuk melakukan pencocokan pemanggil terbunuh . Karena terbunuh telah diikat
dengan nilai budi, maka pemanggilan
yang sebenarnya adalah terbunuh(siti).Jadi terbunuh bernilai siti. Sekali lagi Visual Prolog akan mencari dari atas sampai ke
bawah dari program.
4. Visual
Prolog akan mencoba ke subgoal selanjutnya yaitu dicurigai(terbunuh).Selanjutnya
Akan melakukan pemanggil dicurigai(X).Karena
pembunuh telah diikat dengan nilai budi,
klausa cocok dengan dengan subgoal yang memanggil, kemudian Visual Prolog akan
mengikat variabel budi. Selanjutnya
Visual Prolog akan memanggil subgoal pada
“dicurigai semua orang yang
memiliki senjata yang kerjanya mirip dengan senjata penyebab siti terbunuh” .
5. Subgoal
selanjutnya “terbunuh_dengan(siti,Senjata)”.Visual
prolog melakukan pemanggilan “terbunuh_dengan (siti,Senjata).”Kemudian
Visual prolog mengikat alat yaitu bernilai rayuan. Visual prolog memanggil
subgoal berikutnya.
6. Subgoal
selanjutnya “cara_kerja_mirip(Benda,Senjata),”karena
senjata bernilai kerja maka pemanggilan “cara_kerja_mirip
(gunting,pisau)Gagal.”Terdapat beberapa kemungkinan yaitu, cara_kerja_mirip
(sepatu_bola,pentungan). “Cara_kerja_mirip(kaki_palsu,pentungan).Cara_kerja_mirip(balok,pentungan)”.
7. Visual
prolog mencoba ke subgoal selanjutnya, yaitu “kemungkinan_milik(X,Benda)”.Kemudian melakukan pemanggilan pada “kemungkinan_milik (X,sepatu_bola)”,kemungkinan_milik(X,gunting)Tetapi gagal. Lalu
pemanggilan pada “kemungkinan_milik (X,Benda).”
karena X bernilai budi dan benda bernilai pentungan maka visual prolog ke subgoal
selanjutnya yaitu milik(X,Benda).
Visual prolog melakukan pemanggilan “milik
(budi,kaki_palsu)”. Visual prolog akan memanggil subgoal berikutnya.
8. Subgoal
selanjutnya dari body rule ternodai(Pembunuh,Zat).Visual Prolog
melakukan akan memulai pencarian untuk melakukan pencocokan pemanggil ternodai. Karena pembunuh telah diikat dengan nilai budi dan Zat menyatakan darah maka pemanggilan yang sebenarnya
adalah ternodai(budi, darah).Visual
Prolog akan memanggil subgoal berikutnya.
9. Visual
Prolog ke subgoal selanjutnya yaitu ternodai(Terbunuh,Zat).Karena pembunuh telah diikat dengan nilai budi dan terbunuh telah diikat dengan nilai siti dan zat bernilai darah maka pembunuhnya adalah budi
ketika rule sukses dijalankan,
10. maka
Visual Prolog akan menampilkan:
0 komentar:
Post a Comment
Thanks For Your Feedback.