• Tidak ada hasil yang ditemukan

Laporan Praktikum Kecerdasan Buatan Modul 4

N/A
N/A
Protected

Academic year: 2021

Membagikan "Laporan Praktikum Kecerdasan Buatan Modul 4"

Copied!
12
0
0

Teks penuh

(1)

MODUL 4

UNIFIKASI DAN LACAKBALIK

(UNIFICATION AND BACKTRACKING)

A. MAKSUD DAN TUJUAN

- Mahasiswa Mengerti apa yang dimaksud unifikasi dan proses terjadinya. - Mengerti cara kerja lacak balik dan prinsip-prinsipnya.

- Dapat mengendalikan proses lacak balik menggunakan predikat fail, cut (!) dan not.

B. DASAR TEORI

Unifikasi dan Lacakbalik

- Pada intinya unifikasi adalah proses untuk mencocokkan dua predikat dan memberikan nilai pada variabel yang bebas untuk membuat kedua predikat tersebut identik.

- Visual Prolog menggunakan metode ini untuk menemukan suatu solusi dari permasalahan yang diberikan.Visual Prolog dalam memulai mencari solusi suatu permasalahan (atau goal) harus membuat keputusan di antara kemungkinan-kemungkinan yang ada.

C. PEMBAHASAN

Dalam script program Visual Prolog terdapat beberapa aturan yang harus dipenuhi dalam pembuatan program ini. Pada bagian CLAUSES merupakan bagian yang penting tentang fakta dari program yang akan dijalankan. Untuk section Predicates dan Domains merupakan pendukung bagi section CLAUSES Praktik 1 DOMAINS judul,pengarang = symbol halaman = unsigned PREDICATES buku(judul, halaman)

nondeterm ditulis_oleh(pengarang, judul) nondeterm buku_tebal(judul)

(2)

CLAUSES

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. GOAL buku_tebal(X). Hasil Output : Penjelasan :

pada goal yang akan dipanggil adalah variable buku tebal, dengan isi variable X,Y sebagai variable bebas. Pada saat pemanggilan buku_bebas, buku_bebas berisi variable yang berisi judul, dan pemanggilan tersebut dengan syarat bahwa pada variable penulis berisi judul dan pada variable buku berisi judul dan tebal dan dengan syarat, tebal buku tersebut lebih dari 300 halaman. Praktik 2 PREDICATES nondeterm jenis(symbol,symbol) nondeterm adalah(symbol,symbol) hidup(symbol,symbol) nondeterm dapat_berenang(symbol) CLAUSES jenis(vertebrata,hewan). jenis(ikan,hewan).

(3)

adalah(zebra,vertebtra). 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). Hasil Output : Penjelasan :

pada program tersebut yang akan dipanggil adalah dapat_berenang dan yang akan ditampilkan dipanggil dengan variable bebas yaitu “apa”. Visual prolog kan mencari variable dapat_berenang setelah ditemukan variable tersebut maka visual prolog akan mencari syarat yang akan ditampilkan dari variable tersebut, isi dari variable dapat_berenang adalah variable „Y‟ dan merupakan symbol.

(4)

Praktik 3 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. Penjelasan :

Program diatas, pada goal yang akan dipanggil adalah variable setiap_orang. Maka yang akan ditampilkan adalah variable ayah yang dalam pemanggilannya dig anti dengan variable bebas X dan Y. visual prolog akan mengenali semua isi dari variable ayah yaitu sunarti,cici dan andi,udin dan roland,yansen. Dan dalam menampilkannya X adalah ayah Y. dengan X mewakili sunarto,andi dan roland dan Y mewakili cici,udin dan yansen. Maka yang akan tampil setelah program dijalankan adalah:

(5)

Praktik 4 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). Hasil Output : Penjelasan :

Pada rogram diatas, goal yang dikehendaki adalah beli_mobil(jaguar,Y). visual prolog akan mencari variable beli_mobil dan akan membaca syarat yang dikehendaki. Syarat pertama yaitu mobil meliputi model,warna dan harga maka seluruh isi variable mobil akan dikenali.

(6)

Program 5 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"). GOAL mahasiswa_teladan(X). Hasil Output : Penjelasan :

Pada program diatas, goal yang diinginkan adalah mahasiswa_teladan(X). visual prolog akan mencari variable mahasiswa_teladan dan akan ditemukan variable mahasiswa_teladan dengan isi nama. Dan yang akan ditampilkan mengunakan syarat yaitu pada variable mahasiswa meliputi nama dan ipk, visual prolog akan mengenali semua isi dari variable mahasiswa tersebut.

(7)

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

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

(8)

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 semua orang yang memiliki senjata yang * * kerjanya mirip dengan senjata penyebab siti terbunuh. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

(9)

dicurigai(X):-

terbunuh_dengan(siti,Senjata) , cara_kerja_mirip(Benda,Senjata) , kemungkinan_milik(X,Benda).

/* * * * * * * * * * * * * * * * * * * * * * * * * * * dicurigai laki-laki yang selingkuh dengan siti. * * * * * * * * * * * * * * * * * * * * * * * * * * */ dicurigai(X):- motif(cemburu), orang(X,_,m,_), selingkuh(siti,X). /* * * * * * * * * * * * * * * * * * * * * * * * dicurigai perempuan yang selingkuh dengan * * laki-laki yang juga selingkuh dengan siti * * * * * * * * * * * * * * * * * * * * * * * */ dicurigai(X):- motif(cemburu), orang(X,_,f,_), selingkuh(X,Lakilaki), selingkuh(siti,Lakilaki). /* * * * * * * * * * * * * * * * * * * * * * * * * * * * dicurigai pencopet yang mempunyai motif uang. * * * * * * * * * * * * * * * * * * * * * * * * * * * */

dicurigai(X):- motif(uang),

(10)

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). Hasil output : Penjelasan :

Pertama kali Visual Prolog akan mencari fakta atau head 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 headrulepembunuh, maka terjadi unifikasi antara X dan pembunuh, sehingga

“X= pembunuh”

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

(11)

 Visual Prolog sekarang akan memulai pencarian untuk melakukan pencocokan pemanggil

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

 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” berikutnya.

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.

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

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.

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

(12)

E. KESIMPULAN

Dari pembahasan di atas dapat disimpulkan bahwa dalam membuat suatu program prolog kita sangat butuh sekali apa yang dinamakan dengan prosedure Backtrakking dimana prosedur ini sangat bermanfaat dalam kita membuat program dengan menggunakan visual prolog.

F. LISTING Terlampir

Referensi

Dokumen terkait