Rabu, 29 Februari 2012

SWI-PROLOG

SWI – PROLOG

Prolog merupakan suatu bahasa pemrograman yang banyak digunakan dalam pengembangan Artificial Intelliegence. Prolog dalam perkembangannya telah dikombinasikan dengan berbagai bahasa pemrograman, terutama funcitional programming.
Bahasa Prolog ini memiliki ciri-ciri :
·         Bahasa pemrograman yang non sequential
·         Bahasa pemrograman yang deklaratif
·         Simbolik
·         Berdasarkan first order logic
Kesederhanaan Prolog dibandingkan bahasa lain adalah:
·         Sintaksnya sangat sedikit sekali,
·         Secara teoritis tidak ada tipe data, tetapi bilangan bulat terpisah,
·         Semantik sangat jelas dan terdefinisi secara matematis
Karena prolog yang digunakan adalah swi-prolog maka untuk menjalankan program tersebut adalah dengan mengklik 2 kali pada shortcut swi-prolog.
Suatu program prolog tidak memiliki stuktur seperti deklarasi, dan lain-lainnya. Seluruh atom ditangani secara sama, yang ada hanyalah clause. Untuk memulai penjelasan tentang bagian-bagian dalam prolog.
1.   Team
Suatu data yang mukan merupakan variable disebut dengan term
Atomic term
·         Ada dua jenis atom dan integer
·         Dimulai dengan huruf kecil atau angka monerik . Contoh made, psg, 123.
2.   Functions
Simbol suatu fungsi disebut functor
·         Arity dari suatu fungsi adalah jumlah dari argumennya. Suatu atom adalah fungsi dengan arity sama dengan 0 . Argumen dapat berupa term atau variable.
·         Bisa berstuktur rekursif
·         Dimulai dengan huruf kecil. Contoh :
Makan (nasi)

3.   Clause
Program prolog dapat dianggap sebagai suatu himpunan fungsi Boolean, yang disebut dengan clause. Clause dapat memiliki argumen atau tidak memiliki.
Clause dapat memiliki body yang kosong, disebut dengan fact, sedang yang memiliki body disebut rule. Suatu query dapat dinyatakan sebagai suatu predicate, arity dari predicate adalah jumlah argument yang dipakainya.
Contoh program :
1.      Ketikan dan beri nama  lapar.pl
saya_lapar
Panggil prolog dan jalankan
?-consult(lapar).
Yes.
?-saya-lapar.
Yes
2.      Ketikan Program berikut ini dan beri nama prolog_2pro
bisa_makan_siang :-
      punya_makanan.
punya_makanan.
Jalankan dan “consult”
?-bisa_makan_siang.
Yes
Bagian pertama adalah rule dan bagian ke dua adalah fact.

Perbedaan Prolog dengan Bahasa Lain
Hampir semua bahasa pemrograman yang ada pada saat ini seperti Pascal, C, Fortran, disebut procedural language untuk menggunakan bahasa tersebut diperlukan algoritma atau procedure yang dibuat untuk menyelesaikan masalah. Program dapat menjalankan procedure yang sama berulang-ulang dengan data masukkan yang berbeda-beda. Procedure serta pengendalian program sepenuhnya ditentukan oleh programmer dan perhitungan yang dilakukan sesuai dengan procedure yang telah dibuat. Dengan kata lain, Pemrograman harus memberi tahu komputer bagaimana komputer harus menyelesaikan masalah.
Prolog mempunyai sifat-sifat yang berbeda dengan bahasa yang disebutkan di atas, prolog disebut sebagai object oriented language atau declarative language. Dalam prolog tidak terdapat prosedur, tapi hanya tampilan data-data object (fakta) yang akan diolah dengan relasi antar object tersebut yang membentuk suatu aturan. Aturan-aturan ini disebut HEURISTIK dan diperlukan dalam mencari suatu jawaban, dengan kata lain, prolog dalam prolog adalah database.
Pemrogram menentukan tujuan (Goal) dan komputer akan menentukan bagaimana cara mencapai tujuan tersebut serta mencari jawabannya. Caranya dengan menggunakan “Formal Reasoning” yaitu membuktikan cocok tidaknya tujuan dengan data-data yang telah ada dan relasinya. Prolog memecahkan masalah seperti yang dilakukan oleh fikiran manusia.
Dengan demikian, Prolog sangat ideal untuk memecahkan masalah yang tidak terstruktur dan yang prosedur pemecahannya tidak diketahui, khusunya untuk memecahkan masalah non numeric.

