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 :
|
|
|
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:
- Bahasa deklaratif hanya membutuhkan deklarasi atau uraian masalah sedangkan pada bahasa prosedural memerlukan perintah.
- Prolog adalah goal oriented yaitu apa yang harus dipecahkan, sedangkan bahasa prosedural menjawab bagaimana harus memecahkan masalah.
- 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.
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
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.
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).
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.
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).
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.
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.
Merupak tempat pertanyaan (query) diberikan atau diminta prolog untuk memberikan jawaban yang dikendaki.
Contoh:
Berapa nilai sistempakar si Jones?
Berapa nilai sistempakar si Jones?
GOAL
nilai(jones, sistempakar, X).
nilai(jones, sistempakar, X).
Siapa
saja yang lulus sistempakar?
GOAL
lulus(X, sistempakar).
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])
Tidak ada komentar:
Posting Komentar