Sebuah Pengantar- Programming In Logic (Prolog)

By Surya R. Labetubun - October 23, 2010

Bahasa Prolog dibangun atas dasar pemrograman alamiah dan logika. Untuk itulah lahir nama Prolog, yakni singkatan dari programming in Logic.

Prolog juga meruapakan bahasa deklaratif, maksudnya, jika kita memberikan fakta dan aturan, maka Prolog akan menyelesaikan problem secara deduktif, atau dari sekian banyaknya aturan dan fakta kemudian diturunkan kesimpulan sebagai jawaban, pemrograman Prolog hanya memerlukan fakta dan aturan atas masalah yang ingin diselesaikan dan Prolog dibiarkan untuk menentukan sendiri bagaimana mencari jawaban.


Berbeda halnya dengan bahasa prosedural (Pascal atau Fotran misalnya), pemograman harus memberi perintah untuk memecahkan persoalan, langkah demi langkah, dengan kata lain, pemogram harus terlebih dahulu tahu bagaimana memecahkan masalah itu.

Dengan demikian program aplikasi penunjang kecerdasan buatan seperti basis pengetahuan, sistem pakar, antar muka ke bahasa alami, pemrograman simbolik serta sistem manajemen informasi yang cerdik, dan pengenalan citra akan lebih mudah diwujdukan.

Penerapan Prolog
Prolog sangat membantu dalam program untuk menirukan cara berfikir manusia dengan mengggunakan komputer (mesin) karena Prolog memiliki sifat atau ciri yang sesuai dengan metode pemrograman kecerdasan buatan.

Dengan kata lain Prolog sangat besar manfaatnya dalam kecerdasan buatan yang meliputi berbagai bidang:

a. Sistem Pakar
Pendiagnosaan infeksi bakteri (MYCIN), mengidentifikasi suatu jenis binatang, untuk konsultasi, analisa, prediksi, dan sebagainya. Sebagai bahasa yang berdasarkan pada pemrograman logika, Prolog lebih menguntungkan, baik dari segi representasi pengetahuan mauapun cara pencarian/penarikan kesimpulan
b. Robot
Ini mencakup bidang yang lebih luas seperti pengendalian gerak, percakapan robot, sistem pakar robot. Prolog dipicu dengan suatu sasaran (goal driven) sedangkan pemrograman dalam robot pada umumnya lebih mudah jika diwujudkan secara goal driven, seperti untuk mengambil kubus dengan goalnya adalah gerakkan manipulator ke arah kubus.

Pemrograman Logika
Untuk mengenal pemrograman logika, terlebih dahulu kita singgung logika predikat (kalkulus predikat). Logika predikat merupakan bagian dari komputasi logika yang juga mencakup aljabar Boole (logika proporsional).

Dalam logika predikat, fakta dan aturan dinyatakan melalui predikat seperti:
menikah(Orlando,Uya) (fakta)
wanita(Uya) (fakta)
leluhur(A,X) if orangtua(A,X) (aturan)
perempuan(Y) if lelaki(X) and menikah (X,Y) (aturan)

Kalimat pertama menyatakan bahwa Orlando menikah dengan Uya. Kalimat kedua menyatakan Uya adalah seorang perempuan. Kalimat ketiga menyatakan bahwa A leluhur dari X, jika A adalah orang tua X, sedangkan kalimat keempat menyatakan Y adalah seorang perempuan dan akan menikah dengan X, jika AX adalah seorang lelaki.

Ciri Bahasa Prolog
Ciri yang menonjol dalam Prolog adalah di samping mencari jawaban secara logia terhadap pernyataan yang kita ajukan, juga dapat memberikan jawaban lain atau memberi semua kemungkinan jawaban. Selain hanya berjalan dari awal sampai akhir program, Prolog juga dapat berjalan mundur dan mencari lebih dari satu cara penyelesaian tiap bagian masalah.

Secara sistematik, cirri lain Prolog yang menonjol adalah:
a. Predikat
Prolog membutuhkan fakta-fakta yang terungkap dalam relasi dan sifat untuk mencari jawaban.
Contoh:
Miranda suka kopi
kopi pahit

Hal ini menggambarkan objek Miranda dan kopi yang berelasi suka dan sifat pahit pada kopi. Sedangkan relasi bernilai benar jika memenuhi kondisi tertentu. Hubungan ini disebut aturan (rule), sebagai contoh:
Miranda suka kopi jika rasa kopi pahit.

Sedangkan aturan(rule) dalam bahasa Prolog disebut klausa(clause), maka ditulis sebagai berikut:
suka(Miranda,kopi). (fakta)
suka(Miranda,kopi) if rasa(kopi,pahit). (aturan)
suka(Miranda,kopi) if pahit(kopi). (aturan)

b. Basis Data
Prolog sebagai bahasa yang berorientasi pada fakta dan untuk menunjang basis pengetahuan. Prolog menyediakan fasilitas basis data.