Bahasa Pemrograman yang Umum (Basic, Pascal, C, Fortran):
Bahasa Pemrograman Prolog :
  1. 1. diperlukan algoritma/prosedur untuk memecahkan masalah (procedural languange)
  2. 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.
  1. Object oriented languangeatau 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

Keunggulan Prolog
Keunggulan Prolog terletak pada kemampuannya untuk mengambil kesimpulan (jawaban) dari data-data yang ada. Karena program dalam bahasa prolog tidak memerlukan prosedur (algoritma). Prolog sangat ideal untuk memecahkan masalah yang tidak terstruktur dan yang prosedur pemecahannya tidak diketahui, khususnya untuk memecahkan masalah non-numerik.
Misalnya, dalam pembuatan program catur dengan prolog untuk menentukkan gerakan catur anda tidak perlu menganalisa semua kemungkinan atau menentukkan suatu prosedur tertentu untuk untuk menentukan gerakan berikutnya. Tetapi anda cukup menuliskan aturan umum permainan catur dan lebih baik lagi jika ditambah dengan aturan yang diperoleh dari pengalaman. Prolog akan menentukan sendiri langkah yang akan diambil berdasarkan data-data yang ada saat itu dan aturan-aturan yang diberikan.
Aplikasi Prolog
1.   Sistem Pakar (Expert System).
Sistem Pakar (Expert System) adalah program yang menggunakan teknik pengambilan kesimpulan dari data-data yang didapat seperti yang dilakukan oleh seorang ahli dalam memecahkan masalah. Komputer dapat diprogram untuk berbuat seperti orang yang ahli dalam bidang tertentu. Komputer yang demikian dapat dijadikan seperti konsultan atau tenaga ahli di bidang tertentu yang dapat menjawab pertanyaan dan memberikan nasehat yang dibutuhkan. Tujuan utama sistem pakar bukan untuk menggantikan kedudukan seseorang ahli atau pakar tetapi hanya untuk memasyarakatkan pengetahuan dan pengalaman pakar-pakar tersebut. System pakar memungkinkan orang lain meningkatkan produktifitasnya, memperbaiki kualitas keputusannya, sistem pakar bias memecahkan masalah yang rumit meskipun tidak ada seorang ahli.
2.   Pengolahan bahasa alami (Natural Language processing).
Natural Language Processing adalah program yang dibuat agar pemakai dapat berkomunikasi dengan computer dalam bahasa manusia sehari-hari (bahasa apapun). Sebagai contoh adalah Lotus HAL, yaitu program Bantu untuk Lotus 1-2-3 agar dapat menerima perintah bahasa inggris seperti bahasa biasa. Program pengolahan bahasa alami menggunakan teknik AI dalam analisis input bahasa yang dimasukan melalui keyboard, program tersebut berusaha mengidentifikasi sintak, semantil dan konteks yang terkandung dalam suatu kalimat agar bias sampai pada kesimpulan untuk bias memberikan jawaban.
3.  Robotik
Dalam robotik, Prolog digunakan untuk mengolah data masukan yang berasal dari sensor dan mengambil keputusan untuk menentukan gerakan yang harus dilakukan. Apalagi kalau robot menemukan peristiwa yang tidak diharapkan atau situasi yang berbeda.
4.  Pengenalan Pola (Pattern Recognition).
Pengenalan pola banyak diterapkan dalam bidang robotic dan pengolahan citra (image processing). Misalkan, bagaimana computer dapat membedakan gambar sebuah benda dan gambar benda yang lain, atau sebuah obyek yang berada diatas obyek lain.
5.  Belajar
Bidang ini berkaitan dengan program yang dapat belajar dari kesalahan yang pernah dilakukan, dari pengamatan atau dari hal-hal yang pernah dilakukan. Secara singkat, berarti membuat sebuah computer mampu untuk mengambil manfaat dari pengalaman yang pernah ditemuinya.
6.  Game
suatu cara belajar yang digunakan dalam menganalisa interaksi antara sejumlah pemain maupun perorangan yang menunjukkan strategi-strategi yang rasional. 

Macam-macam Prolog
1.  Strawberry prolog
2.  Visual prolog
3.  SWI prolog
4.  Turbo prolog

