Minggu, 14 Oktober 2012

VISUAL PROLOG

Pengertian Prolog
Prolog menggunakan teknik pencarian yang disebut heuristik (heuristic) dengan menggunakan pohon logika. prolog banyak dikembangkan di University of Melbourne oleh Lee Naish dan John Loyd. Prolog dalam perkembangannya telah dikombinasikan dengan berbagai bahasa pemrograman terutama functional programming. Bahasa prolog ini secara intensif digunakan pada proyek komputer generasi ke-5 di Jepang. Walaupun demikian sebetulnya penggunaannya tidak terbatas untuk AI saja.
Prolog adalah bahasa pemrograman logika atau di sebut juga sebagai bahasa non-procedural. Namanya diambil dari bahasa Perancis programmation en logique (Pemrograman logika). Bahasa ini diciptakan oleh Alain Colmerauer dan Robert Kowalski sekitar tahun 1972 dalam upaya untuk menciptakan suatu bahasa pemrograman yang memungkinkan pernyataan logika alih-alih rangkaian perintah untuk dijalankan komputer. Berbeda dengan bahasa pemrograman yang lain, yang menggunakan algoritma konvensionl sebagai teknik pencariannya seperti pada Delphi, Pascal, BASIC, COBOL dan bahasa pemrograman yang sejenisnya, maka prolog menggunakan teknik pencarian yang di sebut heuristik (heutistic) dengan menggunakan pohon logika.
Sejarah Prolog :
1.Prolog singkatan dari Programming in Logic.
2.Dikembangkan oleh Alain Colmenraurer dan P.Roussel di Universitas Marseilles Perancis,   tahun1972.
3.Prolog populer di Eropa untuk aplikasi artificial intelligence, sedangkan di Amerika peneliti    mengembangkan aplikasi yang sama, yaitu LISP.
Ciri-ciri bahasa prolog :
1.    Bahasa pemrograman yang non sequential.
2.    Bahasa pemrograman yang deklaratif.
3.    Simbolik.
4.    Berdasarkan first order logic.
Perbedaan bahasa prolog dengan bahas lainnya
Bahasa Pemrograman yang Umum (Basic, Pascal, C, Fortran) :
1.Diperlukan algoritma / prosedur untuk memecahkan masalah (procedural languange)
2. Program menjalankan prosedur yang sama berulang-ulang dengan data masukan yang  berbeda-beda.
3. Prosedur dan pengendalian program ditentukan oleh programmer dan perhitungan dilakukan sesuai dengan prosedur yang telah dibuat.
Bahasa Pemrograman Prolog :
1. Object oriented languange atau declarative languange.
2. Tidak terdapat prosedur, tetapi hanya kumpulan data-data objek (fakta) yang akan diolah, dan relasi antar objek tersebut membentuk aturan yang diperlukan untuk mencari suatu jawaban
3. Programmer menentukan tujuan (goal), dan komputer menentukan bagaimana cara mencapai tujuan tersebut serta mencari jawabannya.
4.  Dilakukan pembuktian terhadap cocok-tidaknya tujuan dengan data-data yang telah ada dan relasinya.
5. Prolog ideal untuk memecahkan masalah yang tidak terstruktur, dan prosedur pemecahannya tidak diketahui, khususnya untuk memecahkan masalah non numerik.
6. Prolog bekerja seperti pikiran manusia, proses pemecahan masalah bergerak di dalam ruang masalah menuju suatu tujuan (jawaban tertentu).
Contoh : Pembuatan program catur dengan Prolog
Beberapa Aplikasi Prolog :
1. Sistem Pakar (Expert System) : Program menggunakan teknik pengambilan kesimpulan dari data-data yang didapat, layaknya seorang ahli.
Contoh: dalam mendiagnosa penyakit
2. Pengolahan Bahasa Alami (Natural Languange Processing) : Program dibuat agar pemakai dapat  berkomunikasi dengan komputer dalam bahasa manusia sehari-hari, layaknya penterjemah.
3. Robotik : Prolog digunakan untuk mengolah data masukanyang berasal dari sensor dan mengambil keputusan untuk menentukan gerakan yang harus dilakukan.
4. Pengenalan Pola (Pattern Recognition) : Banyak digunakan dalam image processing, dimana komputer dapat membedakan suatu objek dengan objek yang lain.
5. Belajar (Learning) : Program belajar dari kesalahan yang pernah dilakukan, dari pengamatan atau dari hal-hal yang pernah diminta untuk dilakukan.
Program Visual Prolog :
Secara umum, program Visual Prolog terdiri dari empat section dasar, yaitu :
Section Clauses
Section clauses merupakan section yang paling penting pada program Visual Prolog. Pada section inilah kita meletakkan fakta dan aturan. Ketika mencari jawaban, Visual Prolog akan mencari dari bagian paling atas dari section clauses, melihat setiap fakta dan aturan untuk mendapat jawaban benar, hingga ke bagian paling bawah dari section ini.
Section Predicates
Sebelum mendefinsikan predikat di section clauses, maka predikat tersebut harus dideklarasikan terlebih dahulu di section predicates. Kalau tidak, Visual Prolog tidak akan mengenal predikat yang kita tuliskan tersebut. Ketika mendeklarasikan suatu predikat, kita memberitahu Visual Prolog domain dari argumen yang dimiliki predikat tersebut. Visual Prolog mempunyai perpustakaan predikat yang kalau dipakai tidak perlu dideklarasikan, karena sudah built-in. Untuk melihat predikat apa saja serta manfaatnya yang ada di perpustakaan Visual Prolog dapat melihat help dari Visual Prolog (Help | Contents).
Deklarasi Predikat
Deklarasi predikat dimulai dengan nama predikat diikuti tanda kurung buka, kemudian diikuti nol atau lebih argumen dari predikat (setiap argumen dipisah dengan tanda koma) kemudian ditutup dengan tanda kurung tutup, seperti:
PredicatName(tipe_argumen1,tipe_argumen2,...,tipe_argumenN)
dan tidak seperti section clauses, deklarasi predikati tidak perlu diakhiri tanda titik