c. DeduksiProlog dapat melakukan penarikan kesimpulan seperti contoha di bawah ini:
Miranda suka Orlando (fakta)
Uya suka Kakashi (fakta)
Rina suka seseorang jika Uya suka orang itu (aturan)
Prolog menarik kesimpulan bahwa:
Rina suka Kakashi

d. Padanan dan Unifikasi
Dalam mencari jawaban(penarikan kesimpulan), Prolog melakukan pemadanan, yakni pencocokan argumen pertama dengan argumen selanjutnya. Tujuan dilakukan pemadanan adalah untuk melakukan unifikasi, yakni penyatuan argumen dalam suatu predikat dengan predikat lain yang sudah identik.

Sebagai contoh: Pengetahuan bahwa bujur sangkar adalah suatu bangunan yang berbentuk segi empat, bersisi sama dan bersudut 90 derajat. Jika saja kita diminta untuk memeriksa suatu bangunan yang nantinya akan diidentifikasi sebagai bangun bujur sangkar, maka hal yang dilakukan adalah pendugaan bahwa bangunan itu bujur sangkar.

Dalam Prolog, dugaan bahwa suatu bangun berbentuk sangkar adalah unifikasi variable, katakanlah X, dengan nilai bujur sangkar. Ini terjadi karena adanya pemadanan antara bangun(X) dengan bangun(bujur sangkar) yang sudah identik, kemudian dilakukan unifikasi antara X dengan bujur sangkar.

e. Pembuktian mundur
Berdasarkan contoh sebelumnya, maka Prolog menganggap suatu bangun berbentuk bujur sangkar terlebih dahulu, baru kemudian dilakukan pembuktian. Metode ini disebut top down karena dari kenyataan pokok(bujur sangkar) ke masalah rinci(sudut, sisi, dan bentuk bangun).

f. Pembuktian Mundur
Prolog melacak suatu fakta atau aturan dengan melakukan pemadanan berurut-turut kemudian dilakukan unifikasi. Jika suatu kasus terdapat kegagalan, maka Prolog kemudian melakukan pelacakan mundur untuk mencari hipotes baru (agar sesuai dengan goal atau kesimpulan yang diinginkan). Lacak balik akan berhenti jika sudah menemukan jawabannya atai jik akehabisan fakta untuk menyimpulkan jawaban.

g. Rekursi
Prolog merupakan program yang paling banyak memanfaatkan rekursi, yakni dengan cara menguraikan masalah tadi menjadi bagian yang lebih kecil tetapi memiliki truktur atau model yang sama.

Sebagai contoh bentuk rekursi yang sederhana adalah faktorial. Untuk mencari faktorial 5 misalnya, dicari faktorial 4 untuk dikalikan dengan faktorial 3 dan seterusnya sehingga sampai pada faktorial uang diketahui nilainya.

h. Pengolahan Simbol
Prolog dapat mengoperasikan simbol-simbol, misalnya dalam pemecahan persamaan matematik, diferensial atau integral dan lainnya.

i. Meta Programming
Pengubahan algoritma dapat dilakukan meski program sedang dijalankan.

j. Paralel
Prolog merupakan bahasa yang berstruktur paralel dari sifatnya. Ini karena beberapa kalusa yang sama dapat dieksekusi secara bersamaan.

Bahasa Deklaratif
Prolog hanya membutuhkan deklarasi atau uraian masalah dalam memecahkan masalah (penarikan kesimpulan dari sekumpulan fakta yang ada).Berbeda dengan bahasa yang bersifat prosedural.

Perbedaan deklaratif dan prosedural dapat diterangkan dengan perumpamaan seperti jika kita sedang naik taksi. Secara deklaratif, kita hanya meminta supir taksi untuk membawa kita ke tempat yang menjadi tujuan kita, tidak peduli jalan mana saja yang harus ditempuh. Secara prosedural, kita akan menentukan jalan yang akan ditempuh oleh supir taksi untuk mencapai tempat yang kita maksudkan.

Sebagai bukti bahwa Prolog merupakan bahasa deklaratif adalah:
1. Jika kita ingin menerangkan bahwa Andi adalah orang tua dari Ayu, maka cukup ditulis:
orangtua(Andi,Ayu).

2. Jika kita ingin menerangkan bahwa Sinta adalah leluhur dari Andi, maka harus didefinisikan terlebih dahulu logikanya yang dalam bahasa Indonesia dapat kita tuliskan sebagai berikut:
Sinta adalah orang tua Andi jika Sinta adalah orang tua Andi
Aturan seperti itu dalam Prolog ditulis sebagai aturan rekursif sebagai berikut:
leluhur(Sinta,Andi) if orangtua(Sinta,Andi).

Hanya dengan menuliskan aturan seperti ini, kita dapat menentukan siapa leluhur Andi, siapa keturunan Sinta atau membuktikan kebenaran bahwa Sinta adalah leluhur Andi, hanya dengan memberi data hubungan (fakta) orang tua secukupnya seperti contoh tanpa harus merinci cara mencari jawaban atau cara membuktikannya.

#berbagai sumber

  • Share:

You Might Also Like

0 comments