Prolog adalah singkatan dari Programming in Logic , yang berarti pemrograman logika. Program ini menggunakan bahasa deklaratif dimana pemrograman memberi fakta dan aturan untuk selanjutnya diselesaikan oleh Prolog  secara deduktif sehingga menghasilkan suatu kesimpulan. Prolog sangat cocok digunakan untuk mengimplementasikan sistem pakar.

Guna Bahasa Prolog
Prolog menyelesaikan permasalahan secara deduktif atau menurunkan kesimpulan sebagai jawaban berdasarkan fakta (fact)  dan aturan (rule) dengan pencarian dari atas ke bawah.
Perbedaan antara bahasa deklaratif dengan prosedural sebagai berikut:
  1. Bahasa deklaratif hanya membutuhkan deklarasi atau uraian masalah sedangkan pada bahasa prosedural memerlukan perintah.
  2. Prolog adalah goal oriented yaitu apa yang harus dipecahkan, sedangkan bahasa prosedural menjawab bagaimana harus memecahkan masalah.
  3. Prolog tidak memiliki struktur seperti deklarasi, dan lain-lainnya, yang ada hanyalah clause.

Struktur Prolog
Struktur Bahasa Prolog terdiri dari: Domains, Predicates, Clauses dan Goals. Secara lengkap dapat dijelaskan sebagai berikut:

DOMAINS
Domains menyatakan jenis suatu variabel. Ada beberapa domains standar yang dapat digunakan dalam prolog yaitu char, integer, string, symbols.
Contoh:
DOMAINS
orang=symbols
matakuliah=string
angka=integer

PREDICATES
Predicates digunakan untuk mendeklarasikan predikat yang digunakan dalan bahasa Prolog. Menggabarkan relasi atau sifat objek, objek yang terkait disebut argumen.
Contoh:
PREDICATES
suka(orang, orang).
kuliah(orang, matakuliah).
nilai(orang, matakuliah, angka).
lulus(orang, matakuliah).

CLAUSES
Clauses terdiri dari fakta (fact) dan aturan (rule) yang mendefinisikan predicates. Fakta adalah suatu kenyataan atau kebenaran yang diketahui. Fakta menyatakan hubungan atau relasi antara dua objek atau lebih atau menunjukan sifat suatu objek. Aturan digunakan untuk meningkatkan kemampuan program sehingga diperlukan suatu rumusan logika.
Contoh:
CLAUSES
%Fakta
suka(adi, lia).
suka(dewi, adi).
kuliah(jones, sistempakar).
kuliah(toni, sistempakar).
nilai(jones, sistempakar, 80).
nilai(toni, sistempakar, 45).
%Aturan
suka(toni, X):- suka(dewi, X).
lulus(X, Y):- kuliah(X, Y), nilai(X,Y,Z), Z>50.
GOAL
Merupak tempat pertanyaan (query) diberikan atau diminta prolog untuk memberikan jawaban yang dikendaki.
Contoh:
 Berapa nilai sistempakar si Jones?
GOAL
nilai(jones, sistempakar, X). 
Siapa saja yang lulus sistempakar?
GOAL
lulus(X, sistempakar).
Apakah Jones lulus matakuliah sistempakar?
GOAL

VARIABEL DALAM PROLOG dan LIST

Variabel prolog dengan huruf besar aau dimulai dengan garis bawah (_) Variabel dalam klausa selalu tersamakan
(unified)
telah_belajar(Setiap_orang,peket).
dapat_balajar(Siapa_saja, Apa_saja) :-
telah_belajar(Siapa_saja, persyaratan(Apa_saja)).
dapat_belajar(Siapa_saja, Apa_saja) :-

boleh_belajar(Siapa_saja, Apa_saja):-
List merupakan suatu variabel yang sering digunakan dalam pemrograman Prolog. List ditandai dengan
[elemen1,elemen2, …..]
List berbagi atas :
[Head[Tail]
Contoh program :
1.      Ketikan klause simple ini :
dosen(bejo,harvard_graphic)
Lalu consult dan beri pertanyaan
?-dosen(bejo,Mata_Kuliah)
?-dosen(Siapa,Harvard_garaphic)
?-dosen(Siapa,Apa)
2.      Ketikan program di bawah ini :
Angka([1,2,3,4])
Kalimat(kucing,[duduk,di|[atas,meja]])
?-angkat(1,Y[Z])
?-kalimat(kucing,[kata_kerja|Sisa])