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
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
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
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 = integerPREDICATES
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: