LAPORAN PRAKTIKUM KECERDASAN BUATAN UNIFIKASI DAN LACAK BALIK

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:

    Blogger Comment
    Facebook Comment

0 komentar:

Post a Comment

Thanks For Your Feedback.