You are on page 1of 10

LAPORAN KECERDASAN BUATAN PERTEMUAN KE 4

Disusun Oleh : Nama Nim Jurusan : Mohamad Hanafi : 095410134 : TEKNIK INFORMATIKA

LABOROTARIUM TERPADU
SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN KOMPUTER

AKAKOM YOGYAKARTA
2010

UNIFIKASI DAN LACAKBALIK (UNIFICATION AND BACKTRACKING) A. PEMBAHASAN Tujuan untuk memepelajari unifikasi dan lacakbalik mengerti apa yang dimaksud unifikasi dan proses terjadinya, mengerti cara kerja lacak balik dan prinsip-prinsipnya, dan dapat mengendalikan proses lacak balik menggunakan predikat fail, cut (!) dan not. Unifikasi Dan Lacakbalik tebagi menjadi 4 macam : 1. Unifikasi (Unification) Pada waktu Visual Prolog mencoba untuk mencocokkan suatu panggilan (dari sebuah subgoal) ke klausa (pada section clauses), maka proses tersebut melibatkan suatu prosedur yang dikenal dengan unifikasi (unification), yang mana berusaha untuk mencocokkan antara struktur data yang ada di panggilan (subgoal) dengan klausa yang diberikan. Dalam praktikum yang pertama dijelaskan sebagai berikut:

DOMAINS judul,pengarang = symbol halaman = unsigned

program menjelaskan untuk memberi tipe data yang sesuai untuk diisi dan kemudian program diteruskan selanjutnya.

PREDICATES buku(judul, halaman) nondeterm ditulis_oleh(pengarang, judul) nondeterm buku_tebal(judul) program memberi instruksi untuk dijalankan kedalam program CLAUSES yang mana dalam progam PREDICATES diberi simbol untuk menjalankan program selanjutnya.

CLAUSES ditulis_oleh(indra_yatini_buryadi, "Algoritma pemrograman dengan C++"). ditulis_oleh(sari_iswanti, "Sistem pakar").

buku("Algoritma pemrograman dengan C++", 450). buku("Sistem pakar", 299). Disinilah terdapat fakta dari kasus program tersebut yang mana pada hasil GOAL yang akan mengeksekusi atau membaca dari fakta-fakta yang ada.

buku_tebal(Judul):ditulis_oleh(_, Judul), buku(Judul, Tebal), Tebal > 300. Terdapat pertanyaan siapa yang menulis buku judulnya apa fungsinya apabila GOAL dieksekusi akan membaca dari program ini siapa yang menulis buku dan pada program diatas membacanya dari program CLAUSES disitulah fungsi program CLAUSES diisi sesuai dengan tipe data diatas (pada program PREDICATES).

GOAL buku_tebal(M). Apabila dalam GOAL diberi huruf selain M maka program tersebut juga bisa membacanya fungsi dari karakter yang akan dipanggil mencocokkan Argumen-argumen yang ditemukan pada masing-masing klausa ditulis_oleh, maka karakter tersebut akan mencari dari yang palng atas hingga ke paling bawah dari program. Hasil outputnya ;

Jika pada GOALnya karakternya diganti dengan huruf lain sebagai berikut : GOAL buku_tebal(Q). Hasil outputnya :

Dan apabila buku yang kedua diganti lebih besar yang ditanyakan maka hasil runningnya ada 2 solution dan buku yang diganti buku("Sistem pakar", 800). Maka hasil outputnya sebagai berikut :

2. Lacakbalik (Backtracking) Lacak waktu penyelesaian masalah, seringkali, seseorang harus menulusuri suatu jalur untuk mendapatkan konklusi yang logis. Jika konklusi ini tidak memberikan jawaban yang dicari, orang tersebut harus memilih jalur yang lain. Visual Prolog akan lacakbalik ke titik lacak balik (backtracking point) terakhir dan mencoba alternatif subgoal yang lain. Contoh dalam Praktikum ke-2 sebagai berikut :

PREDICATES nondeterm jenis(symbol, symbol) nondeterm adalah(symbol, symbol) hidup(symbol, symbol) nondeterm dapat_berenang(symbol) program memberi instruksi untuk dijalankan kedalam program CLAUSES yang mana dalam progam PREDICATES diberi tipe data untuk membaca program yang akan diisi pada CLAUSES

CLAUSES jenis(vertebrata, hewan). jenis(ikan,hewan).

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

hidup(zebra, di_darat). hidup(kodok, di_darat). hidup(kodok, di_air). hidup(tuna, di_air). Fakta diatas menerangkan tentang binatang yang hidupnya ditanah dan hidupnya di air untuk dipanggil dalam program GOAL

dapat_berenang(Y):jenis(X,hewan), adalah(Y,X), hidup(Y, di_air). Terdapat sebuah pertanyaan dari fakta program apakah benar pernyataan yang dibuat tersebut sama dengan programnya.

GOAL dapat_berenang(Apa). Hasil outputnya :

3. Pengendalian proses lacakbalik Mekanisme lacak balik dapat menghasilkan pencarian yang tidak perlu, akibatnya program tidak efisien. Misalnya adanya beberapa jawaban yang muncul ketika kita hanya membutuhkan solusi tunggal dari masalah yang diberikan. Pada kasus lain, suatu kebutuhan untuk memasaksa Viual Prolog untuk melanjutkan mencari jawaban tambahan walaupun goal tersebut

sudah terpenuhi. Untuk kasus-kasus tersebut, kita hatrus mengontrol proses lacakbalik. Visual Prolog menyediakan 2 alat yang memeperbolehkan kita untuk mengendalikan mekanisme lacak balik yaitu predikat fall yang digunakan untuk memaksa lacakbalik dan predikat cut (ditandai dengan !) yang digunakn untuk mencegah lacak balik.

Predikat fall Visual Prolog akan memulai lacakbalik jika ada panggilan yang gagal. Pada situasi tertentu, ada kebutuhan untuk memasaksa lacakbalik dalam rangka mencari alternatif solusi. Visual Prolog menyediakan predikat khusus fail untuk memaksa kegagalan sehingga memicu terjadinya lacak balik. Efek dari fail sama dengan efek memberikan perbandingan 2=3 atau subgoal yang tidak mungkin (impossible) lainnya. Contoh berikut ini mengilustrasikan penggunaan predikat tesebut . Praktikum ke 3 adalah sebagai berikut :

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, "\n" , " adalah ayah ",Y,"\n"), fail. setiap_orang.

GOAL setiap_orang. 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 prediakat setiap_orang seperti pada contoh program diatas untuk memaksa lacakbalik dan dengan demikian semua jawaban yang mungkin. Hasil outputnya :

Predikat Cut(!) Visual Prolog memiliki cut yang digunakan untuk mencegah lacakbalik, ditulis berupa sebuah tanda seru (!). efek dari cut adalah sederhana, yaitu tidak akan memungkunkan terjadinya lacakbalik melewati sebuah cut. Kita menempatkan cut dalam program sama persis seperti menempatkan sebuah subgoal padabody dari suatu rule. Ketika proses melewati cut, pemanggil ke cut dinyatakan skses dan subgoal berikutnya (jika ada) dipanggil. Sekali sebuah cut dilewati, adalah menjadi tidak mungkin untuk melakukan lacakbalik pada subgoal yang berada pada sebelum cut pada klausa yang sedang diproses dan adalah menjadi tidak mungkin untuk melakukan lacakbalik ke predikat lain yang mendifinisikan predikat yang sekarang diproses (predikat yang mengandung cut ). Praktikum ke-4 :

PREDICATES beli_mobil(symbol,symbol) nondeterm mobil(symbol,symbol,integer) warna(symbol,symbol) mendeklarasikan pada tipe data yang berada pada program yang akan dieksekusi

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). Fakta diatas menuliskan untuk pemanggilan pada program terakhir yang mana pada fakta terbebut benar-benar terjadi atau ada pada program yang telah diinputkan tersebut.

GOAL beli_mobil(jaguar, Y). Hasil outputnya :

Kenapa pada hasil outputnya NO Solution karena pada fakta diatas tidak ada sebab itu program tidak mengenal padanprogram GOAL tersebut

4. Predikat Not Program berikut memperlihatkan bagaimana penggunaan predikat not untuk mengidentifikasikan seorang mahasiswa teladan yaitu mahasiswa yang mempunyai indeks Prestasi Komulatif (IPK) minimal 3,5 dan tidak sedang dalam masa percobaan (sedang menjalani masa hukuman karena melakukan tindak kejahatan). Pada pelaksanaan Praktikum ke-5 :

DOMAINS nama = symbol ipk = real pada program tersebut dideklarasikan tipe data sesuai dengan tipe data program yang akan dibuat.

PREDICATES nondeterm mahasiswa_teladan(nama) nondeterm mahasiswa(nama, ipk) masa_percobaan(nama) disinipun sama programnya dideklarasikan tipe datanya tapi bedanya disini untuk diinputkan pada Progam Clauses dan CLAUSES tersebut membaca pada kedua program yaitu pada DOMAINS dan pada PREDICATES.

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:

Ada satu catatan ketika menggunakan not yaitu predikat not akan sukses ketika subgoal tudak bisa dibuktikan kebenarannya. Hal ini untuk mencegah suatu situasi variabel yang belum diikat akan menggunakan not. Jika subgoal dengan variabel bebas dipanggil melalui not, maka Visual Prolog akan mengeluarkan pesan kesalahan.

B. KESIMPULAN Apapun yang didefinisikan sebagai sebuah object bukan subject yang nilainnya bisa bervariasi, seperti sebuah karakter(char), angka (integer atau real) atau sebuah atom (symbol atau string).

You might also like