Pages

Silvia Takarina. Diberdayakan oleh Blogger.

Jumat, 01 Juli 2011

PROLOG( PROGRAMMING IN LOGIC)


PROLOG
(PROGRAMMING IN LOGIC)
Prolog (programming in logic adalah salah satu bahasa pemograman yang menggunkakn logic sebagai sebagai bahasa pemogramanya,prolog ini sama halnya dengan framework dari bahasa pemograman lainya.


Sejarah prolog
Prolog merupakan singkatan dari “Programing In Logic” pertama kali dikembangkan oleh Alain
Colmetrouer dan P.Roussel di Universitas Marseilles Prancis tahun 1972. Selama tahun 70an,
prolog populer di Eropa untuk aplikasi AI. Sedangkan di Amerika Serikat, para peneliti juga
mengembangkan bahasa lain untuk aplikasi yang sama yaitu LISP. LISP mempunyai kelebihan
dibandingkan prolog , tetapi LISP lebih sulit dipelajari.
Pada awalnya, Prolog dan LISP sangat lambat dalam eksekusi program dan memakan memori yang besar sehingga hanya kalangan tertentu yang menggunakannya. Dengan adanya Compiler Prolog, kecepatan eksekusi program dapat ditingkatkan, namun Prolog masih dipandang sebagai bahasa yang terbatas (hanya digunakan di kalangan perguruan tinggi dan riset). Pandangan tersebut tiba-tiba berubah di tahun 1981 pada konverensi internasional I dalam system generasi kelima di Tokyo, Jepang. Jepang yang saat itu mengalami kesulitan bersaing dalam pemasaran komputer dengan Amerika Serikat, mencanangkan rencana pengembangan teknologi hardware dan sof tware untuk tahun 1990an. Dan bahasa yang dipilih adalah Prolog.
Sejak saat itu, banyak orang menaruh minat pada prolog dan saat itu telah dikembangkan versi
prolog yang mempunyai kecepatan dan kemampuan yang lebih tinggi, lebih murah dan lebih mudah digunakan, baik untuk komputer mainf rame maupun komputer pribadi sehingga Prolog menjadi alat yang penting dalam program aplikasi kecerdasan buatan (AI) dan pengembangan sistem pakar (expert sistem).



Perbedaan Prolog dengan Bahasa Lainnya
-      Bahasa Pemrograman yang Umum (Basic, Pascal, C, Fortran):
o   diperlukan algoritma/prosedur untuk memecahkan masalah (procedural languange)
o   program menjalankan prosedur yang sama berulang-ulang dengan data masukan yang berbeda-beda.
o   Prosedur dan pengendalian program ditentukan oleh programmer dan perhitungan dilakukan sesuai dengan prosedur yang telah dibuat.
-      Bahasa Pemrograman Prolog :
o   Object oriented languange atau declarative languange.
o   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
o   Programmer menentukan tujuan (goal), dan komputer menentukan bagaimana cara mencapai tujuan tersebut serta mencari jawabannya.
o   Dilakukan pembuktian terhadap cocok-tidaknya tujuan dengan data-data yang telah ada dan relasinya.
o   Prolog ideal untuk memecahkan masalah yang tidak terstruktur, dan prosedur pemecahannya tidak diketahui, khususnya untuk memecahkan masalah non numerik.
o   Prolog bekerja seperti pikiran manusia, proses pemecahan masalah bergerak di dalam ruang masalah menuju suatu tujuan (jawaban tertentu).
o   Contoh : Pembuatan program catur dengan Prolog


Aplikasi Prolog :
-      Sistem Pakar (Expert System)
Program menggunakan teknik pengambilan kesimpulan dari data-data yang didapat, layaknya seorang ahli.
Contoh dalam mendiagnosa penyakit
-      Pengolahan Bahasa Alami (Natural Languange Processing)
Program dibuat agar pemakai dapat berkomunikasi dengan komputer dalam bahasa manusia sehari-hari, layaknya penterjemah.
-      Robotik
Prolog digunakan untuk mengolah data masukanyang berasal dari sensor dan mengambil keputusan untuk menentukan gerakan yang harus dilakukan.
-      Pengenalan Pola (Pattern Recognition)
Banyak digunakan dalam image processing, dimana komputer dapat membedakan suatu objek dengan objek yang lain.
-      Belajar (Learning)
Program belajar dari kesalahan yang pernah dilakukan, dari pengamataqn atau dari hal-hal yang pernah diminta untuk dilakukan.


Perbedaan di antara pengaturcaraan Prolog dengan
Konvensional


Pengaturcaraan prolog
Pengaturcaraan konvensial
Pengaturcara mentafsirkan APA
masalah yang hendak diselesaikan
menggunakan logik.
Pengaturcara mengarahkan komputer
BAGAIMANA menyelesaikan
masalah .
Komputer menghasilkan jujukan
arahan mengikut tertib yang
ditentukan oleh pengaturcaraan.
Sistem mengaplikasikan peraturan
logik, deduksi dan padanan dalam
menyelesaikan sesuatu masalah.

Keampuhan 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.
Contoh lain keampuhan prolog:
• Permasalahan
Perangkat audio hanya menghasilkan suara disatu sisi speaker
• Pemecahan
Memindahkan switch ke radio FM. Bila kedua speaker berbunyi, maka anda tahu bahwa masalah berasal dari input tape, coba dengan kaset bila hasilnya tetap, berarti masalah tersebut berasal dari tape dan bukan kaset. alternatif termudah adalah dengan membersihkan head tape dan sekarang kedua speakernya berbunyi.


Contoh Bahasa PROLOG adalah berasaskan kepada tiga
konsep utama:

                                   1.  Pemadanan cora
 (Pattern Matching)

2. Pengstrukturan data
berasaskan pepohon
(tree-based data structuring)

3. Patah-balik ke belakang
(automatic backtracking)


Fakta dan Relasi
-      Prolog terdiri dari kumpulan data-data objek yang merupakan suatu fakta.
-      Fakta dibedakan 2 macam :
o   Menunjukkan relasi.
o   Menunjukkan milik/sifat.
-      Penulisannya diakhiri dengan tanda titik “.


Fakta
Prolog
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
jngga(jeruk).


Aturan (“Rules”)
-      Aturan adalah suatu pernyataan yang menunjukkan bagaimana fakta-fakta berinteraksi satu dengan yang lain untuk membentuk suatu kesimpulan.
-      Sebuah aturan dinyakatakan sebagai suatu kalimat bersyarat.
-      Kata “if” adalah kata yang dikenal Prolog untuk menyatakan kalimat bersyarat atau disimbolkan dengan “:-“.
-      Contoh :
Fakta dan Aturan
Prolog
F : Tino suka apel
A : Yuli suka sesuatu yang disukai Tino
suka(tino, apel).
suka(yuli,Sesuatu) :-  suka(tino,Sesuatu).
     
-      Setiap aturan terdiri dari kesimpulan(kepala) dan tubuh.
-      Tubuh dapat terdiri dari 1 atau lebih pernyataan atau aturan yang lain, disebut subgoal dan dihubungkan dengan logika “and”.
-      Aturan memiliki sifat then/if conditional
“Kepala(head) benar jika tubuh (body) benar”.


Fakta dan Aturan
Prolog
F : Slamet adalah ayah dari Amin
F : Amin adalah ayah dari Badu
F : Slamet adalah kakek dari Badu
A :
Slamet adalah benar kakek Badu jika Slamet adalah benar ayah Amin dan Amin adalah benar ayah Badu.
ayah(slamet,amin).
ayah(amin,badu).
kakek(slamet,badu).

kakek(slamet,amin) :-
ayah(slamet,amin) and
ayah(amin,badu).
F : Amin adalah saudara kandung Anang
F : Amin mempunyai ayah Slamet
F:  Anang mempunyai ayah Slamet.
A :
Amin adalah benar saudara kandung Anang, jika Amin mempunyai ayah Slamet dan Anang juga mempunyai ayah Slamet.
saudara_kandung(amin,anang).
ayah(slamet,amin).
ayah(slamet,anang).

saudara_kandung(amin,anang) :-
ayah(slamet,amin) and
ayah(slamet,anang).

Pertanyaan (“Query”)
-      Setelah memberikan data-data berupa fakta dan aturan, selanjutnya kita dapat mengajukan pertanyaan berdasarkan fakta dan aturan yang ada.
-      Penulisannya diawali simbol “?-“ dan diakhiri tanda “.”.

-      Contoh :
Pertanyaan
Prolog dan Jawaban Program
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 ?


Siapakah cucu Slamet ?

?- kakek(Siapa,budi).
Siapa=slamet

?- kakek(slamet,Cucu).
Cucu=budi ;
Cucu=badu
(jika kemungkinan ada lebih dari satu jawaban gunakan tanda “;” pada akhir setiap jawaban).

Predikat (“Predicate”)
-      Predikat adalah nama simbolik untuk relasi.
-      Contoh :                      ayah(slamet,amin).
Predikat dari fakta tersebut ditulis :  ayah(simbol,simbol).
dimana ayah adalah nama predikat, sedangkan slamet dan amin adalah 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
-      Syarat-syarat penulisan nama predikat :
o   Harus diawali dengan huruf kecil dan dapat diikuti dengan huruf, bilangan atau garis bawah.
o   Panjang nama predikat maksimum 250 karakter.
o   Tidak diperbolehkan menggunakan spasi, tanda minus, tanda bintang dan garis miring.
Variabel
-      Varibel adalah besaran yang nilainya dapat berubah-ubah.

-      Tata cara penulisan variabel :
1.             Nama varibel harus diawali huruf besar atau garis bawah(_)
2.             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.

-      Contoh : dari silsilah di atas :
?- ayah(slamet,Anak).
Anak=budi ;
Anak=badu
No
Dari query di atas 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” berarti tidak ada lagi kemungkinan jawaban.



Contoh : dari silsilah di atas :
                                    ?- ayah(slamet,X),ayah(X,Y).
                                    X=amin
                                    Y=budi  ;
                                    X=amin
                                    Y=badu  ;
                                    X=anang
                                    Y=didi   ;
                                    X=anang
                                    Y=didi
                                    NoContoh : Silsilah Keluarga

%% FAKTA */
           
%%orang tua */
            ayah(slamet,amin).
            ayah(slamet,anang).
            ayah(amin,budi).
            ayah(amin,badu).
            ayah(anang,didi).
            ayah(anang,dadi).
            ayah(santoso,bu_amin).
            ayah(supardi,bu_anang).
            ibu(bu_slamet,amin).
            ibu(bu_slamet,anang).
            ibu(bu_amin,budi).
            ibu(bu_amin,badu).
            ibu(bu_anang,didi).
            ibu(bu_anang,dadi).
            ibu(bu_santoso,bu_amin).
            ibu(bu_santoso,bu_anang).

%% ATURAN */
%% Kakek adalah kakek Cucu */
            kakek(Kakek,Cucu) :-
                        ayah(Ayah,Cucu),
                        ayah(Kakek,Ayah).
            kakek(Kakek,Cucu) :-
                        ibu(Ibu,Cucu),
                        ayah(Kakek,Ibu).
%% Nenek adalah nenek Cucu */
            nenek(Nenek,Cucu) :-
                        ayah(Ayah,Cucu),
                        ibu(Nenek,Ayah).
            nenek(Nenek,Cucu) :-
                        ibu(Ibu,Cucu),
                        ibu(Nenek,Ibu).
%% Nama1 adalah saudara kandung Nama2

            saudara_kandung(Nama,Name) :-
                        ayah(Ayah,Nama),
                        ayah(Ayah,Name),
                        ibu(Ibu,Nama),
                        ibu(Ibu,Name),
                        Nama \= Name.

%% Sdr1 adalah saudara sepupu Sdr2

            saudara_sepupu(Sdr1,Sdr2) :-
                        ayah(Ayah1,Sdr1),
                        ayah(Ayah2,Sdr2),
                        saudara_kandung(Ayah1,Ayah2).

            saudara_sepupu(Sdr1,Sdr2) :-
                        ayah(Ayah,Sdr1),
                        ibu(Ibu,Sdr2),
                        saudara_kandung(Ayah,Ibu).

            saudara_sepupu(Sdr1,Sdr2) :-
                        ibu(Ibu,Sdr1),
                        ayah(Ayah,Sdr2),
                        saudara_kandung(Ibu,Ayah).

            saudara_sepupu(Sdr1,Sdr2) :-
                        ibu(Ibu1,Sdr1),
                        ibu(Ibu2,Sdr2),
                        saudara_kandung(Ibu1,Ibu2).

*SEMOGA BAHAN INI BISA BERMANFAAT BAGI PEMBACA*

Tidak ada komentar:

Posting Komentar