Nama Predikat
Nama predikat harus dimulai dengan huruf diikuti dengan serangkaian huruf, angka dan atau garis bawah (underscore). Walaupun bisa dimulai huruf besar, namun sangat direkomendasikan untuk memakai huruf kecil diawal nama predikat (beberapa versi Prolog yang lain tidak memperbolehkan nama predikat diawali huruf besar). Panjang nama predikat bisa sampai 250 karakter. 
Contoh penamaan predikat : Nama predikat yang legal Nama predikat yang illegal
Fakta [fakta]
pemain_piano *pemain_piano*
milik_umum_atau_pribadi milik_umum/pribadi
polaTindakKriminal Pola-Tindak-Kriminal
pilih_Item_Menu pilih Item Menu
nama_predikat nama

rangking_10_besar #rangking_10_besar
Argumen predikat
Argumen predikat harus yang sudah dikenal oleh domain Visual Prolog. Suatu domain bisa merupakan domain standar atau bisa juga domain yang sudah dideklarasikan pada section domains. Contohnya, jika dideklarasikan suatu predikat predikat_ku (symbol, integer) pada section predicates seperti ini:
PREDICATES
predikat_ku(symbol,integer)
maka tidak perlu lagi mendeklarasikan domain dari argumen pada section domains, karena symbol dan integer adalah standar domain.

