Anda di halaman 1dari 7

LAPORAN KECERDASAN BUATAN

PERTEMUAN KE 4

Disusun Oleh :

Nama : Mohamad Hanaf

Nim : 095410134

Jurusan : TEKNIK INFORMATIKA

LABOROTARIUM TERPADU
SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN KOMPUTER
AKAKOM

YOGYAKARTA
2010
UNIFIKASI DAN LACAKBALIK

(UNIFICATION AND BACKTRACKING)

A. PEMBAHASAN
Tujuan untuk memepelajari unifkasi dan lacakbalik mengerti apa yang dimaksud unifkasi 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 unifkasi (unifcation), 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 (back-tracking 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 efsien. 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 mendifnisikan 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
mengidentifkasikan 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 didefnisikan sebagai sebuah object bukan subject yang nilainnya bisa bervariasi,
seperti sebuah karakter(char), angka (integer atau real) atau sebuah atom (symbol atau string).

Anda mungkin juga menyukai

  • Pertemuan Ke 6
    Pertemuan Ke 6
    Dokumen11 halaman
    Pertemuan Ke 6
    Mohamad Hanafi (Mohan)
    Belum ada peringkat
  • Pertemuan Ke 7
    Pertemuan Ke 7
    Dokumen13 halaman
    Pertemuan Ke 7
    Mohamad Hanafi (Mohan)
    Belum ada peringkat
  • Pertemuan Ke 5
    Pertemuan Ke 5
    Dokumen7 halaman
    Pertemuan Ke 5
    Mohamad Hanafi (Mohan)
    Belum ada peringkat
  • Pertemuan Ke 4
    Pertemuan Ke 4
    Dokumen9 halaman
    Pertemuan Ke 4
    Mohamad Hanafi (Mohan)
    Belum ada peringkat
  • Pertemuan Ke 3
    Pertemuan Ke 3
    Dokumen9 halaman
    Pertemuan Ke 3
    Mohamad Hanafi (Mohan)
    Belum ada peringkat
  • Pertemuan Ke 1
    Pertemuan Ke 1
    Dokumen14 halaman
    Pertemuan Ke 1
    Mohamad Hanafi (Mohan)
    Belum ada peringkat
  • Pertemuan Ke-5 Dan Ke-6
    Pertemuan Ke-5 Dan Ke-6
    Dokumen13 halaman
    Pertemuan Ke-5 Dan Ke-6
    Mohamad Hanafi (Mohan)
    Belum ada peringkat
  • Pertemuan Ke 2
    Pertemuan Ke 2
    Dokumen14 halaman
    Pertemuan Ke 2
    Mohamad Hanafi (Mohan)
    Belum ada peringkat
  • Laporan 8
    Laporan 8
    Dokumen9 halaman
    Laporan 8
    Mohamad Hanafi (Mohan)
    Belum ada peringkat
  • Pertemuan Ke 7 Dan 8
    Pertemuan Ke 7 Dan 8
    Dokumen17 halaman
    Pertemuan Ke 7 Dan 8
    Mohamad Hanafi (Mohan)
    Belum ada peringkat