Section Domains
Section domains mempunyai 2 manfaat utama, yaitu pertama, kita dapat memberikan nama yang berarti untuk domain, walaupun secara internal domain tersebut sama tipenya dengan domain yang telah ada; yang kedua, kita dapat mendeklarasi domain khusus yang digunakan untuk mendeklarasikan struktur data yang tidak didefinisikan oleh standar domain. Dengan mendeklarasikan domain juga dapat mencegah kesalahan logika pada program. Contoh:
DOMAINS
nama, jender = symbol
umur = integer
PREDICATES
orang(nama, jender, umur)
Standar Domain Visual Prolog
Visual Prolog mempunyai standar domain built-in. Kita dapat menggunakan standar domain ketika mendeklarasikan tipe dari argumen suatu predikat. Standar domain sudah dikenal Visual Prolog dan tidak perlu didefinisikan lagi pada section domains.
Dasar Pemrograman Prolog
Dasar pemrograman Prolog dalam bahasa pemrograman prolog dikenal beberapa istilah atau pengertian dasar, yaitu : 
1.    Fakta
Fakta adalah suatu kenyataan atau kebenaran yang diketahui, dan menyatakan relasi antara dua  objek  atau  lebih. Fakta juga dapat berisi sifat suatu objek.
1. Prolog terdiri dari kumpulan data-data objek yang merupakan suatu fakta.
2. Fakta dibedakan 2 macam :
a.Menunjukkan relasi.
b. Menunjukkan milik/sifat
3. Penulisannya diakhiri dengan tanda titik “.”
Contoh :
Slamet adalah ayah Amin Ayah (Slamet, Amin).
Anita adalah seorang wanita Wanita (Anita).
Angga suka renang dan tenis Suka (angga, renang).dan suka (angga,tenis).
Jeruk berwarna jingga Jingga (jeruk).
2.    Aturan
Atruan merupakan logika yang dirumuskan dalam bentuk relasi sebab akibat dan hubungan implikasi.
1.Aturan adalah suatu pernyataan yang menunjukkan bagaimana fakta-fakta berinteraksi satu dengan yang lain untuk membentuk suatu kesimpulan.
2. Sebuah aturan dinyakatakan sebagai suatu kalimat bersyarat.
3. Kata “if” adalah kata yang dikenal Prolog untuk menyatakan kalimat bersyarat atau disimbolkan dengan “:-“.
4. Setiap aturan terdiri dari kesimpulan(kepala) dan tubuh.
5. Tubuh dapat terdiri dari 1 atau lebih pernyataan atau aturan yang lain, disebut subgoal dan dihubungkan dengan logika “and”.
6. Aturan memiliki sifat then/if conditional
“Kepala(head) benar jika tubuh (body) benar”.
Contoh :
F   :  Tino suka apel suka(tino, apel).
A : Yuli suka sesuatu yang disukai Tino suka (yuli, Sesuatu) :- suka (tino, Sesuatu).
3.    Klausa
Klausa adalah suatu ungkapan atau susunan kata yang didalam Prolog dapat berupa fakta atau aturan. Dalam suatu klausa dapat terdiri dari beberapa sub-klausa, yang dihubungkan satu dengan yang lain dengan tanda (,) atau (;).
1.      Tanda tanda (,) menunujukan sifat hubungan (konjungsi),
2.      sedangkan tanda (;) menunjukan hubungan or (disjungsi).
Contoh :
Orangtua(P,Q) :- bapak(P,Q); ibu(P,Q). kakek(A,Z) :- bapak(A,X), orangtua(X,Z)
4.    Relasi
Relasi  adalah  table  dengan  jumlah  n  kolom  dan  terdiri  dari  beberapa baris  fakta  maupun aturan.  Append  adalah  sekumpulan  tuple (X,Y,Z) dimana  Z  terdiri  dari  elemen  X  diikuti  dengan  Y  atau   Z  =  X  +  Y. Anggota relasi  append  terdiri  dari  :  ([], [], [])  ([a], [], [a])  ([a],[b],[a,b])([a,b[c,d[a,b,c,d]) sedangkan  ([a],[b],[])  bukan  anggota  relasi  append. Secara  umum   suatu  relasidinyatakan  dalam  bentuk  aturan  atau  fakta  sebagai  berikut  :  P   if   Q1   and   Q2   and ... and   QK   untuk K  > =  0
5.  Variabel
1.  Varibel  adalah  besaran  yang  nilainya  dapat  berubah-ubah.
2. Tata  cara  penulisan  variabel :
a. Nama  varibel  harus  diawali  huruf  besar  atau  garis  bawah  (_)
b. Nama  variabel  dapat  terdiri  dari  huruf ,  bilangan,  atau  simbol  dan  merupakan     kesatuan  dengan  panjang  maksimum  250  karakter.
3. Nama  variabel  hendaknya  mengandung  makna  yang  berkaitan  dengan  data  yang dinyatakannya.
Argumen  suatu  predikat  dapat  berupa  konstanta,  variable,  atau  objek  lain.  Setiap  argument dalam  prolog  biasa  disebut  term.  Dalam  Prolog  terdapat  dua  variabel  yaitu  : 
1.  Variabel  bernama,  yaitu  variabel  yang  diberi  nama  seperti  X,  Orang,  dan  sebagainya.
2.  Variabel  tak  bernama  ( placeholder),  di lambangkan   dengan   tanda   garis  bawah  (_). 
Setiap  term  yang  ditulis  dengan  awalan  huruf  kapital selalu dianggap sebagai variable bernama dalam Prolog, sedangkan awalan dengan huruf kecil dianggap sebagai suatu relasi atau konstanta. Variabel tak bernama digunakan untuk mengabaikan nilai suatu variabel, yang berarti bisa bernilai apa saja. Berikut adalah contoh penggunaan variable bernama dan tidak bernama. Member (X,[X|_]). Member(X,[_|Y]) :- Member(X,Y).
Contoh  :  dari  silsilah  di atas  :
?- ayah(slamet,Anak).
Anak = budi ;
Anak = badu
No
Dari query  diatas  akan  dicari  siapakah anak  dari  ayah  yang bernama Slamet. Karena mempunyai  relasi  yang  sama (yaitu  ayah),  variabel  Anak  akan  mencari  nilai  dari  konstanta  suatu  fakta  /  aturan  yang  sepadan. 
Tanda  “;”  digunakan  bila  terdapat  kemungkinan  ada  lebih  dari  satu  jawaban.
“No”  berart i  tidak  ada  lagi  kemungkinan  jawaban.
Pertanyaan
Setelah memberikan data-data berupa fakta dan aturan, selanjutnya  kita  dapat  mengajukan  pertanyaan  berdasarkan  fakta  dan  aturan  yang  ada.
A.  Penulisan nya  diawali  simbol  “?-“  dan  diakhiri  tanda  “.” .
contoh :
Apakah  Tini  suka  boneka  ? ?-  suka  (tini,  boneka).
Yes ……. (jika  faktanya  Tini  suka  boneka)
No……..…(jika  tidak  sesuai  fakta).
Apakah  yang  disukai  Tini  ? ?-  suka  (tini,  Apa).
Apa  =  boneka
Siapakah  yang  suka  boneka  ? ?-  suka  (Siapa,  boneka).
Siapa  =  tini
Dari  contoh  silsilah  keluarga  di atas :
Siapakah  kakek  Budi  ??-  kakek  (Siapa,  budi).
Siapa  =  slamet
Siapakah  cucu  Slamet  ??-  kakek  (slamet,  Cucu).
Cucu  =  budi ;
Cucu  =  badu
(jika  kemungkinan  ada  lebih  dar i  satu  jawaban  g unakan  tanda  “;”  pada  akhir  setiap  jawaban).
Predikat
1.      Predikat  adalah  nama  simbol ik  untuk  relasi.
2.      Contoh  :  ayah  (slamet,  amin).
Predikat dari fakta tersebut ditulis : ayah (simbol, simbol). Dimana ayah adalah nama predikat, sedangkan  slamet  dan  amin menujukkan argumen.  Sebuah  predikat  dapat  tidak  memiliki  atau  memiliki  argumen  dengan  jumlah  bebas.  Jumlah  argumen  suatu  predikat disebut  aritas  (arity).
ayah (nama) …… aritas-nya 1
ayah(nama1,nama2) ….. aritasnya 2
3.      Syarat  -  syarat  penulisan  nama  predikat :
A. Harus  diawali  dengan  huruf  kecil  dan  dapat  diikuti  dengan  huruf,  bilangan  a tau  garis  bawah.
B.  Panjang  nama  predikat  maksimum  250  karakter.
C. Tidak  diperbolehkan  menggunakan  spasi,  tanda  minus,  tanda  bintang  dan  garis  miring.
Sumber: